回答:
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>
ただし、カーソルを本当に非表示にしたいことを確認してください。それは本当に人々を困らせることができます。
1x1
px透明pngまたは1%透明pngを使用します。
document.body.style.cursor = 'auto'
。
一方でcursor: none
CSSのソリューションは間違いなく固体と簡単です回避策実際の目標は、のであれば、削除 Webアプリケーションが使用されている間に、デフォルトのカーソルを、またはあなたの実装自身(例えばFPSゲームのため、)生のマウスの動きの解釈を、あなたがかもしれません代わりにPointer Lock APIの使用を検討したい。
要素でrequestPointerLockを使用してカーソルを削除し、すべてのmousemove
イベントをその要素にリダイレクトできます(処理する場合としない場合があります)。
document.body.requestPointerLock();
ロックを解除するには、exitPointerLockを使用できます。
document.exitPointerLock();
実際にはカーソルなし
これは非常に強力なAPI呼び出しです。カーソルを非表示にするだけでなく、実際にはオペレーティングシステムのネイティブカーソルを削除します。ポインタロックが解除されるまで(一部のブラウザで使用または押すことにより)、テキストを選択したり、マウスで何かをしたりすることはできません(コードの一部のマウスイベントをリッスンすることはできません)。exitPointerLock
ESC
つまり、カーソルがないため、ウィンドウをカーソルのままにしてウィンドウを再表示することはできません。
制限事項
上記のように、これは非常に強力なAPI呼び出しであるため、クリックなどのWeb上の直接的なユーザー操作に応答してのみ実行できます。例えば:
document.addEventListener("click", function () {
document.body.requestPointerLock();
});
また、権限が設定されていない限り、requestPointerLock
サンドボックスからは機能しません。iframe
allow-pointer-lock
ユーザー通知
一部のブラウザは、ロックが掛かる前にユーザーに確認のプロンプトを表示し、一部は単にメッセージを表示します。つまり、呼び出し後すぐにポインターロックがアクティブにならない場合があります。ただし、ポインターロックの実際のアクティブ化は、呼び出さpointerchange
れた要素のイベントをリッスンすることでリッスンできますrequestPointerLock
。
document.body.addEventListener("pointerlockchange", function () {
if (document.pointerLockElement === document.body) {
// Pointer is now locked to <body>.
}
});
ほとんどのブラウザはメッセージを1回だけ表示しますが、Firefoxは1回の呼び出しごとにメッセージをスパム送信することがあります。AFAIK、これはユーザー設定によってのみ回避できます。Firefoxでポインターロック通知を無効にするを参照してください。
生のマウスの動きを聞く
Pointer Lock APIはマウスを削除するだけでなく、requestPointerLock
呼び出された要素に生のマウスの動きデータをリダイレクトします。これは、mousemove
イベントを使用して、イベントオブジェクトのmovementX
およびmovementY
プロパティにアクセスするだけでリッスンできます。
document.body.addEventListener("mousemove", function (e) {
console.log("Moved by " + e.movementX + ", " + e.movementY);
});
HTMLドキュメント全体については、これを試してください
html * {cursor:none}
または、CSSがカーソルを上書きする場合:!
html * {cursor:none!important}