:nth-child CSS sélecteur

Définition de la CSS :nth-child.

La pseudo-classe CSS :nth-child() permet de cibler tous les n-ième enfants dans la liste des enfants directs d'un même élément parent, afin de leur assigner des propriétés CSS.
:nth-child() commence sa sélection du n-ième enfant par le début de la liste des enfants d'un même élément parent, à l'inverse de .

Exemple de syntaxe CSS :nth-child :
identifiant :nth-child(2n+1){
  /* Propriétés CSS assignées aux enfants qui correspondent à la règle "2n+1" dans les balises HTML ayant comme parent direct ou indirect "identifiant " */
}
identifiant tr:nth-child(even){
  /* Propriétés CSS assignées aux enfants ayant une position paire dans les balises HTML ayant comme parent direct ou indirect "identifiant " et si ces derniers sont de type balise TR */
}
identifiant tr:nth-child(odd){
  /* Propriétés CSS assignées aux enfants ayant une position impaire dans les balises HTML ayant comme parent direct ou indirect "identifiant " et si ces derniers sont de type balise TR */
}

La pseudo-classe CSS :nth-child(paramètre) CSS accepte comme paramètres :

  • numérique : nombre entier. Si positif on sélectionne un seul fils, le "numérique"ème par exemple. Si négatif aucun fils n'est sélectionné.
  • odd : équivaux à faire nth-child(2n+1).
  • even : équivaux à faire nth-child(2n).
  • an+b : "a" est entier positif ou négatif suivit de "n", "b" entier précédé de "-" ou de "+" qui détermine s'il est positif ou négatif. Par exemple 2n+2.
  • Si "a" égale "1", il peut être omis.
Reportez vous au chapitre "Comment cela fonctionne les paramètres de nth-child(an+b)" plus bas pour comprendre le fonctionnement.

Si vous mettez un sélecteur accolé et devant ":" de la pseudo-classe :nth-child() CSS, alors seul les fils correspondant à la règle de ce sélecteur seront pris en compte.

Conditions d'application de la CSS :nth-child.

La pseudo-classe de feuille de style :nth-child() CSS ne peut pas se déclarer dans l'attribut HTML ou XHTML STYLE.
La pseudo-classe CSS :nth-child() doit être déclarée dans une balise HTML ou XHTML .

Problème d'interprétation de :nth-child en Css.

La pseudo-classe de feuille de style :nth-child() CSS n'est prise en compte qu'a partir de la version d'Internet Explorer 9+, Safari 3.1+, Chrome 2+ , Opera 9.5+ et Firefox 3.5+.

Règles de syntaxes CSS pour :nth-child.

Comprendre l'écriture de :nth-child()

La pseudo-classe CSS :nth-child(règle) s'applique chaque enfant correspondant à la "règle (an+b, odd, ...)" de tous les éléments HTML ou XHTML quelque soit leur position. Vous pouvez donc si nécessaire mettre un sélecteur devant, pour conditionner la sélection des enfants en plus de la "règle", sinon les propriétés seront appliquées à l'ensemble des éléments HTML ou XHTML dont les enfants répondent à :nth-child(règle).

Pour schématiser, il faut imaginer que par défaut la pseudo-classe CSS :nth-child(règle) s'écrit *:nth-child(règle). "*" représente la condition soit "n'importe quel élément" (sélectionne tous les enfants correspondant à la "règle" sans distinction).
Donc pour conditionner plus précisément la sélection, il faut juste remplacer "*" par un autre sélecteur qui vous permettra de distinguer les enfants que vous voulez sélectionner parmi les résultats de la peudo-classe.
Ce sélecteur doit être unique (classe, id, balise ou pseudo-classe) ou multiple à condition de ne pas contenir d'espace entre chaque sélecteur, sinon on passe dans le cas d'un chemin de sélection pour sélectionner le parent (vous comprendrez mieux avec les exemples qui suivent).

Exemple d'écriture CSS de :nth-child() avec règle
:nth-child(odd) {
  /* Propriétés CSS assignées à l'ensemble des fils de position impaire dans la liste des enfants de son parent, de n'importe quel élément */
}
b:nth-child(odd) {
  /* Propriétés CSS assignées à l'ensemble des fils de type balise HTML B de position impaire dans la liste des enfants de son parent, de n'importe quel élément */
}
.maclass:nth-child(even) {
  /* Propriétés CSS assignées à l'ensemble des fils de position paire et de classe "maclass" dans la liste des enfants de son parent, de n'importe quel élément */
}
:not(span):nth-child(odd) {
  /* Propriétés CSS assignées à l'ensemble des fils de position impaire qui ne sont pas de type SPAN dans la liste des enfants de son parent, de n'importe quel élément */
}

Maintenant, vous pouvez être plus précis dans pour cibler l'élément parent dans lequel vous voulez sélectionner les fils, en mettant un chemin de sélection devant :

Exemple d'écriture CSS de :nth-child() avec ciblage de parent
.identifant b:nth-child(odd) {
  /* Propriétés CSS assignées à l'ensemble des fils de balise HTML B de position impaire dans la liste des enfants dont le parent direct ou indirect a la classe "identifant" */
}
.identifant > b:nth-child(odd) {
  /* Propriétés CSS assignées à l'ensemble des fils de balise HTML B de position impaire dans la liste des enfants dont le parent direct a la classe "identifant" */
}
.identifant .maclass:nth-child(even) {
  /*  Propriétés CSS assignées à l'ensemble des fils de position paire et de classe "maclass" dans la liste des enfants  dont le parent direct ou indirect a la classe "identifant" */
}
.identifant :not(span):nth-child(odd) {
  /* Propriétés CSS assignées à l'ensemble des fils de position impaire qui ne sont pas de type SPAN dans la liste des enfants dont le parent direct ou indirect a la classe "identifant" */
}

Les boites anonymes et le sélécteur Css :nth-child()

Attention : Les boites anonymes n'apparaissent pas dans l'arbre du document, c'est pourquoi elles ne sont pas prises en compte au moment de la mise en forme des enfants.

Info complémentaire sur le sélécteur Css :nth-child

Attention, la pseudo-classe CSS ":nth-child" a une écriture un peu spéciale, "nth-child" est toujours précédée de ":".

La pseudo-classe CSS :nth-child ne peut pas être déclarée dans une balise HTML ou XHTML avec l'attribut HTML ou XHTML "STYLE" ou dans une feuille de style externe.
Elle se déclare dans une balise HTML ou XHTML "" de votre page :

Exemple d'écriture CSS :nth-child dans une balise STYLE
<STYLE>
  td:nth-child{}
</STYLE>

Compatibilités navigateurs du sélecteur :nth-child

Exemples et astuces CSS pour utiliser :nth-child

Comment fonctionne le sélécteur Css nth-child(an+b)

an+b, comment cela fonctionne :
Pour savoir quels fils seront sélectionnés avec 2n+2, vous devez faire le calcul suivant :

  • 2 * 0 + 2 = 2, soit le 2ème fils.
  • 2 * 1 + 2 = 4, soit le 4ème fils.
  • 2 * 2 + 2 = 6, soit le 6ème fils.
  • Et ainsi de suite.

Pour savoir quels fils seront sélectionnés avec 4n-2, vous devez faire le calcul suivant :
  • 4 * 0 - 2 = -2, les résultats négatifs sont ignorés car ne représente aucun élément dans l'arbre des fils.
  • 4 * 1 - 2 = 2, soit le 2ème fils.
  • 4* 2 - 2 = 6, soit le 6ème fils.
  • 4* 3 - 2 = 6, soit le 10ème fils.
  • Et ainsi de suite.

Pour savoir quels fils seront sélectionnés avec -1n+4, vous devez faire le calcul suivant :
  • -1 * 0 + 4 = 4, soit le 4ème fils.
  • -1 * 1 + 4 = 3, soit le 3ème fils.
  • -1 * 2 + 4 = 2, soit le 2ème fils.
  • -1 * 3 + 4 = 1, soit le 1er fils.
  • -1 * 4 + 4 = 0, 0 est ignoré car ne représente aucun élément dans l'arbre des fils.
  • -1 * 5 + 4 = -1, les résultats négatifs sont ignorés car représente aucun élément dans l'arbre des fils.
  • Tous les autres résultats sont négatifs donc ignorés.

Quelques équivalences d'écriture de nth-child()

Sélectionne seulement le 1er fils :

Code CSS :nth-child identique :
identifiant:nth-child(0n+1);
identifiant:nth-child(1);

Sélectionne seulement les fils ayant un index impaire (1, 3, 5, ...) :

Code CSS :nth-child identique :
identifiant:nth-child(2n+1);
identifiant:nth-child(odd);

Sélectionne seulement les fils ayant un index paire (2, 4, 6, ...) :

Code CSS :nth-child identique :
identifiant:nth-child(2n);
identifiant:nth-child(even);

Sélectionne tous les fils :

Code CSS :nth-child identique :
identifiant:nth-child(1n+0);
identifiant:nth-child(n+0);
identifiant:nth-child(n)
identifiant

Sélectionne les 5 premiers fils :

Code CSS :nth-child :
identifiant:nth-child(-1n+5);

Sélectionne tous les fils sauf les 5 premiers :

Code CSS :nth-child :
identifiant:nth-child(1n+5);

Votre avis sur la définition :nth-child en CSS

Votez pour la définition CSS :nth-child

  • 1/5
  • 2/5
  • 3/5
  • 4/5
  • 5/5

Avis sur la page https://www.zonecss.fr/proprietes-css/nth-child-css-selector.html Votes: 4.3 / 5 - 6 votes
Cliquez sur une étoile pour voter.