Quero ocultar o cursor ao mostrar uma página da Web destinada a exibir informações em um edifício. Não precisa ser interativo. Tentei com a propriedade cursor e uma imagem transparente, mas não a fiz funcionar.
Alguém sabe se isso pode ser feito? Suponho que isso possa ser pensado como uma ameaça à segurança de um usuário que não sabe onde está clicando, por isso não estou muito otimista ... Obrigado!
javascript
html
css
yeyeyerman
fonte
fonte
1x1
png transparente de px ou png de transparência de 1%.document.body.style.cursor = 'auto'
.API de bloqueio de ponteiro
Enquanto a
cursor: none
solução CSS é definitivamente um sólido e de fácil solução , se o seu objetivo real é para remover o cursor padrão, enquanto o seu aplicativo web está sendo usado, ou implementar a sua própria interpretação do movimento matéria-rato (para jogos FPS, por exemplo), você pode deseja considerar o uso da API Pointer Lock .Você pode usar requestPointerLock em um elemento para remover o cursor e redirecionar todos os
mousemove
eventos para esse elemento (com o qual você pode ou não lidar):Para liberar o bloqueio, você pode usar exitPointerLock :
Notas Adicionais
Sem cursor, de verdade
Esta é uma chamada de API muito poderosa. Ele não apenas torna o cursor invisível, como também remove o cursor nativo do sistema operacional . Você não poderá selecionar texto ou fazer qualquer coisa com o mouse (exceto ouvir alguns eventos do mouse no seu código) até que o bloqueio do ponteiro seja liberado (usando
exitPointerLock
ou pressionando ESCem alguns navegadores).Ou seja, você não pode deixar a janela com o cursor para que ela apareça novamente, pois não há cursor.
Restrições
Como mencionado acima, essa é uma chamada de API muito poderosa e, portanto, só pode ser feita em resposta a alguma interação direta do usuário na Web, como um clique; por exemplo:
Além disso,
requestPointerLock
não funcionará em uma área restritaiframe
, a menos que aallow-pointer-lock
permissão esteja definida.Notificações do usuário
Alguns navegadores solicitarão ao usuário uma confirmação antes que o bloqueio seja ativado, outros simplesmente exibirão uma mensagem. Isso significa que o bloqueio do ponteiro pode não ser ativado imediatamente após a chamada. No entanto, a ativação real do bloqueio do ponteiro pode ser ouvida ouvindo o
pointerchange
evento no elemento no qualrequestPointerLock
foi chamado:A maioria dos navegadores exibe a mensagem apenas uma vez, mas o Firefox ocasionalmente envia spam para todas as chamadas. AFAIK, isso só pode ser contornado pelas configurações do usuário, consulte Desativar a notificação de bloqueio de ponteiro no Firefox .
Ouvindo o movimento bruto do mouse
A API Pointer Lock não apenas remove o mouse, mas também redireciona os dados brutos de movimento do mouse para o elemento em que
requestPointerLock
foi chamado. Isso pode ser ouvido simplesmente usando omousemove
evento e acessando as propriedadesmovementX
emovementY
no objeto de evento:fonte
Fiz isso com transparência * .cur 1px a 1px, mas parece um pequeno ponto. :( Acho que é a melhor coisa entre navegadores que posso fazer. O CSS2.1 não tem valor 'none' para a propriedade 'cursor' - foi adicionado no CSS3. É por isso que é viável em todos os lugares.
fonte
Se você quiser fazer isso em CSS:
fonte
!important
.Para todo o documento html, tente isso
Ou se algum CSS sobrescrever seu cursor: nenhum use! Important
fonte
Se você deseja ocultar o cursor em toda a página da Web, o uso
body
não funcionará, a menos que cubra a página visível inteira, o que nem sempre é o caso. Para garantir que o cursor esteja oculto em todos os lugares da página, use:Para reativá-lo:
O análogo com a notação CSS estático está na resposta por Pavel Salaquarda (em essência:
html * {cursor:none}
)fonte