Pseudo-classe CSSPseudo-classes

:hover

Correspond à l’élément survolé par le curseur de la souris. La base des effets de survol sur les boutons, les liens et les cartes.

Sur cette page

Exemple

#
CSS
.btn {
  background: #7c3aed;
  transition: background-color 0.2s, transform 0.2s;
}

.btn:hover {
  background: #6d28d9;
  transform: translateY(-2px);
}
Aperçu

Définition et utilisation

#

La pseudo-classe :hover s’active quand l’utilisateur pointe un élément avec le curseur, et se désactive quand le curseur s’éloigne. Elle correspond non seulement à l’élément pointé lui-même, mais aussi à tous ses ancêtres, car le curseur se trouve au-dessus de tous à la fois. Ainsi, .card:hover .icon change l’icône dès que le curseur se trouve n’importe où au-dessus de la carte.

On l’associe le plus souvent à transition, pour que le changement de couleur, d’ombre ou de position soit fluide. Pour les liens, pensez à l’ordre des règles : :link, :visited, :hover, :active. À spécificité égale, c’est la règle écrite en dernier qui gagne, donc placer :visited après :hover masquerait l’effet de survol.

Sur les écrans tactiles, il n’y a pas de curseur. Les navigateurs simulent généralement :hover après un tap, et l’état peut « rester collé » à l’élément jusqu’à ce que vous touchiez ailleurs. Ne cachez donc pas de contenu important derrière le seul survol, et enfermez les effets réservés à la souris dans @media (hover: hover).

Les personnes qui utilisent un clavier ne déclenchent pas non plus :hover. Il vaut la peine de répéter l’effet de survol d’un élément interactif dans :focus-visible.

Syntaxe

#
Syntaxe
sélecteur:hover { propriété: valeur; }

Utilisations courantes

#
  • .demo:hover

    Survolez la carte avec le curseur : elle change de couleur et se soulève légèrement. La fluidité vient de transition défini dans le style de base.
  • .demo:hover .icon

    Survoler la carte change un élément situé à l’intérieur. L’icône réagit dès que le curseur se trouve n’importe où au-dessus de la carte.
  • .icon:hover

    Seulement l’icône elle-même. La carte ne change pas tant que le curseur ne touche pas l’étoile.
  • .demo:not(:hover)

    À l’inverse : la carte est atténuée et ne s’éclaircit qu’une fois le curseur au-dessus.
  • @media (hover: hover)

    L’effet seulement sur les appareils avec un curseur, comme une souris ou un pavé tactile. Sur téléphone, la carte ne change pas.

Utilisations courantes en pratique

#

.demo:hover

Survolez la carte avec le curseur : elle change de couleur et se soulève légèrement. La fluidité vient de transition défini dans le style de base.
.demo:hover {
  background: #7c3aed;
  transform: translateY(-3px);
}

.demo:hover .icon

Survoler la carte change un élément situé à l’intérieur. L’icône réagit dès que le curseur se trouve n’importe où au-dessus de la carte.
.demo:hover .icon { background: #f59e0b; rotate: 15deg; }

.icon:hover

Seulement l’icône elle-même. La carte ne change pas tant que le curseur ne touche pas l’étoile.
.icon:hover { background: #10b981; scale: 1.25; }

.demo:not(:hover)

À l’inverse : la carte est atténuée et ne s’éclaircit qu’une fois le curseur au-dessus.
.demo:not(:hover) { opacity: 0.5; }

@media (hover: hover)

L’effet seulement sur les appareils avec un curseur, comme une souris ou un pavé tactile. Sur téléphone, la carte ne change pas.
@media (hover: hover) {
  .demo:hover { background: #0ea5e9; }
}

Plus d’exemples

#
Boutons visibles au survol et au focus clavier
CSS
.lesson .actions {
  opacity: 0;
  transition: opacity 0.2s;
}

.lesson:hover .actions,
.lesson:focus-within .actions {
  opacity: 1;
}
Aperçu

Survolez la ligne, ou cliquez dans l’aperçu et appuyez sur Tab. Les boutons apparaissent dans les deux cas, car la règle combine :hover et :focus-within.

Compatibilité des navigateurs

#

Largement disponible

Fonctionne dans tous les navigateurs modernes, y compris sur mobile. Vous pouvez l’utiliser sans crainte.

  • Chrome
  • Edge
  • Firefox
  • Safari

Bonnes pratiques

#
  • Ne cachez pas d’informations ni de boutons importants uniquement derrière :hover. Sur téléphone, et avec la navigation au clavier, l’utilisateur ne les verra jamais.
  • Répétez l’effet de survol pour le clavier : .btn:hover, .btn:focus-visible { … }.
  • Au survol, changez transform, opacity et les couleurs. Changer width ou margin déplace les éléments voisins et peut faire sauter la mise en page.

Entrées associées

#

Vous voyez une erreur ou il manque un exemple ? Écrivez-nous.