是否可以隐藏使用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
事件,然后访问事件对象上的movementX
和movementY
属性来监听:
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; }