Ich möchte den Cursor ausblenden, wenn eine Webseite angezeigt wird, auf der Informationen in einer Gebäudehalle angezeigt werden sollen. Es muss überhaupt nicht interaktiv sein. Ich habe es mit der Cursoreigenschaft und einem transparenten Cursorbild versucht, aber ich habe es nicht zum Laufen gebracht.
Weiß jemand, ob dies möglich ist? Ich nehme an, dies kann als Sicherheitsbedrohung für einen Benutzer angesehen werden, der nicht wissen kann, wo er klickt, daher bin ich nicht sehr optimistisch ... Danke!
quelle
1x1
px transparentes PNG oder ein 1% transparentes PNG.document.body.style.cursor = 'auto'
.Zeigersperr-API
Die
cursor: none
CSS-Lösung ist definitiv eine solide und einfache Problemumgehung . Wenn Ihr eigentliches Ziel darin besteht , den Standardcursor zu entfernen, während Ihre Webanwendung verwendet wird, oder Ihre eigene Interpretation der rohen Mausbewegung zu implementieren (z. B. für FPS-Spiele), können Sie dies tun Sie möchten stattdessen die Zeigersperr-API verwenden.Sie können requestPointerLock für ein Element verwenden, um den Cursor zu entfernen und alle
mousemove
Ereignisse auf dieses Element umzuleiten (das Sie möglicherweise behandeln oder nicht behandeln):Um die Sperre aufzuheben , können Sie exitPointerLock verwenden :
Zusätzliche Bemerkungen
Eigentlich kein Cursor
Dies ist ein sehr leistungsfähiger API-Aufruf. Es macht Ihren Cursor nicht nur unsichtbar, sondern entfernt auch den nativen Cursor Ihres Betriebssystems . Sie können keinen Text auswählen oder etwas mit Ihrer Maus tun (außer einige Mausereignisse in Ihrem Code abhören), bis die Zeigersperre aufgehoben wird (entweder durch Verwenden
exitPointerLock
oder Drücken ESCin einigen Browsern).Das heißt, Sie können das Fenster nicht mit Ihrem Cursor verlassen, damit es erneut angezeigt wird, da kein Cursor vorhanden ist.
Beschränkungen
Wie oben erwähnt, ist dies ein sehr leistungsfähiger API-Aufruf und darf daher nur als Reaktion auf eine direkte Benutzerinteraktion im Web erfolgen, z. B. durch Klicken. beispielsweise:
Funktioniert auch
requestPointerLock
nicht in einer Sandbox,iframe
wenn dieallow-pointer-lock
Berechtigung nicht festgelegt ist.Benutzerbenachrichtigungen
Einige Browser fordern den Benutzer zur Bestätigung auf, bevor die Sperre aktiviert wird, andere zeigen einfach eine Nachricht an. Dies bedeutet, dass die Zeigersperre möglicherweise nicht sofort nach dem Anruf aktiviert wird. Die tatsächliche Aktivierung der Zeigersperre kann jedoch abgehört werden, indem das
pointerchange
Ereignis auf dem Element abgehört wird, für das FolgendesrequestPointerLock
aufgerufen wurde:Die meisten Browser zeigen die Nachricht nur einmal an, aber Firefox spammt die Nachricht gelegentlich bei jedem einzelnen Anruf. AFAIK, dies kann nur durch Benutzereinstellungen umgangen werden, siehe Deaktivieren der Zeigersperrbenachrichtigung in Firefox .
Rohe Mausbewegung hören
Die Zeigersperr-API entfernt nicht nur die Maus, sondern leitet auch rohe Mausbewegungsdaten an das
requestPointerLock
aufgerufene Element weiter. Dies kann einfach über dasmousemove
Ereignis und den Zugriff auf die EigenschaftenmovementX
undmovementY
für das Ereignisobjekt abgehört werden:quelle
Ich habe es mit transparentem * .cur 1px bis 1px gemacht, aber es sieht aus wie ein kleiner Punkt. :( Ich denke, es ist die beste browserübergreifende Sache, die ich tun kann. CSS2.1 hat keinen Wert 'none' für die Eigenschaft 'cursor' - es wurde in CSS3 hinzugefügt. Deshalb ist es nicht überall funktionsfähig.
quelle
Wenn Sie es in CSS tun möchten:
quelle
!important
.Versuchen Sie dies für ein ganzes HTML-Dokument
Oder wenn ein CSS Ihren Cursor überschreibt: Keine Verwendung! Wichtig
quelle
Wenn Sie den Cursor auf der gesamten Webseite ausblenden möchten,
body
funktioniert die Verwendung nur, wenn sie die gesamte sichtbare Seite abdeckt, was nicht immer der Fall ist. Verwenden Sie Folgendes, um sicherzustellen, dass der Cursor überall auf der Seite versteckt ist:Um es wieder zu aktivieren:
Die analoge mit statischer CSS - Notation ist in der Antwort von Pavel Salaquarda (im Wesentlichen:
html * {cursor:none}
)quelle