是否可以隐藏使用CSS或Javascript的网页的光标?

我想在显示要在build筑大厅中显示信息的网页时隐藏光标。 它根本不需要互动。 我尝试使用游标属性和一个透明的光标图像,但我没有使它的工作。

有谁知道这是否可以做到? 我想这可以被认为是一个用户的安全威胁,不知道他在哪里点击,所以我不是很乐观…谢谢!

使用CSS:

selector { cursor: none; } 

一个例子:

 <div class="nocursor"> <!-- some stuff --> </div> <style type="text/css"> .nocursor { cursor:none; } </style> 

要在Javascript中的元素上设置,可以使用style属性:

 <div id="nocursor"><!-- some stuff --></div> <script type="text/javascript"> document.getElementById('nocursor').style.cursor = 'none'; </script> 

如果你想在整个身体上设置这个:

 <script type="text/javascript"> document.body.style.cursor = 'none'; </script> 

确保你确实想要隐藏光标。 它真的可以惹恼人们。

指针lockingAPI

cursor: none CSS解决scheme绝对是一个坚实而简单的解决方法 ,如果您的实际目标是在您的Web应用程序正在使用时删除默认光标,或者实现您对原始鼠标移动的自己的解释(例如FPS游戏) ,您可能需要考虑使用指针lockingAPI 。

您可以在元素上使用requestPointerLock来移除游标,并将所有mousemove事件redirect到该元素(您可能会也可能不会处理):

 document.body.requestPointerLock(); 

要释放锁,可以使用exitPointerLock :

 document.exitPointerLock(); 

补充笔记

没有光标,真实的

这是一个非常强大的API调用。 它不仅使您的光标不可见,而且实际上删除了您的操作系统的本地光标 。 直到指针锁被释放(通过使用exitPointerLock或在某些浏览器中按ESC) ,您将无法select文本,或者对鼠标执行任何操作 (除了在代码中监听某些鼠标事件)。

也就是说,你不能用光标离开窗口再次显示,因为没有光标。

限制

如上所述,这是一个非常强大的API调用,因此只允许响应networking上的某些直接用户交互(如点击) 例如:

 document.addEventListener("click", function () { document.body.requestPointerLock(); }); 

另外,除非设置了allow-pointer-lock权限,否则requestPointerLock将无法从沙盒iframe工作。

用户通知

某些浏览器会在locking之前提示用户进行确认,有些只会显示一条消息。 这意味着指针locking可能不会立即在通话后激活。 但是,通过侦听调用requestPointerLock的元素上的pointerchange事件,可以侦听指针locking的实际激活:

 document.body.addEventListener("pointerlockchange", function () { if (document.pointerLockElement === document.body) { // Pointer is now locked to <body>. } }); 

大多数浏览器只会显示一次消息,但Firefox会在每次通话时偶尔发送消息。 AFAIK,这只能通过用户设置来解决,请参阅在Firefox中禁用指针locking通知 。

听原始的鼠标移动

指针锁API不仅可以删除鼠标,而是将原始鼠标移动数据redirect到元素requestPointerLock被调用。 这可以通过使用mousemove事件,然后访问事件对象上的movementXmovementY属性来监听:

 document.body.addEventListener("mousemove", function (e) { console.log("Moved by " + e.movementX + ", " + e.movementY); }); 

其他答案在行动

 .nocursor { cursor: none; padding: 2em; border: 1px solid #000; } 
 <div class="nocursor"> Bye cursor! </div> 

我用透明* .cur 1px到1px,但它看起来像小点。 :(我认为这是我能做的最好的跨浏览器的东西,CSS2.1对于'cursor'属性没有'none'值 – 它是在CSS3中添加的,这就是为什么它不是无处不在。

如果你想在CSS中做到这一点:

 #ID { cursor: none !important; }