Pseudo-classe CSSPseudo-classes

:is()

Fait correspondre l’élément à n’importe quel sélecteur de la liste. Raccourcit les longs sélecteurs répétitifs en une seule écriture.

Sur cette page

Exemple

#
CSS
.link:is(:hover, :focus-visible) {
  color: #fff;
  text-decoration-color: #a78bfa;
  text-decoration-thickness: 2px;
}
Aperçu

Définition et utilisation

#

La pseudo-classe :is() accepte une liste de sélecteurs et correspond dès que l’élément correspond à l’un d’entre eux. Son principal avantage est une écriture plus courte : au lieu de article h2, article h3, section h2, section h3, il suffit d’écrire :is(article, section) :is(h2, h3).

La liste dans :is() est tolérante. Si l’un des sélecteurs est invalide ou non pris en charge, le navigateur l’ignore simplement, et le reste fonctionne. Une liste ordinaire séparée par des virgules rejetterait toute la règle dans ce cas.

La spécificité de :is() est celle du sélecteur le plus fort de la liste, peu importe celui par lequel l’élément correspond réellement. :is(#hero, p) a un poids de (1, 0, 0) même pour de simples paragraphes. Si vous voulez la même écriture mais avec un poids nul, utilisez :where().

Les pseudo-éléments ne peuvent pas figurer dans la parenthèse : :is(::before, ::after) ne fonctionnera pas, il faut les écrire séparément.

Syntaxe

#
Syntaxe
:is( <liste de sélecteurs> )

Exemples de sélecteurs

#

Exemples de sélecteurs en pratique

#

:is(article, section) h4

Les titres dans article ou dans section. Un seul sélecteur au lieu de deux.
:is(article, section) h4 { background: #7c3aed; color: #fff; }

aside :is(h4, p)

La liste peut aussi se trouver à la fin : un titre et un paragraphe dans aside.
aside :is(h4, p) { background: #7c3aed; color: #fff; }

:is(article, aside) :is(h4, p)

Deux listes donnent quatre combinaisons en une seule écriture courte.
:is(article, aside) :is(h4, p) { background: #7c3aed; color: #fff; }

:is(section, :unknown-selector) p

Le sélecteur inconnu :unknown-selector est ignoré, et le reste de la liste fonctionne. Une liste ordinaire séparée par des virgules aurait rejeté toute la règle.
:is(section, :unknown-selector) p { background: #7c3aed; color: #fff; }

Plus d’exemples

#
Listes imbriquées, dans n’importe quelle combinaison
CSS
:is(ul, ol) :is(ul, ol) {
  margin: 4px 0;
  color: #a1a1aa;
  font-size: 14px;
}
Aperçu

Une seule règle couvre quatre cas : ul ul, ul ol, ol ul et ol ol.

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

#
  • Utilisez :is() pour regrouper des états : .btn:is(:hover, :focus-visible). Vous obtenez l’effet souris et clavier dans une seule règle.
  • Surveillez le poids. Un seul identifiant dans la liste augmente la spécificité de toute la pseudo-classe, même pour les éléments qui correspondent par une classe.
  • Quand vous écrivez des styles de base destinés à être facilement redéfinis, remplacez :is() par :where().

Entrées associées

#

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