Istnieje taki selektor, a dokładniej pseudoklasa o nazwie :nth-child . Oto przykład jego użycia:
UL LI:nth-child(3n+3) ( kolor:#CCC; )
Co robi powyższy CSS? Wybiera co trzeci element listy punktowanej: jest to trzeci, szósty, dziewiąty, dwunasty i tak dalej. Zobaczmy dokładnie, jak działa to wyrażenie i co jeszcze można zrobić z :nth-child .
Wszystko zależy od tego, co znajduje się między nawiasami. Selektor :nth-child akceptuje dwa słowa kluczowe: parzyste i nieparzyste . To proste: nawet wybiera elementy parzyste, takie jak 2., 4., 6. itd., a nieparzyste elementy nieparzyste, takie jak 1., 3., 5. itd. d.
Jak widać z pierwszego przykładu, :nth-child również akceptuje wyrażenia jako parametr. W tym najprostsze równania, czyli same liczby. Jeśli umieścisz je w nawiasach, zostanie wybrany tylko jeden element o odpowiednim numerze. Na przykład, oto jak wybrać tylko piąty element:
UL LI:nth-child(5) ( kolor:#CCC; )
Wróćmy jednak do 3n+3 z pierwszego przykładu. Jak to działa i dlaczego wybierany jest co trzeci element? Cała sztuczka polega na zrozumieniu zmiennej n i zredukowanego równania algebraicznego. Pomyśl o n jako zbiorze liczb całkowitych liczonym od zera. Następnie uzupełnij równanie. Zatem 3n to 3×n , a całe równanie razem to (3×n)+3 . Teraz, zastępując liczby większe lub równe zero zamiast n, otrzymujemy:
- (3 × 0) + 3 = 3 = trzeci element
- (3 × 1) + 3 = 6 = szósty element
- (3 × 2) + 3 = 9 = dziewiąty element itd.
A co z: n-tym dzieckiem(2n+1) ?
- (2 × 0) + 1 = 1 = pierwszy element
- (2×1) + 1 = 3 = 3 element
- (2 × 2) + 1 = 5 = piąty element itd.
Tak, przestań! To to samo co dziwne. Może więc nie powinieneś używać tego wyrażenia? Ale czy w tym przypadku nie komplikujemy zbytnio naszego pierwszego przykładu? Co jeśli zamiast 3n+3 napiszemy 3n+0 lub jeszcze prostsze 3n ?
- (3 × 0) = 0 = nic
- (3 × 1) = 3 = 3 element
- (3 × 2) = 6 = szósty element
- (3 × 3) = 9 = dziewiąty element itd.
Jak widać, wynik jest taki sam, co oznacza, że nie ma potrzeby +3 . Możemy używać ujemnych wartości n tak samo jak odejmowania w równaniach. Na przykład 4n-1:
- (4 × 0) - 1 = -1 = nic
- (4 × 1) - 1 = 3 = 3 element
- (4 × 2) - 1 = 7 = 7. element itd.
Użycie -n może wydawać się dziwne - jeśli wynik końcowy jest ujemny, to żadne elementy nie zostaną uwzględnione w selekcji. Ale jeśli uzupełnisz równanie i ponownie sprawisz, że wynik będzie pozytywny, próbka okaże się dość interesująca: dzięki niej możesz uzyskać pierwsze n elementów, na przykład tak: -n + 3:
- -0 + 3 = 3 = 3 element
- –1 + 3 = 2 = drugi element
- -2 + 3 = 1 = pierwszy element
- -3 + 3 = 0 = nic itd.
SitePoint ma fajny przewodnik z ładnym napisem, który bezwstydnie opublikuję tutaj:
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 | – |
Obsługa przeglądarki
Selektor :nth-child jest jednym z niewielu selektorów CSS, który jest prawie w pełni obsługiwany w nowoczesne przeglądarki i absolutnie nie jest obsługiwany w IE, nawet w IE8. Więc jeśli chodzi o używanie go, a efektem końcowym jest progresywne ulepszanie, możesz go bezpiecznie używać do niektórych elementów typograficznych, takich jak kolorowanie wierszy tabeli. Nie należy go jednak stosować w poważniejszych przypadkach. Na przykład polegaj na nim w układzie witryny lub usuń prawy margines z co trzeciego bloku w siatce trzy na trzy, aby zmieściły się w rzędzie.
CSS n-ty-dziecko to pseudoklasa używana do wybierania elementów za pomocą wyrażenia liczbowego. Na pierwszy rzut oka jego składnia może wydawać się nieco zagmatwana.
W tym artykule przyjrzymy się:
- różne sposoby użycia :nth-child ;
- bardziej elastyczny :selektor typu n-ty;
- i powiązane z nimi selektory :nth-last-child i :nth-last-of-type.
:n-ty-ostatni-typ
:nth-last-of-type wybiera elementy potomne, jeśli ich pozycja w dokumencie odpowiada wzorcowi opisanemu przez wyrażenie algebraiczne.
Selektor :nth-last-of-type wygląda mniej więcej tak:
li:n-te-dziecko(wyrażenie); ()
„Wyrażenie” może być reprezentowane przez słowa kluczowe parzyste lub nieparzyste , liczbę całkowitą lub formułę taką jak an+b , gdzie a i b są liczbami całkowitymi, dodatnimi lub ujemnymi.
Ponieważ pseudoklasa CSS n-ty element potomny może być użyty do wybrania zakresu różne elementy. Spójrzmy na kilka przykładów, aby było to jaśniejsze.
Mam lista punktowana 12 elementów. Zobaczmy, jak możemy użyć :nth-child do wybrania określonego elementu lub zestawu elementów we wzorcu:
- lorem ipsum
- lorem ipsum
- lorem ipsum
- lorem ipsum
- lorem ipsum
- lorem ipsum
- lorem ipsum
- lorem ipsum
- lorem ipsum
- lorem ipsum
- lorem ipsum
- lorem ipsum
Aby wybrać trzeci element listy, musisz podać li:nth-child(3) . Możesz użyć słowa kluczowego parzyste, aby zaznaczyć wszystkie elementy parzyste. I odwrotnie, możesz użyć :nth-child(odd), aby wybrać wszystkie elementy o nieparzystych numerach.
CSS n-te dziecko co trzecie - określ li:nth-child(3n) . Aby wybrać pierwsze cztery elementy, użyj li:nth-child(-n+4) . Aby wybrać wszystkie elementy oprócz pierwszych czterech, można użyć li:nth-child(n+5).
Wyrażenie an + b
Alternatywą dla słowa kluczowego nieparzyste jest użycie wyrażenia 2n+1 . Ale jak to działa?
Gdy wyrażenie an+b zawiera niezerowe wartości a i b , elementy podrzędne są dzielone na grupy. Jeśli wyrażenie ma wartość 2n+1 , elementy podrzędne są dzielone na dwie grupy. Każdy element w grupie ma przypisany indeks, począwszy od 1 . Odpowiednim elementem w każdej grupie jest numer indeksu b . W naszym przykładzie będzie to pierwszy element.
Jeśli wyrażenie ma wartość 3n+2 , elementy są grupowane według trzech elementów, a drugi element w każdej grupie jest zgodny z wyrażeniem.
Jeśli wartość b jest ujemna, pasującym elementem w grupie jest element o indeksie b . Ale jest liczone wstecz od indeksu 1 . W takim przypadku odpowiedni element będzie należeć nie do tego, ale do poprzedniej grupy.
Słowo kluczowe parzyste w CSS n-te dziecko może być wyrażone jako 2n . W tym przypadku nie mamy wartości dla b , więc wybierany jest każdy element grupy o indeksie a; 2n wybiera co drugi element, 3n wybiera co trzeci, 4n wybiera co czwarty i tak dalej.
Osobiście uważam, że koncepcja dzielenia elementów podrzędnych na grupy i znajdowania indeksu dopasowania dla każdej grupy jest bardzo myląca. Chociaż tak opisuje je specyfikacja selektorów CSS.
Preferuję koncepcję przeszukiwania każdego n-tego elementu - co drugi, trzeci, czwarty itd. I wtedy łatwiej mi sobie wyobrazić, że druga część wyrażenia to offset.
W przypadku 2n+1 czytam to wyrażenie w następujący sposób: „ Znajdź co drugi element i przesuń zaznaczenie w dół o 1».
Jeśli wyrażenie to 3n-5 , będzie wyglądać tak: " Znajdź co trzeci element i przesuń zaznaczenie w górę o 5».
Inne selektory: n-te dziecko
:nth-child ma odpowiadającą pseudoklasę :nth-last-child , co działa na odwrót.
li:nth-last-child(3n) zaczyna się od ostatniego element potomny i przetwarza je wstecz, dopasowując co trzeci element z końca listy.
Ta pseudoklasa jest mniej powszechna. Często jednak konieczne jest wybranie pierwszego lub ostatniego elementu podrzędnego. Można to zrobić za pomocą :nth-child(1) lub :nth-last-child(1) , ale ta metoda nie jest tak powszechna jak pseudoklasy :first-child i :last-child. Jednak tylko :first-child działa w IE8 , :last-child i :nth nie działają.
:n-ty typ
Co często mnie niepokoi, to że CSS n-ta pseudoklasa potomna sortuje elementy potomne według indeksu i nie bierze pod uwagę typu elementu.
Rozważmy następujący przykład.
Aenean Commodo ligula eget dolor. Vestibulum dapibus nunc ac augue; Nunc sed turpis. Donec posuere vulputate arcu;lorem ipsum;
Jest sekcja z nagłówkiem, podtytułem i kilkoma akapitami. Chcę, aby pierwszy akapit wyróżniał się nieco większą czcionką 1,5 em.
Możesz spróbować użyć sekcji p:first-child code, ponieważ musisz dodać dodatkową stylizację do pierwszego akapitu w tej sekcji. Ale to nie zadziała, ponieważ pierwszym dzieckiem sekcji jest h1 . W takim przypadku należy użyć selektora :first-of-type.
istnieje cała linia selektory tego typu to :first-of-type , :last-of-type , :nth-of-type i :nth-last-of-type . Zachowują się jak :nth-child , ale wybierają n-te wystąpienia elementów określonego typu.
Opis
Pseudoklasa :nth-child służy do dodawania stylów do elementów na podstawie numeracji w drzewie elementów.
Składnia
element:nth-child(nieparzyste | parzyste |<число> | <выражение>) {...}
Wartości
nieparzyste Wszystkie nieparzyste numery elementów. parzyste Wszystkie parzyste numery pierwiastków. number Liczba porządkowa dziecka w stosunku do rodzica. Numeracja zaczyna się od 1, który będzie pierwszym elementem na liście. wyrażenie Określone jako an+b , gdzie a i b są liczbami całkowitymi, a n jest licznikiem, który automatycznie przyjmuje wartość 0, 1, 2...Jeśli a wynosi zero, to nie jest zapisywane, a notacja jest redukowana do b . Jeśli b wynosi zero, to również jest pomijane, a wyrażenie jest zapisywane w postaci an . a i b mogą być liczbami ujemnymi, w takim przypadku znak plus zmienia się na minus, na przykład: 5n-1.
Używając ujemnych wartości dla a i b, niektóre wyniki mogą być również ujemne lub zerowe. Jednak na elementy mają wpływ tylko wartości dodatnie, ponieważ numeracja elementów zaczyna się od 1.
W tabeli. 1 pokazuje kilka możliwych wyrażeń i słowa kluczowe, a także wskazuje, które numery pozycji będą dotyczyć.
HTML5 CSS3 IE Cr Op Sa Fx
2134 | 2135 | 2136 | 2137 | 2138 | |
Olej | 16 | 34 | 62 | 74 | 57 |
Złoto | 4 | 69 | 72 | 56 | 47 |
Drewno | 7 | 73 | 79 | 34 | 86 |
kamienie | 23 | 34 | 88 | 53 | 103 |
W ten przykład Pseudoklasa :nth-child służy do zmiany stylu pierwszego wiersza tabeli, a także do kolorowania wszystkich parzystych wierszy (Rysunek 1).
Witam Cię na moim blogu. Chciałbym dziś napisać na temat tego, jak wybrać pierwszy element nadrzędny w css, ponieważ pozwala to na użycie mniejszej liczby klas stylów.
Pseudoklasy: pierwsze dziecko i pierwsze typu jaka jest różnica?
Aby odwołać się do pierwszego elementu z kontenera nadrzędnego w css, wymyślono dwie pseudoklasy. Od razu proponuję rozważyć wszystko na przykładzie, abyś zrozumiał:
To jest akapit
To jest akapit
To jest akapit
To jest akapit
To jest akapit
Powiedzmy, że mamy taki znacznik. Celem jest odwołanie się do pierwszego akapitu i odseparowanie go od pozostałych bez dodawania do niego klas. Można to zrobić w ten sposób:
#wrapper p:pierwsze dziecko(
Kolor czerwony;
}
Kolor pierwszego akapitu zmieni się na czerwony, możesz to sprawdzić.
#wrapper p:pierwszy typu(
kolor czerwony;
}
To samo się stanie. Więc jaka jest różnica? I polega na tym, że pseudoklasa first-of-type przeszukuje i znajduje pierwszy element rodzica, biorąc pod uwagę jego typ, a first-child nie szuka niczego - po prostu bierze pierwszy element rodzica, który natknie się i, jeśli jest to akapit, zastosuje do niego style. Jeśli nie, nic nie zostanie wybrane i zastosowane.
To jest akapit
To jest akapit
To jest akapit
To jest akapit
To jest akapit
Zastanówmy się teraz: czy w tym przypadku zadziałałby pierwszy typ? Tak, ponieważ uwzględnia typ elementu i wybierze pierwszy akapit, a nie pierwszy ze wszystkich elementów. Czy pierwsze dziecko będzie działać? Spróbuj. To nie zadziała, ponieważ akapit nie jest pierwszym elementem rodzica.
Osobiście nie od razu zrozumiałem różnicę między tymi pseudoklasami i przez chwilę się pomyliłem, ale teraz mam nadzieję, że wyjaśniłem to normalnie.
Kolejny ważny szczegół
Elementy są liczone od elementu nadrzędnego, więc jeśli określiłeś w ten sposób:
Li:pierwszy w typie(
…
}
Następnie zostaną wybrane pierwsze elementy listy w tagu body (czyli na całej stronie). W ten sposób na każdej liście pierwszy element będzie sformatowany inaczej.
Jeśli piszesz w ten sposób:
#sidebar li:first-of-type(
…
}
Wtedy zostaną wybrane tylko pierwsze pozycje list na pasku bocznym, czyli kolumna boczna na naszej stronie.
Używając różnych selektorów, o których pisałem, możesz dotrzeć do niemal każdego elementu na stronie internetowej. W tym artykule możesz przeczytać więcej o tym, jak pracować z pseudoklasą nth-child w css i daje to opcje w zakresie wyboru elementów.
Nawiasem mówiąc, zapomniałem wspomnieć o przeciwnych pseudoklasach - last-child (odpowiednio last-of-type). Pozwalają wybrać ostatni element z kontenera nadrzędnego.
Gdzie możesz zastosować w praktyce
Piszę o tych pseudoklasach, ponieważ są one aktywnie używane podczas układania z css. Tutaj masz na stronie na przykład blok podobnych postów lub komentarzy lub coś innego. I wpadłeś na pomysł, żeby jakoś ozdobić jego pierwszy element w szczególny sposób. A może ostatni. I tak, każdy może.
Musisz tylko znaleźć nazwę bloku, w którym przechowywany jest żądany element. Powiedzmy, że mamy do czynienia z popularnymi płytami. Kontener nadrzędny ma popularną klasę. Następnie piszemy tak:
Popularne li:first-of-type(
Górna wyściółka: 20px
}
Wszystko, pierwsza pozycja na liście otrzymała wcięcie z góry i możesz dodać co chcesz do stylów.
Oto kolejny przykład. Mam tylko trzy identyczne szare bloki w tagu ciała. Napiszmy tak.
Pseudoklasy mogą służyć do wybierania określonego elementu z listy. W tym samouczku omówimy pseudoklasę :nth-child, co możesz stworzyć za pomocą tej pseudoklasy i jak może być użyteczna. Pseudoklasa :nth-child pozwala wybrać grupę elementów o wspólnych właściwościach. Jest najczęściej używany do wybierania parzystych lub nieparzystych elementów z grupy. Często używa się go, aby stół wyglądał jak zebra, nadając różne kolory tła nieparzystym i parzystym rzędom.
tr:nth-child (nieparzyste) ( // kolor tła ) tr:nth-child (parzyste) ( // inny kolor tła )
Pseudoklasa :nth-child pozwala również podzielić elementy o wspólnej właściwości na grupy, a następnie wybrać określony element z każdej grupy przy użyciu następującej składni:
Tr:n-te-dziecko (an+b) ( )
Tutaj a określa liczbę elementów w grupie, oraz b określa, który element z grupy zostanie wybrany. Jeśli użyjesz wartości 2n+1, wówczas elementy zostaną podzielone na grupy po dwie i zostaną wybrane pierwsze elementy każdej grupy, czyli elementy o nieparzystej liczbie porządkowej. Jeśli użyjesz wartości 2n+2, wówczas elementy zostaną ponownie podzielone na grupy po dwie, ale teraz zostaną wybrane drugie elementy każdej grupy, czyli elementy o parzystym numerze seryjnym.
Jako przykład, aby zrozumieć pseudoklasę :nth-child, wybierzemy z nią co czwarty element, tj. czwarty, ósmy, dwunasty, szesnasty itd. Aby to zrobić, podzielimy elementy na grupy po cztery i następnie wybierz co czwarty element.
Tr:nth-child (4n+4 ) ( // styl co czwarty element )
Poniżej znajduje się lista dziesięciu elementów. Użyjemy pseudoklas :nth-child , :first-child i :last-child , aby wybrać elementy, które chcemy wyróżnić.
Używanie pseudoklasy CSS:nth-child do wybrania pojedynczego elementu
Ustawiając pseudoklasę :nth-child jako liczbę, możesz wybrać, do którego dziecka z grupy ma się odnosić:
Element 1
Element 2
Element 3
Element 4
Element 5
Element 6
Element 7
Element 8
Element 9
Element 10
#selector_example li:nth-child (4) ( rozmiar czcionki: 150
Używanie pseudoklasy CSS:nth-child do zaznaczania wszystkich elementów z wyjątkiem pierwszej piątki
Jeśli ustawisz pseudoklasę :nth-child na wartość formularza n+ numer, możesz wybrać wszystkie elementy, zaczynając od elementu o tej liczbie porządkowej:
Element 1
Element 2
Element 3
Element 4
Element 5
Element 6
Element 7
Element 8
Element 9
Element 10
#selector_example li:nth-child (n+6 ) ( rozmiar czcionki: 150 %; grubość czcionki:pogrubienie ; Zielony kolor ; )
Używanie pseudoklasy CSS:nth-child do wybierania tylko pierwszych pięciu elementów
Kiedy ustawimy pseudoklasę :nth-child na wartość ujemną n+ numer, wybieramy wszystkie elementy, które są przed elementem o tej liczbie porządkowej:
Element 1
Element 2
Element 3
Element 4
Element 5
Element 6
Element 7
Element 8
Element 9
Element 10
#selector_example li:nth-child (-n+5 ) ( rozmiar czcionki: 150 %; grubość czcionki:pogrubienie ; Zielony kolor ; )
Używanie pseudoklasy CSS:nth-child do wybierania co trzeciego elementu
Pseudoklasa :nth-child może być użyta do wybrania sekwencji elementów poprzez określenie, ile elementów znajduje się w sekwencji i liczby porządkowej żądanego elementu. Jeśli ustawisz wartość 3n+1, zostanie wybrany co trzeci element, począwszy od pierwszego:
Element 1
Element 2
Element 3
Element 4
Element 5
Element 6
Element 7
Element 8
Element 9
Element 10
#selector_example li:nth-child (3n+1 ) ( rozmiar czcionki: 150 %; grubość czcionki:pogrubienie ; Zielony kolor ; )
Używanie pseudoklasy CSS:nth-child do wybierania tylko nieparzystych elementów
Możesz ustawić pseudoklasę :nth-child na nieparzystą, aby wybrać wszystkie elementy z nieparzystymi liczbami porządkowymi. To znaczy elementy pierwszy, trzeci, piąty, siódmy, dziewiąty itd. Jest to bardzo przydatne przy ustawianiu kolorów dla sąsiednich wierszy tabeli.
Element 1
Element 2
Element 3
Element 4
Element 5
Element 6
Element 7
Element 8
Element 9
Element 10
#selector_example li:nth-child (nieparzysty) ( rozmiar czcionki: 150 %; grubość czcionki:pogrubienie ; Zielony kolor ; )
Używanie pseudoklasy CSS:nth-child do wybierania tylko parzystych elementów
Ten przykład pokazuje to samo, co poprzedni, ale tym razem wszystkie elementy parzyste są zaznaczone. To znaczy drugi, czwarty, szósty, ósmy, dziesiąty itd. elementy:
Element 1
Element 2
Element 3
Element 4
Element 5
Element 6
Element 7
Element 8
Element 9
Element 10
#selector_example li:nth-child (parzyste) ( rozmiar czcionki: 150 %; grubość czcionki:pogrubienie ; Zielony kolor ; )
Używanie CSS:first-child Pseudo-Class do wybrania pierwszego elementu
Kolejna pseudo-class:first-child wybierze pierwszy element:
Element 1
Element 2
Element 3
Element 4
Element 5
Element 6
Element 7
Element 8
Element 9
Element 10
#selector_example li:first-child ( rozmiar czcionki: 150 %; grubość czcionki:pogrubienie ; Zielony kolor ; )
Używanie pseudoklasy CSS:last-child do wybrania ostatniego elementu
Oprócz pseudoklasy :first-child istnieje pseudoklasa :last-child, która wybierze ostatni element z grupy elementów:
Element 1
Element 2
Element 3
Element 4
Element 5
Element 6
Element 7
Element 8
Element 9
Element 10
#selector_example li:last-child ( rozmiar czcionki: 150 %; grubość czcionki:pogrubienie ; Zielony kolor ; )
Używanie pseudo-klasy CSS:nth-last-child do wybrania przedostatniego elementu
Możesz także użyć pseudoklasy :nth-last-child, która łączy możliwości pseudoklas :last-child i :nth-child, aby rozpocząć liczenie elementów od końca. Oznacza to, że możesz wybrać element, licząc numery sekwencyjne z końca grupy, na przykład w grupie dziesięciu elementów, możesz wybrać drugi element z końca:
Element 1
Element 2
Element 3
Element 4
Element 5
Element 6
Element 7
Element 8
Element 9
Element 10
#selector_example li:nth-last-child (2 ) ( rozmiar czcionki: 150 %; grubość czcionki:pogrubienie ; Zielony kolor ; )
Sprawdź pseudoklasę :nth-child z „