Je souhaite masquer le curseur lors de l'affichage d'une page Web destinée à afficher des informations dans un hall de bâtiment. Il ne doit pas du tout être interactif. J'ai essayé avec la propriété de curseur et une image de curseur transparente mais je ne l'ai pas fait fonctionner.
Est-ce que quelqu'un sait si cela peut être fait? Je suppose que cela peut être considéré comme une menace pour la sécurité d'un utilisateur qui ne sait pas où il clique, alors je ne suis pas très optimiste ... Merci!
Avec CSS:
selector { cursor: none; }
Un exemple:
<div class="nocursor">
<!-- some stuff -->
</div>
<style type="text/css">
.nocursor { cursor:none; }
</style>
Pour définir cela sur un élément en Javascript, vous pouvez utiliser la propriété style
:
<div id="nocursor"><!-- some stuff --></div>
<script type="text/javascript">
document.getElementById('nocursor').style.cursor = 'none';
</script>
Si vous voulez définir ceci sur tout le corps:
<script type="text/javascript">
document.body.style.cursor = 'none';
</script>
Assurez-vous cependant que vous voulez vraiment cacher le curseur. Cela peut vraiment énerver les gens.
Alors que la solution CSS cursor: none
est définitivement un solide et facile solution de contournement , si votre objectif réel est de remove le curseur par défaut pendant que votre l’application est utilisée ou implémentez votre interprétation own du mouvement brut de la souris (pour les jeux FPS, par exemple), vous pouvez envisager d’utiliser l’API Pointer Lock API à la place.
Vous pouvez utiliser requestPointerLock sur un élément pour supprimer le curseur et rediriger tous les événements mousemove
vers cet élément (que vous puissiez ou non gérer):
document.body.requestPointerLock();
Pour libérer le verrou, vous pouvez utiliser exitPointerLock :
document.exitPointerLock();
Pas de curseur, pour de vrai
C'est un appel d'API très puissant. Cela rend non seulement votre curseur invisible, mais , il supprime le curseur natif de votre système d'exploitation . Vous ne pourrez pas sélectionner de texte, ni faire rien avec votre souris (sauf l'écoute de certains événements de souris dans votre code) jusqu'à ce que le verrou du pointeur soit libéré (soit en utilisant exitPointerLock
ou en appuyant ESC dans certains navigateurs).
C'est-à-dire que vous ne pouvez pas quitter la fenêtre avec votre curseur pour qu'il s'affiche à nouveau, car il n'y a pas de curseur.
Restrictions
Comme mentionné ci-dessus, il s'agit d'un appel API très puissant, qui ne peut donc être effectué qu'en réponse à une interaction directe de l'utilisateur sur le Web, telle qu'un clic; par exemple:
document.addEventListener("click", function () {
document.body.requestPointerLock();
});
De plus, requestPointerLock
ne fonctionnera pas à partir d'un bac à sable iframe
à moins que l'autorisation allow-pointer-lock
ne soit définie.
User-notifications
Certains navigateurs demanderont une confirmation à l'utilisateur avant que le verrou ne soit activé, d'autres simplement afficheront un message. Cela signifie que le verrouillage du pointeur peut ne pas être activé immédiatement après l'appel. Toutefois, l'activation réelle du verrouillage du pointeur peut être écoutée en écoutant l'événement pointerchange
sur l'élément sur lequel requestPointerLock
a été appelé:
document.body.addEventListener("pointerlockchange", function () {
if (document.pointerLockElement === document.body) {
// Pointer is now locked to <body>.
}
});
La plupart des navigateurs n’afficheront le message qu’une seule fois, mais Firefox spammera parfois le message à chaque appel. Autant que je sache, cela ne peut être contourné que par les paramètres de l'utilisateur, voir Désactiver la notification de verrouillage du pointeur dans Firefox .
Écouter le mouvement brut de la souris
L'API Pointer Lock non seulement supprime la souris, mais redirige plutôt les données de mouvement brutes de la souris vers l'élément requestPointerLock
qui a été appelé. Cela peut être écouté simplement en utilisant l'événement mousemove
name__, puis en accédant aux propriétés movementX
et movementY
sur l'objet événement:
document.body.addEventListener("mousemove", function (e) {
console.log("Moved by " + e.movementX + ", " + e.movementY);
});
Les autres réponses en action
.nocursor {
cursor: none;
padding: 2em;
border: 1px solid #000;
}
<div class="nocursor">
Bye cursor!
</div>
Si vous voulez le faire en CSS:
#ID { cursor: none !important; }
Je l'ai fait avec transparent * .cur 1px à 1px, mais cela ressemble à un petit point. :( Je pense que c'est la meilleure chose que je puisse faire avec plusieurs navigateurs . CSS2.1 n'a pas de valeur 'aucune' pour la propriété 'curseur' - il a été ajouté en CSS3. C'est pourquoi il est réalisable pas partout.
Quand je fais
body {
cursor: none;
}
Tout ce qui change, c’est que le curseur disparaisse (c’est ce que je veux), mais le problème, c’est que, lorsque vous passez sur un bouton, il réapparaît jusqu’à ce que je l’éloigne du curseur.
Pour tout le document HTML, essayez ceci
html * {cursor:none}
Ou si des css écrasent votre curseur: aucune utilisation! Important
html * {cursor:none!important}