Nous utilisons les cookies afin de fournir les services et fonctionnalités proposés sur notre site et afin d’améliorer l’expérience de nos utilisateurs. Pour plus d'informations nous vous invitons à consulter notre Politiques sur les cookies ainsi que notre Politique de confidentialité.

Les sélecteurs CSS :has, :not, :is et :where

En CSS, les sélecteurs sont des outils essentiels pour cibler des éléments sur une page web. Traditionnellement, cette tâche peut devenir complexe, surtout lorsque vous avez besoin de cibler plusieurs éléments ou de définir des conditions spécifiques. Les pseudo-classes fonctionnelles comme :has, :not, :is et :where simplifient considérablement ces tâches, vous permettant de cibler des éléments de manière plus précise et efficace.

:is()

Le sélecteur pseudo-classe :is() est l'équivalent d'un groupe de sélecteurs. Il permet d'appliquer les mêmes styles à plusieurs sélecteurs sans avoir à les répéter. Cela rend votre code plus concis et plus lisible.

Explication

Avec :is(), vous pouvez lister plusieurs sélecteurs à l'intérieur des parenthèses, séparés par des virgules. Le navigateur appliquera alors les styles définis si l'élément correspond à l'un des sélecteurs de la liste. C'est un peu comme un raccourci pour la logique OR (OU).

Exemple

Disons que vous souhaitez que tous les titres <h1>, <h2> et <h3> aient la même couleur. Au lieu de les lister séparément, vous pouvez utiliser :is() :

:is(h1, h2, h3) {
  color: #333;
}

:not()

Le sélecteur pseudo-classe :not() est un outil puissant qui vous permet d'exclure un élément d'une sélection. En d'autres termes, il cible les éléments qui ne correspondent pas au sélecteur spécifié entre les parenthèses.

Explication

Le sélecteur :not() inverse une sélection. Si vous voulez sélectionner tous les paragraphes sauf un, vous pouvez utiliser ce sélecteur. Il est très utile pour appliquer des styles à tout un groupe d'éléments, à part à quelques exceptions.

Exemple

Pour donner à tous les éléments de liste <li> une bordure, sauf le dernier :

li:not(:last-child) {
  border-bottom: 1px solid #ccc;
}

:where()

Le sélecteur pseudo-classe :where() est très similaire à :is(). Il permet de cibler plusieurs sélecteurs dans une seule déclaration. La principale différence réside dans la spécificité du sélecteur.

Explication

Le sélecteur :where() a toujours une spécificité de 0. Cela signifie que les styles qu'il applique peuvent être facilement écrasés par d'autres règles CSS, même celles avec une faible spécificité. C'est utile pour définir des styles de base qui peuvent être simplement modifiés.

Exemple

Vous voulez donner une marge de base à plusieurs éléments, mais vous savez que ces styles seront souvent écrasés. Utilisez :where() pour que d'autres sélecteurs, même simples, puissent prendre le dessus.

:where(header, main, footer) {
  margin: 1rem 0;
}

:has()

Le sélecteur pseudo-classe :has() est le plus récent et le plus puissant de cette liste. Il permet de cibler un élément qui contient un autre élément spécifique à l'intérieur de sa structure. C'est un peu comme un sélecteur "parent" qui n'existait pas auparavant en CSS.

Explication

Ce sélecteur vous permet de cibler un élément basé sur le contenu ou les descendants qu'il a. Par exemple, vous pouvez styliser une carte produit (<div class="card">) uniquement si elle contient un bouton "Acheter" (<button>).

Exemple

Imaginons que vous voulez donner une bordure rouge à un article de blog (<article>) qui contient une image (<img>).

article:has(img) {
  border: 2px solid red;
}

Conclusion

Ces sélecteurs modernes sont des ajouts très pratiques au langage CSS. Ils vous permettent de coder de manière plus efficace, de réduire la redondance et de créer des sélecteurs plus lisibles et faciles à maintenir. L'intégration de ces sélecteurs dans vos projets peut grandement améliorer la qualité et la propreté de votre code.

Vous désirez un site internet pour vous ou votre entreprise ? contactez-nous !
Haut de la page