:nth-last-child

La pseudo-classe :nth-last-child permet de cibler les éléments qui possèdent an+b-1 nœud frères qui les suivent pour un même élément parent avec un indice n entier qui est incrémenté à partir de 0. Avec CSS3, il était nécessaire que l'élément ciblé ait un élément parent, cette restriction a été levée en CSS4.

/* Cible les éléments qui sont les 4e, 8e, 16e     */
/* 20e à partir de la fin, quel que soit leur type */
body: nth-last-child(4n) {
  background-color: lime;
}

Cette pseudo-classe fonctionne comme :nth-child mais cette fois-ci, le comptage s'effectue depuis la fin. Pour plus d'informations sur la syntaxe des arguments, voir :nth-child.

Syntaxe

La pseudo-classe nth-last-child prend un seul argument qui représente le motif de répétition des éléments ciblés, compté à partir de la fin.

Valeurs avec un mot-clé

odd
Représente les éléments dont la position est impaire par rapport à leurs voisins lorsqu'elle est comptée depuis la fin.
even
Représente les éléments dont la position est paire par rapport à leurs voisins lorsqu'elle est comptée depuis la fin.

Notation fonctionnelle

<An+B>
Représente les éléments dont la position, à partir de la fin, est la An+B-ième avec n qui parcourt les entiers à partir de 0. Les valeurs fournies pour A et B doivent être des entiers <integer>.

Syntaxe formelle

:nth-last-child( <nth> [ of <complex-selector-list> ]? )


<nth> = <an-plus-b> | even | odd
<complex-selector-list> = <complex-selector>#


<complex-selector> = <compound-selector> [ <combinator>? <compound-selector> ]*


<compound-selector> = [ <type-selector>? <subclass-selector>* [ <pseudo-element-selector> <pseudo-class-selector>* ]* ]!
<combinator> = '>' | '+' | '~' | [ '||' ]


<type-selector> = <wq-name> | <ns-prefix>? '*'
<subclass-selector> = <id-selector> | <class-selector> | <attribute-selector> | <pseudo-class-selector>
<pseudo-element-selector> = ':' <pseudo-class-selector>
<pseudo-class-selector> = ':' <ident-token> | ':' <function-token> <any-value> ')'


<wq-name> = <ns-prefix>? <ident-token>
<ns-prefix> = [ <ident-token> | '*' ]? |
<id-selector> = <hash-token>
<class-selector> = '.' <ident-token>
<attribute-selector> = '[' <wq-name> ']' | '[' <wq-name> <attr-matcher> [ <string-token> | <ident-token> ] <attr-modifier>? ']'


<attr-matcher> = [ '~' | | | '^' | '$' | '*' ]? '='
<attr-modifier> = i | s

Exemples

Exemples

tr:nth-last-child(-n+4)
Permettra de cibler les quatre dernières lignes d'un tableau.
span:nth-last-child(even) ou span:nth-last-child(2n)
Permettra de cibler tous les éléments <span> pairs en partant de la fin.

Exemple appliqué

CSS

table {
  border:1px solid blue;
}
tr:nth-last-child(-n+3) { /* les trois derniers enfants */
  background-color: lime;
}

HTML

<table>
  <tbody>
    <tr>
      <td>Première ligne</td>
    </tr>
    <tr>
       <td>Deuxième ligne</td>
    </tr>
    <tr>
       <td>Troisième ligne</td>
    </tr>
    <tr>
       <td>Quatrième ligne</td>
    </tr>
    <tr>
       <td>Sixième ligne</td>
    </tr>
  </tbody>
</table>

Résultat

Cas aux limites

n commence à zéro et le dernier élément commence à un, n et n+1 sélectionnent donc les mêmes éléments.

HTML

<table>
  <tbody>
    <tr>
      <td>Première ligne</td>
    </tr>
    <tr>
      <td>Deuxième ligne</td>
    </tr>
    <tr>
      <td>Troisième ligne</td>
    </tr>
  </tbody>
</table>

CSS

tr:nth-last-child(n) {
  background-color: lightgray;
}

tr:nth-last-child(n+1){
  font-weight: 600;
}

Résultat

Mise en forme selon le nombre d’éléments

Il est possible d'utiliser les compteurs pour mettre en forme une liste selon le nombre d'éléments qu'elle contient. Dans l'exemple qui suit, on met les éléments de la liste en rouge si celle-ci contient au moins trois éléments. Pour cela, on combine la pseudo-classe nth-last-child et le sélecteur de voisins généraux (general sibling combinator).

HTML

<h4>Une liste avec quatre éléments :</h4>
<ol>
  <li>Un</li>
  <li>Deux</li>
  <li>Trois</li>
  <li>Quatre</li>
</ol>

<h4>Une liste avec deux éléments :</h4>
<ol>
  <li>Un</li>
  <li>Deux</li>
</ol>

CSS

li:nth-last-child(n+3),
li:nth-last-child(n+3) ~ li {
  color: red;
}

Résultat

Spécifications

Spécification État Commentaires
Selectors Level 4
La définition de ':nth-last-child' dans cette spécification.
Version de travail Les éléments ciblés peuvent ne pas avoir d'élément parent.
Selectors Level 3
La définition de ':nth-last-child' dans cette spécification.
Recommendation Définition initiale.

Compatibilité des navigateurs

Update compatibility data on GitHub
OrdinateurMobile
ChromeEdgeFirefoxInternet ExplorerOperaSafariWebview AndroidChrome pour AndroidFirefox pour AndroidOpera pour AndroidSafari sur iOSSamsung Internet
:nth-last-child()Chrome Support complet 4Edge Support complet 12Firefox Support complet 3.5IE Support complet 9Opera Support complet 9Safari Support complet 3.2WebView Android Support complet ≤37Chrome Android Support complet 18Firefox Android Support complet 4Opera Android Support complet 10.1Safari iOS Support complet 3.2Samsung Internet Android Support complet 1.0
Matches elements with no parentChrome Support complet 57Edge Aucun support NonFirefox Support complet 52IE Aucun support NonOpera Support complet 44Safari Aucun support NonWebView Android Support complet 57Chrome Android Support complet 57Firefox Android Support complet 52Opera Android Support complet 43Safari iOS Aucun support NonSamsung Internet Android Support complet 7.0
of <selector> syntaxChrome Aucun support Non
Notes
Aucun support Non
Notes
Notes See bug 304163.
Edge Aucun support NonFirefox Aucun support Non
Notes
Aucun support Non
Notes
Notes See bug 854148.
IE Aucun support NonOpera Aucun support NonSafari Support complet 9WebView Android Aucun support NonChrome Android Aucun support NonFirefox Android Aucun support Non
Notes
Aucun support Non
Notes
Notes See bug 854148.
Opera Android Aucun support NonSafari iOS Support complet 9Samsung Internet Android Aucun support Non

Légende

Support complet  
Support complet
Aucun support  
Aucun support
Voir les notes d'implémentation.
Voir les notes d'implémentation.

Voir aussi