Я хочу скрыть курсор при отображении веб-страницы, предназначенной для отображения информации в холле здания. Это совсем не обязательно должно быть интерактивным. Я пробовал использовать свойство курсора и прозрачное изображение курсора, но у меня ничего не получилось.
Кто-нибудь знает, можно ли это сделать? Я полагаю, это можно рассматривать как угрозу безопасности для пользователя, который не может знать, где он нажимает, поэтому я не очень оптимистичен ... Спасибо!
javascript
html
css
yeyeyerman
источник
источник
1x1
прозрачный png px или 1% прозрачность png.document.body.style.cursor = 'auto'
.Pointer Lock API
Хотя
cursor: none
решение CSS, безусловно, является надежным и простым обходным путем , если ваша фактическая цель - удалить курсор по умолчанию во время использования веб-приложения или реализовать собственную интерпретацию необработанного движения мыши (например, для игр FPS), вы можете хотите вместо этого рассмотреть возможность использования API блокировки указателя .Вы можете использовать requestPointerLock для элемента, чтобы удалить курсор и перенаправить все
mousemove
события на этот элемент (который вы можете обрабатывать или не обрабатывать):Чтобы снять блокировку, вы можете использовать exitPointerLock :
Дополнительные замечания
Нет курсора, по-настоящему
Это очень мощный вызов API. Он не только делает ваш курсор невидимым, но и фактически удаляет собственный курсор вашей операционной системы . Вы не сможете выделить текст или сделать что-либо с помощью мыши (кроме прослушивания некоторых событий мыши в коде) до тех пор, пока блокировка указателя не будет снята (с помощью
exitPointerLock
или нажатием ESCв некоторых браузерах).То есть, вы не можете оставить окно с курсором, чтобы оно показалось снова, поскольку курсора нет.
ограничения
Как упоминалось выше, это очень мощный вызов API, и поэтому он может выполняться только в ответ на некоторое прямое взаимодействие с пользователем в сети, такое как щелчок; например:
Кроме того,
requestPointerLock
не будет работать из песочницы,iframe
если не установленоallow-pointer-lock
разрешение.User-уведомления
Некоторые браузеры запрашивают у пользователя подтверждение перед включением блокировки, некоторые просто отображают сообщение. Это означает, что блокировка указателя может не активироваться сразу после вызова. Однако фактическую активацию блокировки указателя можно прослушать, прослушивая
pointerchange
событие в элементе, для которогоrequestPointerLock
был вызван:Большинство браузеров отображают сообщение только один раз, но Firefox иногда будет спамить сообщение при каждом вызове. AFAIK, это можно обойти только с помощью пользовательских настроек, см. Отключение уведомления о блокировке указателя в Firefox .
Прослушивание сырого движения мыши
API-интерфейс Pointer Lock не только удаляет мышь, но вместо этого перенаправляет необработанные данные о перемещении мыши на
requestPointerLock
вызываемый элемент . Это можно слушать просто используяmousemove
событие, то доступ кmovementX
иmovementY
свойства на объекте события:источник
Я сделал это с прозрачным * .cur размером от 1 до 1 пикселей, но он выглядит как маленькая точка. :( Я думаю, что это лучшая кроссбраузерная вещь, которую я могу сделать. CSS2.1 не имеет значения 'none' для свойства 'cursor' - он был добавлен в CSS3. Вот почему он работает не везде.
источник
Если вы хотите сделать это в CSS:
источник
!important
.Для всего html-документа попробуйте это
Или, если какой-то css перезапишет ваш курсор: никто не использует! Important
источник
Если вы хотите скрыть курсор на всей веб-странице, использование
body
не будет работать, если оно не охватывает всю видимую страницу, что не всегда так. Чтобы убедиться, что курсор скрыт везде на странице, используйте:Чтобы снова включить его:
Аналог со статической CSS нотации в ответ по Павлом Salaquarda (по сути:
html * {cursor:none}
)источник