Pseudo-classe en CSS : cibler un état sans toucher au HTML

Les pseudo-classes ciblent un état ou une position d'un élément (hover, focus, nth-child) avec un seul deux-points, sans modifier le HTML.
4 min de lecture
Believemy logo

Un élément HTML n'est jamais figé : un lien peut être survolé, une case peut être cochée, un champ peut être vide ou en erreur. Les pseudo-classes donnent à CSS la capacité de réagir à ces états, sans jamais toucher au balisage.

Elles font partie des outils les plus utilisés du langage, souvent avant même que le mot "pseudo-classe" ne soit connu, tant :hover ou :first-child apparaissent tôt dans l'apprentissage de CSS.


Définition

Une pseudo-classe est un mot-clé ajouté à un sélecteur, précédé d'un seul deux-points, qui cible un élément selon un état ou une position particulière, plutôt que selon sa balise, sa classe ou son attribut.


Exemples courants

CSS
/* état : au survol de la souris */
a:hover {
  text-decoration: underline;
}

/* état : champ actuellement en focus */
input:focus {
  border-color: #4a90d9;
}

/* position : premier enfant du parent */
li:first-child {
  font-weight: bold;
}

/* position : nième enfant, ici tous les pairs */
tr:nth-child(2n) {
  background-color: #f5f5f5;
}

Certaines pseudo-classes réagissent à une interaction, comme :hover ou :focus. D'autres décrivent une position dans une liste d'enfants, comme :first-child, :last-child ou :nth-child(), qui accepte une formule pour cibler un élément sur N.


Un seul deux-points, jamais deux

La syntaxe d'une pseudo-classe utilise toujours un seul deux-points, contrairement au Pseudo-élément qui en utilise deux. Cette distinction n'est pas cosmétique : une pseudo-classe cible un élément qui existe déjà dans le HTML, tandis qu'un pseudo-élément crée une portion de rendu qui n'a pas d'équivalent dans le balisage, comme le premier caractère d'un paragraphe ou un contenu injecté avant un élément.

Pseudo-classeCible
:hoverÉlément survolé par la souris
:focusÉlément qui a le focus clavier
:first-childPremier enfant de son parent
:nth-child()Enfant à une position calculée
:disabledChamp de formulaire désactivé


Combiner les pseudo-classes

Plusieurs pseudo-classes peuvent s'enchaîner sur le même sélecteur pour affiner la cible, par exemple a:hover:not(.desactive) qui applique un style au survol, sauf sur les liens désactivés. L'ordre d'écriture entre pseudo-classes n'a pas d'incidence sur le résultat.

Bon à savoirUne pseudo-classe change l'apparence d'un élément selon un état qui peut évoluer au fil de l'usage. Pensez systématiquement au clavier et au tactile en plus de la souris : :focus mérite autant d'attention que :hover pour l'accessibilité.


Pseudo-classes de formulaire

Les formulaires disposent d'un jeu de pseudo-classes dédié, qui reflète l'état réel d'un champ sans écrire une seule ligne de JavaScript. :required cible un champ obligatoire, :valid et :invalid réagissent à la validation native du navigateur, et :checked cible une case cochée ou un bouton radio sélectionné. Ces pseudo-classes permettent de construire des retours visuels immédiats, comme une bordure verte sur un champ correctement rempli, sans dépendre d'un script pour vérifier la valeur à chaque frappe. Elles se combinent naturellement avec :hover et :focus pour couvrir l'ensemble des états qu'un champ traverse, de la première saisie jusqu'à la validation finale du formulaire. Notre formation HTML et CSS détaille cette validation native pas à pas, pour construire des formulaires qui donnent un retour visuel clair sans dépendre du JavaScript.

CSS
/* champ obligatoire non rempli, en rouge */
input:required:invalid {
  border-color: #e63946;
}

/* case cochée, fond coloré sur le label associé */
input:checked + label {
  background-color: #eaf3ff;
}


Questions fréquentes

QuestionPeut-on inventer ses propres pseudo-classes ?

Non, les pseudo-classes font partie de la spécification CSS et du navigateur qui l'implémente. On ne peut pas en créer une personnalisée comme on créerait une nouvelle classe HTML.

QuestionUne pseudo-classe peut-elle s'appliquer à plusieurs éléments à la fois ?

Oui, une pseudo-classe s'applique à tout élément qui correspond à l'état ou à la position décrite au moment donné, ce qui peut concerner un seul élément comme plusieurs simultanément. Le navigateur réévalue cette correspondance en continu, si bien que le style apparaît et disparaît automatiquement selon les changements d'état.

QuestionPourquoi certains styles au clic ne fonctionnent qu'un instant ?

C'est souvent la pseudo-classe :active qui est en jeu : elle ne s'applique que pendant le temps très court où l'élément est activement pressé, et disparaît dès que le clic est relâché. Ce comportement est volontaire : il confirme visuellement qu'une action a bien été prise en compte par l'interface.

Termes connexes

Découvrez notre glossaire HTML et CSS

Parcourez les termes et définitions les plus couramment utilisés dans le domaine du développement HTML et CSS.

Partager cet article

Tu veux nous aider ? Fais un lien vers cet article sur tes réseaux ou encore mieux : sur ton site, dans un article ou dans ta newsletter.