Ο :nth-last-child
επιλογέας σάς επιτρέπει να επιλέξετε ένα ή περισσότερα στοιχεία με βάση την αρχική τους σειρά, σύμφωνα με έναν τύπο. Ορίζεται στις προδιαγραφές CSS Selectors Level 3 ως «δομή ψευδο-κλάσης», που σημαίνει ότι χρησιμοποιείται για το στυλ του περιεχομένου με βάση τη σχέση του με στοιχεία γονέα και αδέλφια. Λειτουργεί το ίδιο όπως :nth-child
εκτός εάν επιλέγει στοιχεία που ξεκινούν από το κάτω μέρος της παραγγελίας προέλευσης, όχι από την κορυφή.
Ας υποθέσουμε ότι έχουμε μια λίστα με άγνωστο αριθμό αντικειμένων και θέλουμε να επισημάνουμε το στοιχείο από το δεύτερο έως το τελευταίο (σε αυτό το ακριβές παράδειγμα, το "Τέταρτο στοιχείο"):
- First Item
- Second Item
- Third Item
- Fourth Item
- Fifth Item
Αντί να κάνουμε κάτι όπως να προσθέσουμε μια τάξη στο στοιχείο λίστας (π.χ. .highlight
) μπορούμε να χρησιμοποιήσουμε :nth-last-child
:
li ( background: slategrey; ) /* select the second-last item */ li:nth-last-child(2) ( background: lightslategrey; )
Όπως μπορείτε να δείτε, :nth-last-child
παίρνει ένα επιχείρημα: αυτό μπορεί να είναι ένας ενιαίος ακέραιος, οι λέξεις-κλειδιά "ζυγό" ή "περίεργο" ή ένας τύπος. Εάν καθοριστεί ένας ακέραιος αριθμός επιλέγεται μόνο ένα στοιχείο - αλλά οι λέξεις-κλειδιά ή ένας τύπος θα επαναληφθούν σε όλα τα παιδιά του γονικού στοιχείου και θα επιλέξουν ταιριαστά στοιχεία - παρόμοια με τα στοιχεία πλοήγησης σε έναν πίνακα σε JavaScript. Οι λέξεις-κλειδιά «ζυγό» και «περίεργο» είναι απλές (2, 4, 6 κ.λπ. ή 1, 3, 5 αντίστοιχα). Ο τύπος κατασκευάζεται χρησιμοποιώντας τη σύνταξη an+b
, όπου:
- Το "a" είναι μια ακέραια τιμή
- "N" είναι το κυριολεκτικό γράμμα "n"
- Το "+" είναι χειριστής και μπορεί να είναι "+" ή "-"
- Το "b" είναι ακέραιος και απαιτείται εάν ένας χειριστής συμπεριλαμβάνεται στον τύπο
Είναι σημαντικό να σημειωθεί ότι αυτός ο τύπος είναι μια εξίσωση και επαναλαμβάνει κάθε στοιχείο αδελφού, καθορίζοντας ποιο θα επιλεγεί. Το τμήμα "n" του τύπου, εάν περιλαμβάνεται, αντιπροσωπεύει ένα σύνολο αυξανόμενων θετικών ακέραιων αριθμών (ακριβώς όπως η επανάληψη μέσω πίνακα) Στο παραπάνω παράδειγμά μας, επιλέξαμε κάθε δεύτερο στοιχείο με τον τύπο 2n
, ο οποίος λειτούργησε επειδή κάθε φορά που ένα στοιχείο ελέγχονταν, το "n" αυξήθηκε κατά ένα (2 × 0, 2 × 1, 2 × 2, 2 × 3, κ.λπ.). Εάν η σειρά ενός στοιχείου ταιριάζει με το αποτέλεσμα της εξίσωσης, επιλέγεται (2, 4, 6, κ.λπ.). Για μια πιο εμπεριστατωμένη εξήγηση των σχετικών μαθηματικών, διαβάστε αυτό το άρθρο.
Για να επεξηγήσουμε περαιτέρω, εδώ είναι μερικά παραδείγματα έγκυρων :nth-last-of-type
επιλογών:
Δείτε αυτό το στυλό!
Ευτυχώς, δεν χρειάζεται να κάνετε τα μαθηματικά μόνοι σας - υπάρχουν αρκετοί :nth-last-child
δοκιμαστές και γεννήτριες εκεί έξω:
- Δοκιμαστής CSS-Tricks
- Ο Tester της Lea Verou
Σημεία ενδιαφέροντος
:nth-last-child
επαναλαμβάνεται μέσω στοιχείων που ξεκινούν από το κάτω μέρος της παραγγελίας προέλευσης. Η μόνη διαφορά μεταξύ αυτού και:nth-child
είναι ότι το τελευταίο επαναλαμβάνει στοιχεία που ξεκινούν από την κορυφή της αρχικής σειράς.- Ο
:nth-last-child
επιλογέας είναι πολύ παρόμοιος με:nth-last-of-type
αλλά με μία κρίσιμη διαφορά: είναι λιγότερο συγκεκριμένος. Στο παραπάνω παράδειγμά μας θα παρήγαγαν το ίδιο αποτέλεσμα επειδή επαναλαμβάνουμε μόνοli
στοιχεία, αλλά αν επρόκειτο για μια πιο περίπλοκη ομάδα αδελφών,:nth-last-child
θα προσπαθούσαμε να ταιριάξουμε όλα τα αδέλφια, όχι μόνο τα αδέλφια του ίδιου τύπου στοιχείου. Αυτό αποκαλύπτει τη δύναμη του:nth-last-child
-it μπορεί να επιλέξει οποιοδήποτε στοιχείο αδελφού σε μια διάταξη, όχι μόνο στοιχεία που καθορίζονται πριν από το άνω και κάτω τελεία.
Υποστήριξη προγράμματος περιήγησης
Χρώμιο | Σαφάρι | Firefox | ΛΥΡΙΚΗ ΣΚΗΝΗ | ΙΕ | Android | iOS |
---|---|---|---|---|---|---|
Εργα | 3.2+ | Εργα | 9.5+ | 9+ | Εργα | Εργα |
:nth-last-child
εισήχθη στο CSS Selectors Module 3, που σημαίνει ότι οι παλιές εκδόσεις των προγραμμάτων περιήγησης δεν το υποστηρίζουν. Ωστόσο, η σύγχρονη υποστήριξη του προγράμματος περιήγησης είναι άψογη και οι νέοι ψευδο-επιλογείς χρησιμοποιούνται ευρέως σε περιβάλλοντα παραγωγής. Εάν χρειάζεστε παλαιότερη υποστήριξη προγράμματος περιήγησης, είτε polyfill για IE, είτε χρησιμοποιήστε αυτούς τους επιλογείς με μη κρίσιμους τρόπους á la προοδευτική βελτίωση, κάτι που συνιστάται.