Cette page a été traduite à partir de l'anglais par la communauté. Vous pouvez contribuer en rejoignant la communauté francophone sur MDN Web Docs.

View in English Always switch to English

Element : évènement mouseenter

Baseline Large disponibilité

Cette fonctionnalité est bien établie et fonctionne sur de nombreux appareils et versions de navigateurs. Elle est disponible sur tous les navigateurs depuis juillet 2015.

L'évènement mouseenter est déclenché sur un objet Element lorsqu'un dispositif de pointage (généralement une souris) est initialement déplacé de sorte que son point chaud se trouve à l'intérieur de l'élément sur lequel l'évènement a été déclenché.

Notez que « se déplacer dans un élément » fait référence à la position de l'élément dans l'arborescence DOM, et non à sa position visuelle. Par exemple, si un élément enfant est positionné de manière à être placé en dehors de son parent, alors se déplacer dans l'élément enfant déclenche mouseenter sur l'élément parent, même si le pointeur est toujours en dehors des limites de l'élément parent.

Syntaxe

Utilisez le nom de l'évènement dans des méthodes comme addEventListener(), ou définissez une propriété gestionnaire d'évènement.

js
addEventListener("mouseenter", (event) => { })

onmouseenter = (event) => { }

Type d'évènement

Un objet MouseEvent. Hérite de UIEvent et de Event.

Event UIEvent MouseEvent

Notes d'utilisation

Bien que mouseover soit similaire, mouseenter diffère en ce qu'il ne se propage pas et qu'il n'est pas envoyé aux descendants lorsque le pointeur passe de l'espace physique d'un de ses descendants à son propre espace physique. À part cela, les évènements mouseenter et mouseover pour la même situation sont déclenchés en même temps, si nécessaire.

Comportement des évènements mouseenter

Cela décrit les évènements entrée de souris reçus par chacun des quatre <div> concentriques sans remplissage ni marge, donc les évènements se produisent tous en même temps : Diagramme du comportement de mouseenter Un évènement mouseenter est envoyé à chaque élément de la hiérarchie lorsqu'on y entre. Ici, 4 évènements sont envoyés aux quatre éléments de la hiérarchie lorsque le pointeur atteint le texte.

Comportement des évènements mouseover

Diagramme du comportement de mouseover Un seul évènement mouseover est envoyé à l'élément le plus profond de l'arborescence DOM, puis il remonte la hiérarchie jusqu'à ce qu'il soit annulé par un gestionnaire ou qu'il atteigne la racine.

Dans le cas de hiérarchies profondes, le nombre d'évènements mouseenter envoyés peut être très important et entraîner des problèmes de performances significatifs. Dans de tels cas, il est préférable d'écouter les évènements mouseover.

Combiné à l'évènement mouseleave correspondant (qui est déclenché au niveau de l'élément lorsque la souris quitte sa zone de contenu), l'évènement mouseenter agit de manière très similaire à la pseudo-classe CSS :hover.

Exemples

La documentation mouseover illustre la différence entre mouseover et mouseenter.

mouseenter

L'exemple trivial suivant utilise l'évènement mouseenter pour modifier la bordure du div lorsque la souris entre dans l'espace qui lui est attribué. Il ajoute ensuite un élément à la liste avec le nombre d'évènements mouseenter ou mouseleave.

HTML

html
<div id="cibleSouris">
  <ul id="listeNonOrdonnee">
    <li>Pas d'évènements pour le moment !</li>
  </ul>
</div>

CSS

On met en forme le div pour le rendre plus visible.

css
#cibleSouris {
  box-sizing: border-box;
  width: 15rem;
  border: 1px solid #333333;
}

JavaScript

js
let compteEventEntree = 0;
let compteEventSortie = 0;
const cibleSouris = document.getElementById("cibleSouris");
const listeNonOrdonnee = document.getElementById("listeNonOrdonnee");

cibleSouris.addEventListener("mouseenter", (e) => {
  cibleSouris.style.border = "5px dotted orange";
  compteEventEntree++;
  ajouterDansListe(
    `Ceci est l'évènement mouseenter numéro ${compteEventEntree}.`,
  );
});

cibleSouris.addEventListener("mouseleave", (e) => {
  cibleSouris.style.border = "1px solid #333333";
  compteEventSortie++;
  ajouterDansListe(
    `Ceci est l'évènement mouseleave numéro ${compteEventSortie}.`,
  );
});

function ajouterDansListe(texte) {
  // Crée un nouveau nœud de texte utilisant le texte fournit
  const nouveauNoeudTexte = document.createTextNode(texte);

  // Crée un nouvel élément li
  const nouvelElementListe = document.createElement("li");

  // Ajoute le nœud de texte à l'élément li
  nouvelElementListe.appendChild(nouveauNoeudTexte);

  // Ajoute l'élément de liste nouvellement créé à la liste
  listeNonOrdonnee.appendChild(nouvelElementListe);
}

Résultat

Spécifications

Spécification
Pointer Events
# mouseenter
HTML
# handler-onmouseenter

Compatibilité des navigateurs

Voir aussi