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 avecn
qui parcourt les entiers à partir de 0. Les valeurs fournies pourA
etB
doivent être des entiers<integer>
.
Syntaxe formelle
:nth-last-child( <nth> [ of <complex-selector-list> ]? )où
<nth> = <an-plus-b> | even | odd
<complex-selector-list> = <complex-selector>#où
<complex-selector> = <compound-selector> [ <combinator>? <compound-selector> ]*
où
<compound-selector> = [ <type-selector>? <subclass-selector>* [ <pseudo-element-selector> <pseudo-class-selector>* ]* ]!
<combinator> = '>' | '+' | '~' | [ '||' ]où
<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> ')'où
<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>? ']'où
<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)
ouspan: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
Ordinateur | Mobile | |||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|
:nth-last-child() | Chrome Support complet 4 | Edge Support complet 12 | Firefox Support complet 3.5 | IE Support complet 9 | Opera Support complet 9 | Safari Support complet 3.2 | WebView Android Support complet ≤37 | Chrome Android Support complet 18 | Firefox Android Support complet 4 | Opera Android Support complet 10.1 | Safari iOS Support complet 3.2 | Samsung Internet Android Support complet 1.0 |
Matches elements with no parent | Chrome Support complet 57 | Edge Aucun support Non | Firefox Support complet 52 | IE Aucun support Non | Opera Support complet 44 | Safari Aucun support Non | WebView Android Support complet 57 | Chrome Android Support complet 57 | Firefox Android Support complet 52 | Opera Android Support complet 43 | Safari iOS Aucun support Non | Samsung Internet Android Support complet 7.0 |
of <selector> syntax | Chrome
Aucun support
Non
| Edge Aucun support Non | Firefox
Aucun support
Non
| IE Aucun support Non | Opera Aucun support Non | Safari Support complet 9 | WebView Android Aucun support Non | Chrome Android Aucun support Non | Firefox Android
Aucun support
Non
| Opera Android Aucun support Non | Safari iOS Support complet 9 | Samsung 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.