CSS :nth-child(), Le sélecteur par position

Introduction Introduction

Voici la suite de l’article sur les possibilités avec le :has(), pour voir la première partie, vous pouvez cliquer le lien de la partie 1 de l’article

La sélection par quantité La sélection par quantité

Ciblage par index Ciblage par index

En CSS, il existe un sélecteur qui permet de cibler un enfant en fonction de son index, autrement dit selon sa position en tant qu’enfant. Par exemple, si je souhaite cibler le troisième enfant, on peut faire un simple :

span:nth-child(3) {
}
🕳 🕳 🎯 🕳 🕳
Voir sur Codepen

Ciblage à partir d’un index Ciblage à partir d’un index

On peut également cibler tous les éléments à partir d’un index :

span:nth-child(n + 3) {
}
🚀 🚀 🚀 🚀 🚀 🚀

Ou en partant de la fin :

span:nth-last-child(n + 3) {
}
🚀 🚀 🚀 🚀 🚀 🚀
Voir sur Codepen

Ciblage en fonction du nombre d’éléments Ciblage en fonction du nombre d’éléments

Imaginons que nous ayons un conteneur d’éléments qui doit passer au orange dès que le nombre de burgers est supérieur à 3 puis au rouge dès que l’on dépasse 6 burgers. On va aussi dynamiser l’affichage d’un message en fonction de ces dépassements.

🍔
Voir sur Codepen

La sélection par attribut La sélection par attribut

Les sélecteurs d’attributs sont également très utiles pour cibler certains de nos éléments. On peut aller assez loin dans les patterns de sélection avec un peu d’expressions régulières.

Appliquer du style selon la valeur de l’attribut Appliquer du style selon la valeur de l’attribut

Par exemple, on peut appliquer un certain style sur un lien qui serait externe au site :

a[href^="https://"]
{
  color: green;
}

Imaginons maintenant que nous souhaitions personnaliser un encart contenant un lien de téléchargement en fonction du type fichier. En combinant le :has() et un sélecteur d’attribut, c’est tout à fait possible :

Voir sur Codepen

Autre cas :

https://www.bram.us/2023/01/12/sibling-scopes-in-css-thanks-to-has/

Retour à la liste des articles
Github de Samuel Gomez Linkedin de Samuel Gomez Twitter de Samuel Gomez Instagram de Samuel Gomez
Allez en haut