:nth-child
Valijat võimaldab Teil valida ühe või mitu elementi, mis põhineb nende allikas järjekorras vastavalt valemile.
/* Select the first list item */ li:nth-child(1) ( ) /* Select the 5th list item */ li:nth-child(5) ( ) /* Select every other list item starting with first */ li:nth-child(odd) ( ) /* Select every 3rd list item starting with first */ li:nth-child(3n - 2) ( ) /* Select every 3rd list item starting with 2nd */ li:nth-child(3n - 1) ( ) /* Select every 3rd child item, as long as it has class "el" */ .el:nth-child(3n) ( )
CSS-i selektorite 3. taseme spetsifikatsioonis on see määratletud kui „struktuurne pseudoklass”, mis tähendab, et seda kasutatakse sisu kujundamiseks lähtuvalt selle suhetest vanema ja venna elementidega.
Oletame, et me ehitame CSS-i võrku ja tahame igal neljandal võrgumoodulil veeri eemaldada. Siin on see HTML:
One Two Three Four Five
Selle asemel, et lisada klass igale neljandale üksusele (nt .last
), võime kasutada järgmist :nth-child
:
.module:nth-child(4n) ( margin-right: 0; )
:nth-child
Valijat võtab argument: see võib olla üks täisarv, märksõnad even
, odd
või valem. Kui täisarv on määratud, valitakse ainult üks element, kuid märksõnad või valem iterteerivad kõik vanemelemendi alamvariandid ja valivad sobivad elemendid - sarnaselt JavaScripti massiivi üksuste navigeerimisega. Märksõnad "paaris" ja "paaritu" on otsekohesed (vastavalt 2, 4, 6 jne või 1, 3, 5). Valem koostatakse süntaksit kasutades an+b
, kus:
- “A” on täisarv
- “N” on sõna otsene täht “n”
- “+” On operaator ja võib olla kas “+” või “-”
- “B” on täisarv ja see on vajalik, kui valemisse on lisatud operaator
Oluline on märkida, et see valem on võrrand ja kordub läbi iga õe-venna elemendi, määrates kindlaks, milline neist valitakse. Valemi „n” osa, kui see on lisatud, tähistab kasvavate positiivsete täisarvude komplekti (täpselt nagu massiivi kaudu kordamine). Meie ülaltoodud näites valisime valemiga iga neljanda elemendi 4n
, mis toimis, kuna iga elemendi kontrollimisel kasvas n väärtus ühe võrra (4 × 0, 4 × 1, 4 × 2, 4 × 3 jne). Kui elemendi järjestus vastab võrrandi tulemusele, valitakse see (4, 8, 12 jne). Asjakohase matemaatika põhjalikuma selgituse saamiseks lugege seda artiklit.
Edasiseks illustreerimiseks on siin mõned näited kehtivatest :nth-child
valijatest:
Õnneks ei pea te alati matemaatikat ise tegema - seal on mitu :nth-child
testijat ja generaatorit:
- CSS-trikkide testija
- Lea Verou testija
: n-nd laps (an + b)
Seal on vähe tuntud filter, millele saab :nth-child
vastavalt CSS Selorsi spetsifikatsioonile lisada: Võimalus valida :nth-child
elementide alamhulga of
vormingut kasutades . Oletame, et teil on segasisu loend: mõnel on klass .video
, mõnel klass .picture
ja soovite valida kolm esimest pilti. Saate seda teha filtriga “of” nii:
:nth-child(-n+3 of .picture) ( /* Selects the first 3 elements applied not to ALL children but only to those matching .picture */ )
Pange tähele, et see erineb valija lisamisest otse :nth-child
valijale:
.picture:nth-child(-n+3) ( /* Not the same! This applies to elements matching .picture which _also_ match :nth-child(-n+3) */ )
See võib veidi segadusse ajada, nii et näide võib aidata erinevust illustreerida:
Brauseri tugi filtrile “of” on väga piiratud: alates sellest kirjutamisest toetas süntaksi ainult Safari. Lemmikbrauseri oleku kontrollimiseks on siin järgmised probleemid, mis on seotud :nth-child(an+b of s)
:
- Firefox: n-nda lapse tugi (An + B selektsiooni)
- Chrome: rakendus: n-nda laps (S + an + b)
Huvipunktid
:nth-child
itereerub elementide kaudu, mis algavad lähtekorra ülaosast. Ainus erinevus selle vahel:nth-last-child
on see, et viimane itereerub elementide kaudu, mis algavad lähtekorra alt.- Esimese
n
arvu elementide valimise süntaks on natuke vastuoluline. Alustate-n
pluss positiivse arvu elementidega, mille soovite valida. Näiteksli:nth-child(-n+3)
valib esimesed 3li
elementi. :nth-child
Valijat on väga sarnane:nth-of-type
, kuid üks kriitiline erinevus: see on vähem spetsiifilised. Meie ülaltoodud näites annaksid nad sama tulemuse, kuna me kordame ainult.module
elemente, kuid kui me kordaksime keerukama õdede-vendade rühma üle,:nth-child
siis prooviksime sobitada kõik õed-vennad, mitte ainult sama tüüpi õed-vennad. See paljastab jõu, et:nth-child
see võib paigutusest valida mis tahes õe-venna elemendi, mitte ainult kooloni eel täpsustatud elemendid.
Brauseri tugi
Chrome | Safari | Firefox | Ooper | IE | Android | iOS |
---|---|---|---|---|---|---|
Ükskõik | 3,2+ | Ükskõik | 9,5+ | 9+ | Ükskõik | Ükskõik |
:nth-child
võeti kasutusele CSS Selektorite moodulis 3, mis tähendab, et brauserite vanad versioonid seda ei toeta. Kuid tänapäevane brauseritugi on laitmatu ning uusi pseudovalijaid kasutatakse tootmiskeskkondades laialdaselt. Kui vajate vanemat brauserituge, siis kas IE jaoks täitke polüfill või kasutage neid valijaid mitte-kriitilistel viisidel, mida soovitatakse järk-järgult täiendada.