La sélection :has() en CSS : Les petits trucs qui changent la vie
Salut la famille ! Aujourd'hui on va parler d'un truc qui fait pas mal de bruit dans le monde du CSS : le sélecteur :has(). En gros, c'est ce truc magique qui nous permet ENFIN de sélectionner les éléments parents. Oui, après toutes ces années à galérer, c'est enfin possible !
1. Pour les bannières qui en ont dans le ventre
Premier exemple tout simple : imaginez une bannière classique qui doit s'adapter quand on lui ajoute un bouton. Au lieu de créer 15 classes différentes, on fait ça :
.banner:has(button) {
display: flex;
justify-content: space-between;
gap: var(--space-s);
text-align: revert;
}
Et pouf ! La bannière s'adapte toute seule. Pratique, non ?
2. Les labels qui se la jouent flex
Vous connaissez la galère des labels avec des checkboxes ? Plus besoin de classes partout, maintenant c'est :
label:has(input) {
display: flex;
align-items: flex-start;
gap: var(--space-s);
}
🤓 Petit conseil : si vous mettez aussi des champs texte dans vos labels (ce que je déconseille perso), adaptez le sélecteur pour ne cibler que les checkboxes et radios.
3. Le coup du target, mais en mieux
Vous savez, quand on met #mon-element dans l'URL pour cibler un truc ? Maintenant on peut styler son parent direct. C'est pas la révolution, mais ça dépanne bien :
section:has(:target) {
background: var(--color-light-shade);
border: 2px solid var(--color-primary);
}
4. L'effet "spotlight" sans prise de tête
Vous voyez ces galeries d'images où quand on survole une image, les autres deviennent plus ternes ? Avant, c'était un vrai casse-tête. Maintenant :
.tiles:has(:hover) .tile:not(:hover) {
opacity: 70%;
}
Simple, efficace, pas besoin de sortir la calculette scientifique.
Pour conclure
:has() n'est peut-être pas la solution miracle à tous vos problèmes CSS, mais c'est un sacré bon outil à avoir dans sa boîte. C'est comme un bon tournevis : pas toujours indispensable, mais quand on en a besoin, on est bien content de l'avoir sous la main.
Voilà, vous savez tout ! Si vous voulez creuser plus loin, je vous conseille le super guide interactif d'Ahmad. C'est de la bombe (et je dis pas ça parce qu'il m'a payé en kebabs).
Commentaires