Chcę ukryć kursor podczas wyświetlania strony internetowej, która ma wyświetlać informacje w hali budynku. To wcale nie musi być interaktywne. Próbowałem z właściwością kursora i przezroczystym obrazem kursora, ale nie udało mi się.
Czy ktoś wie, czy można to zrobić? Przypuszczam, że można to uznać za zagrożenie bezpieczeństwa dla użytkownika, który nie może wiedzieć, gdzie klika, więc nie jestem optymistą ... Dziękuję!
javascript
html
css
yeyeyerman
źródło
źródło
1x1
przezroczystego png w pikselach lub png przezroczystości 1%.document.body.style.cursor = 'auto'
.Pointer Lock API
Chociaż
cursor: none
rozwiązanie CSS jest zdecydowanie solidnym i łatwym obejściem , jeśli Twoim rzeczywistym celem jest usunięcie domyślnego kursora podczas korzystania z aplikacji internetowej lub zaimplementowanie własnej interpretacji nieprzetworzonego ruchu myszy (na przykład w grach FPS), możesz zamiast tego warto rozważyć użycie interfejsu API Pointer Lock .Możesz użyć requestPointerLock na elemencie, aby usunąć kursor i przekierować wszystkie
mousemove
zdarzenia do tego elementu (który możesz obsłużyć lub nie):Aby zwolnić blokadę, możesz użyć exitPointerLock :
Dodatkowe uwagi
Żaden kursor, naprawdę
To bardzo potężne wywołanie API. Nie tylko sprawia, że kursor jest niewidoczny, ale w rzeczywistości usuwa natywny kursor systemu operacyjnego . Nie będziesz w stanie zaznaczyć tekstu ani nic zrobić za pomocą myszy (z wyjątkiem słuchania niektórych zdarzeń myszy w kodzie), dopóki blokada wskaźnika nie zostanie zwolniona (za pomocą
exitPointerLock
lub naciśnięcia ESCw niektórych przeglądarkach).Oznacza to, że nie możesz opuścić okna z kursorem, aby ponownie się pokazało, ponieważ nie ma kursora.
Ograniczenia
Jak wspomniano powyżej, jest to bardzo potężne wywołanie API, dlatego może być wykonywane tylko w odpowiedzi na pewne bezpośrednie interakcje użytkownika w sieci, takie jak kliknięcie; na przykład:
Ponadto
requestPointerLock
nie będzie działać z piaskownicy,iframe
chyba żeallow-pointer-lock
zezwolenie jest ustawione.Powiadomienia użytkownika
Niektóre przeglądarki monitują użytkownika o potwierdzenie przed włączeniem blokady, inne po prostu wyświetlają komunikat. Oznacza to, że blokada wskaźnika może nie zostać aktywowana od razu po wywołaniu. Jednak faktycznej aktywacji blokowania wskaźnika można odsłuchać nasłuchując
pointerchange
zdarzenia na elemencie, na którymrequestPointerLock
został wywołany:Większość przeglądarek wyświetla wiadomość tylko raz, ale Firefox od czasu do czasu spamuje wiadomość przy każdym połączeniu. AFAIK, można to obejść tylko za pomocą ustawień użytkownika, zobacz Wyłączanie powiadomienia o blokadzie wskaźnika w przeglądarce Firefox .
Słuchanie surowego ruchu myszy
Interfejs API Pointer Lock nie tylko usuwa mysz, ale zamiast tego przekierowuje surowe dane ruchu myszy do elementu, który
requestPointerLock
został wywołany. Można tego odsłuchać po prostu używającmousemove
zdarzenia, a następnie uzyskując dostęp do właściwościmovementX
imovementY
obiektu zdarzenia:źródło
Zrobiłem to z przezroczystym * .cur od 1 do 1 piksela, ale wygląda to jak mała kropka. :( Myślę, że to najlepsza rzecz, jaką mogę zrobić w różnych przeglądarkach. CSS2.1 nie ma wartości „brak” dla właściwości „kursor” - zostało dodane w CSS3. To dlatego działa nie wszędzie.
źródło
Jeśli chcesz to zrobić w CSS:
źródło
!important
.Spróbuj tego dla całego dokumentu HTML
Lub jeśli jakiś css nadpisze twój kursor: nie używaj! Ważne
źródło
Jeśli chcesz ukryć kursor na całej stronie internetowej, użycie
body
nie zadziała, chyba że obejmuje całą widoczną stronę, co nie zawsze ma miejsce. Aby upewnić się, że kursor jest ukryty na całej stronie, użyj:Aby go ponownie włączyć:
Analog ze statycznym notacji CSS jest odpowiedź przez Pavel Salaquarda (w istocie:
html * {cursor:none}
)źródło