Il :nth-last-child
selettore consente di selezionare uno o più elementi in base al loro ordine di origine, secondo una formula. È definita nella specifica CSS Selectors Level 3 come una "pseudo-classe strutturale", nel senso che viene utilizzata per definire lo stile del contenuto in base alla sua relazione con gli elementi padre e fratello. Funziona allo stesso modo :nth-child
tranne che seleziona gli elementi a partire dalla parte inferiore dell'ordine di origine, non dalla parte superiore.
Supponiamo di avere un elenco con un numero sconosciuto di elementi e di voler evidenziare il penultimo elemento (in questo esempio esatto, il "Quarto elemento"):
- First Item
- Second Item
- Third Item
- Fourth Item
- Fifth Item
Piuttosto che fare qualcosa come aggiungere una classe all'elemento dell'elenco (ad esempio .highlight
) possiamo usare :nth-last-child
:
li ( background: slategrey; ) /* select the second-last item */ li:nth-last-child(2) ( background: lightslategrey; )
Come puoi vedere, :nth-last-child
accetta un argomento: questo può essere un singolo numero intero, le parole chiave "pari" o "dispari" o una formula. Se viene specificato un numero intero, viene selezionato un solo elemento, ma le parole chiave o una formula itereranno su tutti i figli dell'elemento padre e selezioneranno elementi corrispondenti, simili agli elementi di navigazione in un array in JavaScript. Le parole chiave "pari" e "dispari" sono semplici (2, 4, 6 ecc. O 1, 3, 5 rispettivamente). La formula è costruita utilizzando la sintassi an+b
, dove:
- "A" è un valore intero
- "N" è la lettera letterale "n"
- "+" È un operatore e può essere "+" o "-"
- "B" è un numero intero ed è richiesto se un operatore è incluso nella formula
È importante notare che questa formula è un'equazione e itera attraverso ogni elemento di pari livello, determinando quale sarà selezionato. La parte "n" della formula, se inclusa, rappresenta un insieme di numeri interi positivi crescenti (proprio come l'iterazione di un array). Nel nostro esempio precedente, abbiamo selezionato ogni secondo elemento con la formula 2n
, che ha funzionato perché ogni volta che un elemento è stato controllato, "n" è aumentato di uno (2 × 0, 2 × 1, 2 × 2, 2 × 3, ecc.). Se l'ordine di un elemento corrisponde al risultato dell'equazione, viene selezionato (2, 4, 6, ecc.). Per una spiegazione più approfondita della matematica coinvolta, leggi questo articolo.
Per illustrare ulteriormente, ecco alcuni esempi di :nth-last-of-type
selettori validi :
Dai un'occhiata a questa penna!
Fortunatamente, non devi sempre fare i conti da solo: ci sono diversi :nth-last-child
tester e generatori là fuori:
- CSS-Tricks Tester
- Tester di Lea Verou
Punti di interesse
:nth-last-child
itera attraverso gli elementi a partire dal fondo dell'ordine di origine. L'unica differenza tra esso ed:nth-child
è che quest'ultimo itera attraverso gli elementi a partire dall'inizio dell'ordine di origine.- Il
:nth-last-child
selettore è molto simile:nth-last-of-type
ma con una differenza fondamentale: è meno specifico. Nel nostro esempio sopra, produrranno lo stesso risultato perché stiamo iterando solo suli
elementi, ma se stessimo iterando su un gruppo più complesso di fratelli,:nth-last-child
proveremmo a far corrispondere tutti i fratelli, non solo i fratelli dello stesso tipo di elemento. Ciò rivela il potere di:nth-last-child
-it può selezionare qualsiasi elemento di pari livello in un arrangiamento, non solo gli elementi specificati prima dei due punti.
Supporto browser
Cromo | Safari | Firefox | musica lirica | IE | Android | iOS |
---|---|---|---|---|---|---|
Lavori | 3.2+ | Lavori | 9.5+ | 9+ | Lavori | Lavori |
:nth-last-child
è stato introdotto nel modulo 3 dei selettori CSS, il che significa che le vecchie versioni dei browser non lo supportano. Tuttavia, il supporto del browser moderno è impeccabile ei nuovi pseudo-selettori sono ampiamente utilizzati negli ambienti di produzione. Se è necessario il supporto di browser meno recenti, utilizzare polyfill per IE o utilizzare questi selettori in modi non critici, come consigliato dal miglioramento progressivo.