Pseudoclase CSS: nth-child și nth-of-type. Cum să selectezi în css primul element al celui de-al N-lea copil părinte la fiecare al patrulea

03.04.2021 Știri

Pseudoclasele pot fi folosite pentru a selecta un anumit element dintr-o listă. În acest tutorial vom vorbi despre pseudo-clasa:nth-child, ce poți crea cu această pseudo-clasă și cum poate fi utilă. Pseudo-class:nth-child vă permite să selectați un grup de elemente cu proprietăți comune. Cel mai frecvent este folosit pentru a selecta elemente pare sau impare dintr-un grup. Este adesea folosit pentru a face ca o masă să arate ca o zebră, dând diferite culori de fundal rândurilor pare și impare.

O altă pseudo-clasă:nth-child vă permite să împărțiți elemente cu o proprietate comună în grupuri și apoi să selectați un element specific din fiecare grup folosind următoarea sintaxă:

Aici A determină numărul de elemente din grup și b determină ce element din grup va fi selectat.
dacă să folosiți valoarea 2n+1, apoi elementele vor fi împărțite în grupuri de câte două, iar primele elemente din fiecare grupă vor fi selectate, adică elemente cu un număr de serie impar. Dacă utilizați valoarea 2n+2, apoi elementele vor fi din nou împărțite în grupuri de câte două, dar acum vor fi selectate al doilea element din fiecare grup, adică elemente cu un număr de serie par.

Ca un alt exemplu pentru a înțelege pseudo-clasa:nth-child, îl vom folosi pentru a selecta fiecare al patrulea element, adică al patrulea, al optulea, al doisprezecelea, al șaisprezecelea etc. Pentru a face acest lucru, vom împărți elementele în grupuri de patru. și apoi selectați fiecare al patrulea element.

Mai jos este o listă de zece elemente și vom folosi pseudoclasele :nth-child, :first-child și :last-child pentru a selecta elementele pe care dorim să le evidențiem.

Folosind pseudoclasa CSS:nth-child pentru a selecta un singur element

Dând pseudo-class:nth-child o valoare ca număr, puteți alege ce copil al grupului să accesați:

Elementul 1
Elementul 2
Elementul 3
Elementul 4
Elementul 5
Elementul 6
Elementul 7
Elementul 8
Elementul 9
Elementul 10

Folosind pseudoclasa CSS:nth-child pentru a selecta toate elementele, cu excepția primelor cinci

Dacă dați pseudo-class:nth-child o valoare a formei n+ număr, puteți selecta toate elementele începând cu elementul cu acest număr de serie:

Elementul 1
Elementul 2
Elementul 3
Elementul 4
Elementul 5
Elementul 6
Elementul 7
Elementul 8
Elementul 9
Elementul 10

Folosind pseudoclasa CSS:nth-child pentru a selecta doar primele cinci elemente

Când setăm pseudo-class:nth-child la o valoare negativă n+ număr, selectăm toate elementele situate înaintea elementului cu acest număr de serie:

Elementul 1
Elementul 2
Elementul 3
Elementul 4
Elementul 5
Elementul 6
Elementul 7
Elementul 8
Elementul 9
Elementul 10

Folosind pseudoclasa CSS:nth-child pentru a selecta fiecare al treilea element

Pseudo-clasa:nth-child poate fi folosit pentru a selecta o secvență de elemente prin specificarea câte elemente sunt în secvență și numărul ordinal al elementului dorit. Dacă setați valoarea 3n+1, fiecare al treilea element va fi selectat, începând cu primul:

Elementul 1
Elementul 2
Elementul 3
Elementul 4
Elementul 5
Elementul 6
Elementul 7
Elementul 8
Elementul 9
Elementul 10

Folosind pseudoclasa CSS:nth-child pentru a selecta doar elemente ciudate

Puteți seta pseudo-class:nth-child la impar pentru a selecta toate elementele cu numere de secvență impare. Adică elementele întâi, al treilea, al cincilea, al șaptelea, al nouălea etc. Acest lucru este foarte convenabil pentru setarea culorilor pentru rândurile adiacente de masă.

Elementul 1
Elementul 2
Elementul 3
Elementul 4
Elementul 5
Elementul 6
Elementul 7
Elementul 8
Elementul 9
Elementul 10

Folosind pseudoclasa CSS:nth-child pentru a selecta doar elemente cu numere pare

Acest exemplu arată același lucru ca ultimul, dar de data aceasta sunt selectate toate elementele cu numere pare. Adică al doilea, al patrulea, al șaselea, al optulea, al zecelea elemente etc.:

Elementul 1
Elementul 2
Elementul 3
Elementul 4
Elementul 5
Elementul 6
Elementul 7
Elementul 8
Elementul 9
Elementul 10

Folosind pseudo-clasa CSS:first-child pentru a selecta primul element

O altă pseudo-clasă: primul copil va selecta primul element:

Elementul 1
Elementul 2
Elementul 3
Elementul 4
Elementul 5
Elementul 6
Elementul 7
Elementul 8
Elementul 9
Elementul 10

Folosind pseudoclasa CSS:last-child pentru a selecta ultimul element

Pe lângă pseudo-class:first-child, există o pseudo-class:last-child, care va selecta ultimul element dintr-un grup de elemente:

Elementul 1
Elementul 2
Elementul 3
Elementul 4
Elementul 5
Elementul 6
Elementul 7
Elementul 8
Elementul 9
Elementul 10

Folosind pseudoclasa CSS:nth-last-child pentru a selecta penulul element

De asemenea, puteți utiliza pseudo-clasa:nth-last-child, care combină capacitățile pseudo-claselor:last-child și:nth-child pentru a începe numărarea elementelor de la sfârșit. Adică, puteți selecta un element numărând numerele de serie de la sfârșitul grupului, de exemplu, într-un grup de zece elemente puteți selecta al doilea element de la sfârșit:

Elementul 1
Elementul 2
Elementul 3
Elementul 4
Elementul 5
Elementul 6
Elementul 7
Elementul 8
Elementul 9
Elementul 10


Explorați capacitățile pseudo-class:nth-child folosind „nth-child Constructor”.

Uneori, atunci când proiectați pagini, doriți să „automatizați” puțin stilurile CSS.

Una dintre problemele pe care le puteți întâmpina este cum să selectați toate elementele pare ale unei liste, tabel, bloc etc. elemente de pe o pagină web.

Puteți, desigur, să atribuiți o anumită clasă fiecărui element par, dar acest lucru este bine atunci când nu există prea multe elemente. Adăugarea manuală a tuturor acestor lucruri nu este întotdeauna posibilă și nu este întotdeauna de dorit.

Aș dori să vorbesc despre o metodă care se bazează pe utilizarea unei pseudo-clase al-lea copil.

Această pseudo-clasă a fost introdusă în CSS3, deci fiți conștienți de faptul că este posibil să nu funcționeze pe browsere mai vechi. Dar posibilitățile care apar la utilizarea lui sunt foarte impresionante.

O modalitate de a utiliza această pseudo-clasă în practică este de a selecta toate elementele cu numere pare care se află în arborele documentului HTML.

Există mai multe opțiuni pentru cum poate fi implementat acest lucru. Să ne uităm la ele.


Opțiunea 1. Utilizați parametrul par.

Să presupunem că avem o listă ca aceasta:

  • Elementul 1
  • Elementul 2
  • Elementul 3
  • Elementul 4
  • Elementul 5
  • Elementul 6
  • Elementul 7
  • Elementul 8
  • Elementul 9
  • Elementul 10

Pentru a evidenția toate elementele cu numere pare din această listă în roșu, trebuie să adăugați un stil CSS:

Ul li:nth-child(even) (culoare:#F00;)

Ca rezultat, veți obține următoarea imagine.

Even este un cuvânt cheie care înseamnă că vor fi selectate elemente chiar.

O soluție frumoasă, nu-i așa? Doar o linie de stiluri CSS.

Opțiunea 2. Utilizați parametrul 2n.

Această opțiune poate fi folosită ca alternativă. O valoare de 2n înseamnă că fiecare al doilea element va fi selectat și fiecare al doilea element este în esență par.

Iată cum poate fi folosit pentru mese.

Coloana 1 Coloana 2&.
t;td>6
7 7
8 8
9 9

Și stiluri CSS

Tr:nth-child(2n) (culoare:#F00;)

Textul din fiecare element even tr este acum roșu.

webgyry.info

Suport pentru browser

12.0+ 9.0+ 3.5+ 4.0+ 9.6+ 3.2+

Descriere

Pseudo-class:nth-child() selectează elementele copil pe baza poziției lor (numărul ordinal) în cadrul elementului părinte.

Sintaxă

:nth-child(number) (proprietati)

Un argument este indicat în paranteze, care poate fi un număr, un cuvânt cheie sau o expresie numerică sub forma an+b, unde a și b sunt numere întregi, iar n este un numărător care preia automat valori întregi nenegative din 0 și mai mult: 0, 1, 2, 3,….

Folosind un număr, puteți specifica numărul ordinal specific al elementului copil căruia doriți să aplicați stilul:

/* selectează al treilea element din listă */ ul li:nth-child(3) (culoare: roșu; )

Există două cuvinte cheie posibile: impar (impar) și par (par). Acestea vă permit să selectați elemente copil cu numere ordinale pare sau impare:

/* selectează toate rândurile din tabel cu un număr de ordine impar */ tr:nth-child(odd) td (culoare de fundal: argintiu; )

Partea „an” a expresiei calculează pozițiile elementelor copil folosind următoarea formulă: număr*n, deoarece n este un numărător, valorile numerice care încep de la 0 sunt înlocuite automat în timpul calculului și apoi de fiecare dată când valoarea crește cu unul mai mult decât precedentul: 0,1,2 ,3 etc. Să presupunem că trebuie să selectăm fiecare al treilea element din listă, pentru aceasta trebuie să scriem doar 3n:


ul li:nth-child(3n) (culoare: roșu; )


3 * 0 = 0 - nimic selectat
3 * 1 = al 3-lea punct
3 * 2 = al 6-lea punct
etc.

Partea „b” a expresiei vă permite să specificați din ce poziție ar trebui să înceapă selecția elementelor. Să presupunem că trebuie să selectăm fiecare al treilea element din listă pornind de la al doilea element din listă, pentru aceasta trebuie să scriem următoarea expresie 3n + 2:

Ul li:nth-child(3n + 2) (culoare: roșu; )

Astfel, elementele din listă vor fi selectate folosind următoarea formulă:
(3 * 0) + 2 = al 2-lea articol
(3 * 1) + 2 = al 5-lea punct
(3 * 2) + 2 = al 8-lea punct
etc.

Exemplu:

Exemplu
text
text
text
text
text
text
text
text
text
text


Rezultatul acestui exemplu:

puzzleweb.ru

Suport pentru browser

Selector: al-lea copil
- unul dintre puținii selectori CSS care este aproape complet acceptat în browsere moderneși nu este absolut acceptat în IE, chiar și în IE8. Deci, atunci când vine vorba de utilizare, iar rezultatul final este realizat folosind tehnologia de îmbunătățire progresivă, îl puteți folosi în siguranță pentru unele elemente de design, cum ar fi colorarea rândurilor de tabele. Cu toate acestea, nu trebuie utilizat în cazuri mai grave. De exemplu, bazându-te pe acesta într-un aspect al site-ului sau eliminarea marginii din dreapta din fiecare al treilea bloc într-o grilă de trei câte trei pentru a le face să se potrivească într-un rând.

Salvarea aici este biblioteca jQuery, care implementează suport pentru toți selectoarele CSS, inclusiv:nth-child , chiar și în Internet Explorer.

web-standards.ru

Semnificație și aplicare

Pseudo-clasă :nth-child() vă permite să selectați elemente copil într-un element părinte în funcție de plasarea acestora (număr ordinal).

Utilizarea acestei pseudoclase este larg răspândită; vă permite să alternați stiluri de rând în tabele, liste, să stilați o combinație de elemente copil și așa mai departe.

Sintaxa CSS:

:nth-child(număr | cuvânt cheie | formulă)(bloc de anunțuri; )

Exemplu de utilizare

Stilizare după numărul de serie

Să ne uităm la un exemplu în care vă confruntați cu sarcina de a schimba stilul pentru toate elementele care sunt evidențiate în portocaliu în imagine:


Ce au în comun elementele evidențiate în imagine? Ceea ce au în comun este că sunt evidențiate în portocaliu. Amuzant? Nu te gândi. Au încă ceva în comun, elemente

  • sunt al doilea copil al părinților lor și elementul

    poate fi de asemenea numărat, iar numărul său ordinal va fi al treilea (al treilea copil al părintelui său ). Pentru a stila aceste elemente trebuie să folosim o pseudo clasă : al-lea-copil.

    Să trecem la un exemplu:

    Pseudo-clasă: primul copil

    Primul titlu h2 al etichetei body

    • unu
    • Două
    • Trei

    Al doilea titlu h2 al etichetei corporale

    Primul titlu h2 al etichetei articolului

    • unu
    • Două
    • Trei


    : al-lea-copil am stilizat elementele

    Și
  • , care au un element fiu ordinal specific în elementele lor părinte.

    Rezultatul exemplului nostru:


    Stilizarea după cuvinte cheie

    Ca valoare pseudo-clasă :nth-child() poate fi nu numai numărul de serie al elementelor copil care trebuie stilate, ci și cuvinte cheie care pot defini un întreg grup de elemente. Puteți utiliza două valori pentru cuvântul cheie:

    • par (elementele pare)
    • impar (elementele impare)

    Stilizarea elementelor folosind cuvinte cheie are o aplicație foarte largă, deoarece puteți selecta și stiliza cu ușurință elementele secundare pare sau impare dintr-un document.

    Să creăm două tabele simple cu clase de stil diferite ca exemplu și să vizualizăm diferența în utilizarea valorilor cuvintelor cheie pseudo-clase : al-lea-copil pentru elementul HTML care definește un rând de tabel:

    Aranjarea copiilor pari și impari

    Valoare par (par)
    1 liniePoziţieCantitate
    2 rând
    3 rând
    4 linii
    5 rând
    Valoare impară
    1 liniePoziţieCantitate
    2 rând
    3 rând
    4 linii
    5 rând


    În acest exemplu, folosind pseudo-clasa :nth-child() noi am stilizat chiar rândurile primului tabel (elementele ) Și ciudatîn cel de-al doilea tabel.


    Stilizarea folosind o formulă matematică simplă

    Pseudo-clasă :nth-child() vă permite să selectați nu numai elemente pare, impare sau copil cu un anumit număr de serie, ci și elemente copil specificate printr-o formulă matematică elementară. Să ne uităm la următorul selector și să înțelegem ce înseamnă această intrare:

    td:nth-child(4n+2)

    ) în interiorul liniei, începând de la a doua celulă de tabel, se va stiliza:

    • 4n– fiecare al patrulea element.
    • 2

    În formule, este posibil să se utilizeze valori cu un semn de scădere, dar acest lucru nu este de obicei necesar:

    td:nth-child(4n-1)(culoare de fundal: albastru deschis; /* setează culoarea de fundal */ )

    Acest selector înseamnă că fiecare a patra celulă din tabel ( ) în interiorul rândului, începând de la a treia celulă a tabelului (nu există -1 celulă din motive obiective, deci există o deplasare la stânga), vor fi stilizate:

    • 4n– fiecare al patrulea element.
    • -1 – cu ce element să începem.

    Să ne uităm la un exemplu de utilizare:

    Stilizarea elementelor copil folosind o formulă matematică

    1234567891011121314
    2
    3
    4


    În acest exemplu, folosind pseudo-clasa:nth-child, am selectat și stilizat fiecare a patra celulă din tabel ( ) în interiorul rândului, începând de la a doua celulă de tabel. Rezultatul exemplului nostru:


    basicweb.ru

    Cum funcționează selectorul Nth-child CSS

    În CSS există un selector, un pseudo-selector pentru a fi mai precis, numit nth-child. Un exemplu de utilizare a acestuia:

    Ul li:nth-child(3n+3) (culoare: #ccc; )

    CSS-ul de mai sus face următoarele: Aplicați stilul fiecărui al treilea element dintr-o listă neordonată. Și anume al 3-lea, al 6-lea, al 9-lea, al 12-lea etc. Dar cum funcționează? Și, de asemenea, ce beneficii pot fi obținute prin utilizarea nth-child?

    Sensul principal este în expresia dintre paranteze. nth-child acceptă două cuvinte cheie: chiar(chiar) și ciudat(ciudat). Sensul lor este absolut clar. Par selectează elementele pare (2, 4, 6), impar selectează elementele impare (1, 3, 5).

    După cum se arată în exemplul de mai sus, nth-child poate procesa expresii. Care este cea mai simplă expresie posibilă? Doar un număr. Dacă scrieți orice număr între paranteze, va fi selectat un singur element. De exemplu, să selectăm al cincilea element al listei:

    Ul li:nth-child(5) (culoare: #ccc; )

    Să revenim la primul nostru exemplu, în care am folosit expresia (3n+3). Cum lucrează? De ce selectează fiecare al treilea element? Întregul punct se află în variabila n. Acceptă valori întregi de la zero și mai sus. Să aruncăm o privire mai atentă:

    (3 x 0) + 3 = 3 = al 3-lea element (3 x 1) + 3 = 6 = al 6-lea element (3 x 2) + 3 = 9 = al 9-lea element etc.

    Acum să încercăm următoarea expresie: nth-child(2n+1) :

    (2 x 0) + 1 = 1 = primul element (2 x 1) + 1 = 3 = al 3-lea element (2 x 2) + 1 = 5 = al 5-lea element etc.

    Ca rezultat, am obținut același lucru ca și în cazul impar, deci nu este nevoie să folosim o astfel de expresie des. Mai mult, primul nostru exemplu poate fi, de asemenea, simplificat și folosit în locul expresiei originale (3n+3), expresie (3n):

    (3 x 0) + 0 = 0 = fără potrivire (3 x 1) + 0 = 3 = al 3-lea element (3 x 2) + 0 = 6 = al 6-lea element etc.

    După cum puteți vedea, rezultatul este același, dar nu trebuie să scrieți „+3”. Putem folosi și valori negative în expresie. De exemplu, 4n-1:

    (4 x 0) - 1 = -1 = fără potrivire (4 x 1) - 1 = 3 = al 3-lea element (4 x 2) - 1 = 7 = al 7-lea element etc.

    Utilizarea valorilor negative pentru coeficientul lui n pare puțin ciudat, deoarece dacă rezultatul este negativ, nu se va găsi nicio potrivire. Va trebui să schimbați în mod constant expresia pentru a adăuga elemente pozitive. După cum se dovedește, această abordare este foarte convenabilă pentru selectarea primelor n elemente. Să ne uităm la un exemplu cu „-n+3”:

    0 + 3 = 3 = al treilea element -1 + 3 = 2 = al doilea element -2 + 3 = 1 = primul element -3 + 3 = 0 = nu se potrivește

    Compatibilitate între browsere

    nth-child este unul dintre acele atribute nefericite care este complet cross-browser, cu excepția zeroului absolut în IE, chiar și versiunea 8. Prin urmare, atunci când vine vorba de utilizare, dacă rezultatul așteptat este un fel de efect vizual (de exemplu, colorarea rândurilor unui anumit tabel), atunci aceasta este abordarea ideală. Dar probabil că nu ar trebui să-l utilizați pentru ceva mai important care ar putea afecta, de exemplu, corectitudinea aspectului.

    Desigur, dacă utilizați jQuery, atunci nu trebuie să vă faceți griji pentru acest lucru, deoarece jQuery funcționează chiar și în Internet Explorer.

    Și, în sfârșit

    Puteți juca cu diferite expresii de selectare pe pagina exemplu.

    www.css-tricks.ru

    Valori

    Sens Descriere
    Număr Un număr pozitiv care începe de la 1. Specifică numărul elementului pe care dorim să-l accesăm. Numerotarea elementelor începe de la 1.
    ciudat Elemente ciudate.
    chiar Chiar și elemente.
    Expresie Puteți crea expresii speciale cu litera n, care reprezintă toate numerele întregi de la zero (nu de la unu!) catre infinit. Deci, 2n înseamnă toate numerele pare (începând cu a doua). Cum să înțelegi asta? Inlocuim succesiv numerele de la 0 in n si asa mai departe: daca n = 0, atunci 2n va da 0 - nu exista un astfel de element ( numerotarea elementelor începând de la 1!), dacă n = 1, atunci 2n dă 2 - al doilea element, dacă n = 2, 2n dă 4 - al patrulea element. Dacă scrieți 3n, va fi fiecare al treilea element (începând de la al treilea!), și așa mai departe.

    Exemple

    Exemplu

    În acest exemplu, vom face roșu culoarea li, care este al 4-lea descendent părintele său (al patrulea în interiorul ol):

    Rezultatul executării codului:

    Exemplu

    Acum să facem totul roșu chiar li:

    Rezultatul executării codului:

    Exemplu

    Acum să facem totul roșu ciudat li:

    Rezultatul executării codului:

    Exemplu

    Acum să-l facem roșu fiecare treime li (începând cu a treia):

    Rezultatul executării codului:

    Exemplu

    Selectorul poate specifica o serie de elemente. Să presupunem că aveți o listă de 20 de elemente și trebuie să selectați elemente de la 7 la 14 inclusiv. O poți face astfel:

    Rezultatul executării codului:

    cod.mu

    Sintaxă

    Pseudoclasa a n-a-copil este specificată cu un singur argument, care reprezintă modelul pentru potrivirea elementelor.

    Valorile cuvintelor cheie

    impar Reprezintă elemente a căror poziție numerică într-o serie de frați este impară: 1, 3, 5 etc. even Reprezintă elemente a căror poziţie numerică într-o serie de fraţi este pară: 2, 4, 6 etc.

    Notație funcțională

    Reprezintă elemente a căror poziție numerică într-o serie de frați se potrivește cu modelul An+B , pentru fiecare număr întreg pozitiv sau valoare zero a lui n . Indicele primului element este 1 . Valorile A și B trebuie să fie ambele s.

    Sintaxă formală

    :al-al-lea copil( [de ]?)

    Unde
    = chiar ciudat
    =

    Unde
    =

    Unde
    =
    = ">" " " "~" " "

    Unde
    =

    Există un astfel de selector, sau mai degrabă o pseudo-clasă, numită:nth-child . Iată un exemplu de utilizare a acestuia:

    UL LI:nth-child(3n+3) (culoare:#CCC; )

    Ce face codul CSS de mai sus? Selectează fiecare al treilea element din lista cu marcatori: acesta este al 3-lea, al 6-lea, al 9-lea, al 12-lea etc. Să vedem exact cum funcționează această expresie și ce altceva poți face cu :nth-child .

    Totul depinde de ce este între paranteze. Selectorul:nth-child acceptă două cuvinte cheie: par și impar. Totul este simplu aici: par selectează elemente pare, cum ar fi al 2-lea, al 4-lea, al 6-lea etc., iar impar selectează elemente impare, cum ar fi 1-a, 3-a, 5-a etc. d.

    După cum puteți vedea din primul exemplu, :nth-child ia și expresii ca parametru. Inclusiv cele mai simple ecuații, cu alte cuvinte, doar numere. Dacă le puneți între paranteze, va fi selectat un singur element cu numărul corespunzător. De exemplu, iată cum să selectați doar al cincilea element:

    UL LI:nth-child(5) (culoare:#CCC; )

    Cu toate acestea, să revenim la 3n+3 din primul exemplu. Cum funcționează și de ce este selectat fiecare al treilea element? Trucul este să înțelegem variabila n și ecuația algebrică dată. Gândiți-vă la n ca la o mulțime de numere întregi bazate pe zero. Apoi completează ecuația. Deci 3n este 3×n, iar întreaga ecuație împreună este (3×n)+3. Acum, înlocuind numere mai mari sau egale cu zero în loc de n, obținem:

    • (3 × 0) + 3 = 3 = al 3-lea element
    • (3 × 1) + 3 = 6 = al 6-lea element
    • (3 × 2) + 3 = 9 = al 9-lea element etc.

    Dar:nth-child(2n+1)?

    • (2 × 0) + 1 = 1 = primul element
    • (2 × 1) + 1 = 3 = al 3-lea element
    • (2 × 2) + 1 = 5 = al 5-lea element etc.

    Bine, oprește-te! Acesta este la fel cu ciudat. Atunci poate că nu ar trebui să folosim această expresie? Dar nu complicăm prea mult primul nostru exemplu? Dacă în loc de 3n+3 scriem 3n+0 sau chiar mai simplu 3n?

    • (3 × 0) = 0 = nimic
    • (3 × 1) = 3 = al 3-lea element
    • (3 × 2) = 6 = al 6-lea element
    • (3 × 3) = 9 = al 9-lea element etc.

    Deci, după cum puteți vedea, rezultatul va fi același, ceea ce înseamnă că nu este nevoie de +3. Putem folosi valorile negative ale lui n la fel de bine ca și scăderea în ecuații. De exemplu, 4n-1:

    • (4 × 0) – 1 = –1 = nimic
    • (4 × 1) – 1 = 3 = al 3-lea element
    • (4 × 2) – 1 = 7 = al 7-lea element etc.

    Utilizarea -n poate părea ciudată - la urma urmei, dacă rezultatul final este negativ, atunci niciun element nu va fi inclus în selecție. Dar dacă adăugați la ecuație și faceți din nou rezultatul pozitiv, atunci eșantionul se va dovedi a fi destul de interesant: cu ajutorul său puteți obține primele n elemente, de exemplu astfel: -n+3:

    • –0 + 3 = 3 = al 3-lea element
    • –1 + 3 = 2 = al 2-lea element
    • –2 + 3 = 1 = primul element
    • –3 + 3 = 0 = nimic etc.

    SitePoint are o referință frumoasă cu un semn frumos pe care îl voi posta fără rușine aici:

    n 2n+1 4n+1 4n+4 4n 5n-2 -n+3
    0 1 1 4 3
    1 3 5 8 4 3 2
    2 5 9 12 8 8 1
    3 7 13 16 12 13
    4 9 17 20 16 18
    5 11 21 24 20 23

    Suport pentru browser

    Selectorul:nth-child este unul dintre puținii selectori CSS care este aproape pe deplin acceptat în browserele moderne și nu are absolut niciun suport în IE, nici măcar IE8. Deci, atunci când vine vorba de utilizare, iar rezultatul final este realizat folosind tehnologia de îmbunătățire progresivă, îl puteți folosi în siguranță pentru unele elemente de design, cum ar fi colorarea rândurilor de tabele. Cu toate acestea, nu trebuie utilizat în cazuri mai grave. De exemplu, bazându-te pe acesta într-un aspect al site-ului sau eliminarea marginii din dreapta din fiecare al treilea bloc într-o grilă de trei câte trei pentru a le face să se potrivească într-un rând.

    Descriere

    Pseudoclasa :nth-child este folosită pentru a adăuga stil elementelor bazate pe numerotarea din arborele de elemente.

    Sintaxă

    element:nth-child(impar | par |<число> | <выражение>) {...}

    Valori

    impar Toate numerele de element impar. par Toate elementele cu număr pare. număr Numărul ordinal al elementului copil relativ la părintele său. Numerotarea începe de la 1, acesta va fi primul element din listă. expresie Dată ca an+b , unde a și b sunt numere întregi, iar n este un numărător care ia automat valoarea 0, 1, 2...

    Dacă a este zero, atunci nu este scris și intrarea este abreviată la b . Dacă b este zero, atunci nu este specificat și expresia este scrisă sub forma an . a și b pot fi numere negative, în acest caz semnul plus se schimbă în minus, de exemplu: 5n-1.

    Folosind valori negative a și b, unele rezultate pot fi, de asemenea, negative sau zero. Cu toate acestea, elementele sunt afectate doar de valori pozitive datorită numerotării elementelor începând cu 1.

    În tabel 1 arată câteva expresii și cuvinte cheie posibile și indică, de asemenea, ce numere de elemente vor fi utilizate.

    HTML5 CSS3 IE Cr Op Sa Fx

    al-lea copil

    21342135 213621372138
    Ulei1634 627457
    Aur469 725647
    Copac773 793486
    Pietre2334 8853103


    ÎN în acest exemplu Pseudo-clasa :nth-child este folosită pentru a schimba stilul primului rând al tabelului, precum și pentru a evidenția toate rândurile cu numere pare (Figura 1).

    CSS nth-child este o pseudo-clasă folosită pentru a selecta elemente folosind o expresie numerică. Sintaxa sa poate părea puțin confuză la prima vedere.

    În acest articol ne vom uita la:

    • moduri diferite de a folosi :nth-child ;
    • selector mai flexibil :nth-of-type ;
    • și selectorii asociați :nth-last-child și :nth-last-of-type .

    :a-n-ul-ultimul-de-tip

    :nth-last-of-type selectează elementele copil dacă poziția lor în document se potrivește cu modelul descris de expresia algebrică.

    Selectorul :nth-last-of-type arată cam așa:

    li:nth-child(expresie); ()

    „Expresie” poate fi reprezentată prin cuvintele cheie par sau impar, un număr întreg sau o formulă precum an+b, unde a și b sunt numere întregi, pozitive sau negative.

    Deoarece pseudo-clasa copil CSS a n-a poate fi folosită pentru a selecta o serie de elemente diferite. Să ne uităm la câteva exemple pentru a clarifica lucrurile.

    eu am listă cu puncte din 12 elemente. Să vedem cum putem folosi :nth-child pentru a selecta un anumit element sau un set de elemente pe baza unui model:

    • lorem ipsum
    • lorem ipsum
    • lorem ipsum
    • lorem ipsum
    • lorem ipsum
    • lorem ipsum
    • lorem ipsum
    • lorem ipsum
    • lorem ipsum
    • lorem ipsum
    • lorem ipsum
    • lorem ipsum

    Pentru a selecta al treilea element al listei, trebuie să specificați li:nth-child(3) . Pentru a selecta toate elementele pare, puteți utiliza cuvântul cheie par. În schimb, puteți folosi :nth-child(odd) pentru a selecta toate elementele cu numere impare.

    CSS al n-lea copil la fiecare al treilea - specificați li:nth-child(3n) . Pentru a selecta primele patru elemente, utilizați li:nth-child(-n+4) . Pentru a selecta toate, cu excepția primelor patru elemente, puteți utiliza li:nth-child(n+5) .

    Expresia an + b

    Alternativă de utilizare cuvânt cheie impar este folosind expresia 2n+1 . Dar cum funcționează?

    Când o expresie în formatul an+b conține valori a și b diferite de zero, copiii sunt împărțiți în grupuri. Dacă expresia este 2n+1, copiii sunt împărțiți în grupuri de câte doi. Fiecărui element din grup i se atribuie un index, începând cu 1. Elementul corespunzător din fiecare grupă este numărul index b . În exemplul nostru, acesta va fi primul element.

    Dacă expresia este 3n+2 , elementele sunt grupate în grupuri de trei, iar al doilea element din fiecare grup se potrivește cu expresia.

    Dacă b este negativ, elementul corespunzător din grup este elementul de la indicele b . Dar se numără în sens invers față de indicele 1. În acest caz, elementul corespunzător nu va aparține acestui grup, ci grupului precedent.

    Cuvântul cheie par din al n-lea copil CSS poate fi exprimat ca 2n. În acest caz, nu avem o valoare pentru b, deci fiecare element al grupului cu indice a este selectat; 2n selectează fiecare al doilea element, 3n selectează fiecare al treilea, 4n selectează fiecare al patrulea și așa mai departe.

    Personal, mi se pare foarte confuz conceptul de a împărți elementele copil în grupuri și de a găsi un index de potrivire pentru fiecare grup. Deși exact așa le descrie specificația selectoarelor CSS.

    Prefer conceptul de căutare pentru fiecare al n-lea element - fiecare al 2-lea, al 3-lea sau al 4-lea etc. Și atunci îmi este mai ușor să-mi imaginez că a doua parte a expresiei este o compensare.

    În cazul lui 2n+1 citesc această expresie după cum urmează: " Găsiți fiecare al doilea element și mutați selecția în jos cu 1».

    Dacă expresia este 3n-5, se va citi astfel: " Găsiți fiecare al treilea element și mutați selecția în sus cu 5».

    Alți selectori: al nth-child

    :nth-child are o pseudo-clasă corespunzătoare :nth-last-child care face opusul.

    li:nth-last-child(3n) începe de la ultimul copil și funcționează înapoi, potrivind fiecare al treilea element de la sfârșitul listei.

    Această pseudo-clasă este mai puțin frecventă. Cu toate acestea, este adesea necesar să alegeți primul sau ultimul element copil. Acest lucru se poate face cu :nth-child(1) sau :nth-last-child(1) , dar această metodă nu este la fel de comună ca pseudoclasele :first-child și :last-child. Cu toate acestea, numai :first-child funcționează în IE8, dar selectoarele :last-child și :nth nu.

    :nth-of-type

    Ceea ce mă deranjează adesea este că pseudo-clasa copil CSS a n-a selectează elementele copil după index și nu ia în considerare tipul de element.

    Luați în considerare următorul exemplu.

    lorem ipsum;

    Aenean commodo ligula eget dolor. Vestibulum dapibus nunc ac augue;

    Nunc sed turpis. Donec posuere vulputate arcu;

    Există o secțiune cu titlu, subtitlu și mai multe paragrafe. Vreau să fac primul paragraf să iasă puțin în evidență cu o dimensiune mai mare a fontului, de 1,5 em.

    Puteți încerca să utilizați secțiunea p:first-child, deoarece trebuie să adăugați un stil suplimentar la primul paragraf din acea secțiune. Dar acest lucru nu va funcționa deoarece primul element copil al secțiunii este h1 . În acest caz, trebuie să utilizați selectorul :first-of-type.

    Există întreaga linie Selectorii pentru acest tip sunt :first-of-type , :last-of-type , :nth-of-type și :nth-last-of-type . Se comportă la fel ca :nth-child , dar selectează a n-a instanță de elemente de un anumit tip.