Pseudo-classe CSSPseudo-classes

:nth-of-type()

Sélectionne des éléments selon leur position parmi les frères portant la même balise, par exemple une image sur deux ou le troisième paragraphe.

Sur cette page

Exemple

#
CSS
.chat p:nth-of-type(odd) {
  justify-self: start;
  background: #27272a;
}

.chat p:nth-of-type(even) {
  justify-self: end;
  background: #7c3aed;
}
Aperçu

Les heures dans les balises time se trouvent entre les messages, mais elles ne perturbent pas l’alternance, car seuls les paragraphes sont comptés.

Définition et utilisation

#

La pseudo-classe :nth-of-type() fonctionne comme :nth-child(), mais ne compte que les frères portant la même balise. Dans un article où les paragraphes alternent avec des images, p:nth-of-type(2) désignera le deuxième paragraphe, même si trois images le précèdent.

Elle accepte les mêmes arguments : un nombre, odd, even et la formule An+B. Ses versions sans argument sont :first-of-type et :last-of-type, et pour compter à partir de la fin il existe :nth-last-of-type().

Important : le « type » désigne le nom de la balise, pas la classe. Le sélecteur .card:nth-of-type(2) ne sélectionne pas la deuxième carte. Il sélectionne l’élément avec la classe card qui est le deuxième élément de sa balise (par exemple le deuxième div) dans le parent. Pour compter par classe, utilisez :nth-child(2 of .card).

Syntaxe

#
Syntaxe
:nth-of-type( <nombre> | odd | even | An+B )

Arguments

#
  • 2

    span 2

    Le deuxième span, bien qu’il soit le troisième enfant du parent. Les éléments em ne sont pas comptés.
  • odd

    em 1, em 3

    Les éléments em impairs : le premier et le troisième. Chaque balise a son propre comptage.
  • even

    span 2, span 4

    Les éléments span pairs, sans tenir compte des em placés entre eux.
  • n+3

    span 3, span 4

    Du troisième élément span jusqu’au dernier.
  • :nth-child(2)

    rien

    Pour comparer, span:nth-child(2) ne sélectionne rien, car le deuxième enfant du parent est un em.

Arguments en pratique

#

2

Le deuxième span, bien qu’il soit le troisième enfant du parent. Les éléments em ne sont pas comptés.
span:nth-of-type(2) { background: #7c3aed; color: #fff; }

odd

Les éléments em impairs : le premier et le troisième. Chaque balise a son propre comptage.
em:nth-of-type(odd) { background: #7c3aed; color: #fff; }

even

Les éléments span pairs, sans tenir compte des em placés entre eux.
span:nth-of-type(even) { background: #7c3aed; color: #fff; }

n+3

Du troisième élément span jusqu’au dernier.
span:nth-of-type(n+3) { background: #7c3aed; color: #fff; }

:nth-child(2)

Pour comparer, span:nth-child(2) ne sélectionne rien, car le deuxième enfant du parent est un em.
span:nth-child(2) { background: #7c3aed; color: #fff; }

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 :nth-of-type() quand différentes balises se mélangent dans le parent, par exemple des paragraphes, des images et des titres.
  • Ne l’associez pas à une classe en espérant qu’elle compte les classes. Elle ne compte que les balises ; pour les classes, utilisez :nth-child(… of .classe).

Entrées associées

#

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