Definitive Guide to CSS Pseudo-Class
Niezależnie od tego, czy jesteś nowicjuszem, czy doświadczonym programistą CSS, prawdopodobnie słyszałeś o tym pseudoklasy. Najbardziej znaną pseudoklasą jest prawdopodobnie :wahać się
, co pozwala nam stylizować element, gdy jest w stanie zawisu, to znaczy, gdy wskazywane jest urządzenie wskazujące, takie jak mysz.
Zgodnie z koncepcją naszych poprzednich postów na marginesie: auto i CSS Floats, przyjrzymy się bliżej pseudoklasom w tym poście. Zobaczymy jakie naprawdę są pseudoklasy, jak działają, jak możemy je kategoryzować i jak się różnią od pseudoelementów.
Czym są pseudo-klasy?
Pseudoklasa jest słowem kluczowym, które możemy dodać do selektorów CSS w celu zdefiniuj stan specjalny przynależnego elementu HTML. Możemy dodać pseudoklasę do selektora CSS za pomocą składnia jelita grubego :
lubię to: a: hover …
Klasa CSS jest atrybutem, który możemy dodawać do elementów HTML, które chcemy zastosować do tych samych reguł stylu, takich jak górne elementy menu lub tytuły widgetów paska bocznego. Innymi słowy, możemy użyć klas CSS do grupować lub klasyfikować elementy HTML które są podobne w taki czy inny sposób.
Pseudoklasy są podobne do nich w tym sensie, że są również używane do dodawania reguł stylu do elementów, które mają tę samą charakterystykę.
Ale podczas gdy prawdziwe klasy są określony przez użytkownika i można zauważyć w kodzie źródłowym, na przykład The praca regularnych klas CSS to jest klasyfikować lub grupować elementy. Deweloperzy wiedzą, w jaki sposób ich elementy mają być grupowane: mogą tworzyć klasy, takie jak „elementy menu”, „przyciski”, „miniatury” itp., Aby grupować, a później tworzyć podobne elementy. Klasyfikacje te opierają się na charakterystyce elementów podane przez samych programistów. Na przykład, jeśli deweloper zdecyduje się użyć a Elementy HTML mają jednak ich własne wspólne cechy na podstawie ich stanu, pozycji, charakteru i interakcji ze stroną i użytkownikiem. Są to cechy, które są nie zazwyczaj oznaczone kodem HTML, ale możemy wyceluj w nich pseudoklasami w CSS, na przykład: Są to cechy charakterystyczne dla klas pseudo. Aby lepiej zrozumieć różnicę między klasami i pseudoklasami, załóżmy, że używamy klasy Możemy ustawić te ostatnie elementy potomne za pomocą następującego CSS: Ale co się dzieje, gdy zmienia się ostatni element? Cóż, będziemy musieli przenieść Ten kłopot aktualizowanie klas można pozostawić agentowi użytkownika, przynajmniej dla tych cech, które są wspólne dla elementów (a bycie ostatnim elementem jest tak powszechne, jak to tylko możliwe). Mający predefiniowany Istnieje wiele rodzajów pseudoklas, wszystkie z nich dostarczają nam sposobów kierowania elementów na podstawie ich funkcji, które w przeciwnym razie są niedostępne lub trudniejsze w dostępie. Oto lista standardowych pseudo klas w MDN. Dynamiczne pseudoklasy są dodawane i usuwane z elementów HTML dynamicznie, w oparciu o stan, w którym się zmieniają w odpowiedzi na interakcje użytkownika. Niektóre przykłady dynamicznych pseudoklas są Pseudoklasy oparte na stanie są dodawane do elementów, gdy są w określonym stanie statycznym. Niektóre z najbardziej znanych przykładów to: Najpopularniejsza pseudoklasa oparta na stanie musi być Pseudoklasy strukturalne klasyfikują elementy na podstawie na ich pozycji w strukturze dokumentu. Najczęstsze przykłady to Istnieją również różne pseudo-klasy, które trudno jest sklasyfikować, takie jak: Jedną z najtrudniejszych rzeczy w pseudoklasach jest prawdopodobnie zrozumienie różnicy między Oba są pseudoklasami strukturalnymi i znakami określony element w elemencie macierzystym (kontener), ale w inny sposób. Założyć n wynosi więc 2 Spójrzmy na przykład. Zobaczmy, jak ten krótki CSS stylizuje HTML w dwóch różnych przypadkach. W przypadku 1 drugi element wewnątrz a Ale jeśli element macierzysty robi mieć drugi akapit, W naszym przykładzie Ustęp 1, Dziecko 1 Ustęp 2, Dziecko 3 W drugim przypadku przenosimy nieuporządkowaną listę na trzecie miejsce, a przed nią pojawi się drugi akapit. Oznacza to, że oba Ustęp 1, Dziecko 1 Ustęp 2, Dziecko 2 Jeśli chcesz przeczytać więcej o różnicach między Kiedy mówimy o pseudoklasach, ważne jest również, aby zrozumieć jak się różnią od pseudoelementów, aby nie mieszać ich. Ale gdy używamy pseudoklas do wybierania elementów HTML, które istnieje w drzewie dokumentu po prostu nie zaznaczone osobno, pseudoelementy pozwalają nam kierować elementy, które normalnie nie istnieje w DOM, w ogóle (np Jest też a różnica w składni. Pseudoelementy są zazwyczaj identyfikowane za pomocą podwójnych dwukropków Może to prowadzić do pomyłki, jak w CSS2, pseudoelementy zostały również oznaczone pojedynczym dwukropkiem - przeglądarki nadal akceptują składnię dwukropka dla pseudoelementów. Istnieją również różnice między pseudoklasami i pseudoelementami w sposób, w jaki możemy kierować je za pomocą CSS. Pseudoelementy mogą się pojawić tylko po sekwencja selektorów, podczas gdy pseudoklasy można umieścić w dowolnym miejscu sekwencji selektora CSS. Na przykład możesz kierować na ostatni element listy elementu listy, taki jak LUB Pierwsza sekwencja selektora wybiera ostatnie dziecko wewnątrz Spróbujmy zrobić coś podobnego z pseudoelementami. Powyższy kod CSS jest prawidłowy i pojawi się tekst „czerwony” po Z drugiej strony ten kod nie zadziała, podobnie jak my nie można zmienić pozycji pseudoelementu wewnątrz sekwencji selektora. Ponadto tylko jeden pseudoelement może pojawić się obok selektora, podczas gdy pseudoklasy można łączyć ze sobą jeśli kombinacja ma sens. Na przykład, aby celować w pierwsze elementy potomne, które są również tylko do odczytu, możemy utworzyć kombinację pseudoklas Kod selektora za pomocą Ważne jest, aby o tym wiedzieć to są nie Pseudoklasy CSS które są kierowane przez jQuery. Nazywane są rozszerzeniami selektora jQuery. Rozszerzenia selektora jQuery pozwalają kieruj elementy HTML na prostsze słowa kluczowe. Większość z nich to kombinacje wielu normalnych selektorów CSS, które są reprezentowane przez jedno słowo kluczowe.Cel pseudoklasy
.ostatni, ubiegły, zeszły
zidentyfikować ostatnie elementy w różnych pojemnikach macierzystych.
li.last text-transform: uppercase; option.last font-style: italic;
.ostatni, ubiegły, zeszły
klasa od poprzedniego ostatniego elementu do bieżącego.:ostatnie dziecko
pseudoklasa jest bardzo przydatny. W ten sposób my nie musisz wskazywać ostatniego elementu w kodzie HTML, ale nadal możemy je stylizować za pomocą następującego CSS: li: last-child text-transform: uppercase; opcja: last-child font-style: italic;
Główne typy pseudo-klas
1. Dynamiczne pseudo-klasy
:wahać się
, :skupiać
, :połączyć
, i : odwiedził
, wszystko to można dodać do tag kotwicy.
a: visited color: # 8D20AE; .button: hover, .button: focus font-weight: bold;
2. Pseudo-klasy państwowe
:sprawdzone
które można zastosować w polach wyboru ()
:pełny ekran
kierować na dowolny element, który jest aktualnie wyświetlany w trybie pełnoekranowym:wyłączone
dla elementów HTML, które mogą być w trybie wyłączonym, np ,
, i
.
:sprawdzone
, który zaznacza, czy pole wyboru jest zaznaczone, czy nie. .pole wyboru: zaznaczone + etykieta styl czcionki: kursywa; input: disabled background-color: #EEEEEE;
3. Pseudoklasy strukturalne
:pierworodny
, :ostatnie dziecko
, i : nth-child (n)
- wszystko może być użyte do kierowania określonego elementu podrzędnego wewnątrz kontenera na podstawie jego położenia - i :korzeń
który jest ukierunkowany na element nadrzędny najwyższego poziomu w DOM. 4. Różne pseudo-klasy
: nie (x)
który wybiera elementy, które nie pasują do selektora x: lang (kod języka)
który wybiera elementy, których treść jest w określonym języku: reż (kierunkowość)
wybiera elementy z zawartością o określonej kierunkowości (od lewej do prawej lub od prawej do lewej). p: lang (ko) background-color: # FFFF00; : root background-color: # FAEBD7;
n-dziecko vs n-tego typu Pseudo-klasy
: n-dziecko
i : nth-of-type
pseudoklasy.: nth-of-child (n)
celuje w element, który jest drugie dziecko elementu macierzystego, i : nth-of-type (n)
cele drugi wśród taki sam typ elementu (takie jak akapity) wewnątrz elementu nadrzędnego. / * akapit, który jest także drugim dzieckiem wewnątrz elementu nadrzędnego * / p: nth-child (2) color: # 1E90FF; // lightblue / * drugi akapit wewnątrz elementu nadrzędnego * / p: nth-of-type (2) font-weight: bold;
Przypadek 1
nth-child (2)
zasada nie będzie miała do niego zastosowania. Chociaż to drugie dziecko, tak jest nie paragraf. n-tego typu (2)
zasada będzie obowiązywać, ponieważ ta zasada szuka tylko elementy i nie dba o inne typy elementów (takich jak listy nieuporządkowane) wewnątrz elementu nadrzędnego.
n-tego typu (2)
reguła będzie stylizować drugi akapit, którym jest Dziecko 3.
Lista nieuporządkowana 1, Dziecko 2
Przypadek 2
: nth-child (2)
i : nth-of-type (2)
zostaną zastosowane reguły, ponieważ drugi akapit jest również drugim dzieckiem jego rodzica
Lista nieuporządkowana 1, Dziecko 3
: nth-of-child
i : nth-of-type
pseudo-klasy, CSS Tricks ma na nim świetny post. Jeśli używasz SASS, Family.scss może pomóc w tworzeniu skomplikowanych n-dziecko„elementy ified.Pseudo-klasy vs Pseudo-elementy
Pseudoelementy
, Jak na przykład ::przed
i ::po
(zobacz ten samouczek na temat ich używania) dodane przez aplikacje użytkownika, i mogą być kierowane i stylizowane za pomocą CSS tak samo jak pseudoklasy. ::przed
i ::po
) lub tylko jako niektóre części istniejących elementów (np :: pierwsza litera
lub :: symbol zastępczy
). ::
, podczas gdy pseudoklasy są identyfikowane pojedynczym dwukropkiem :
.1. Ich miejsce w sekwencji selektora CSS
na dwa sposoby.
ul>: last-child.red color: # B0171F;
ul> .red: last-child color: # B0171F;
element (który ma klasę .czerwony
), a drugi wybiera ostatnie dziecko spośród elementów, które posiadają .czerwony
klasa w środku
. Jak widzisz, pozycja pseudoklasy jest zmienna. ul> .red :: after display: block; treść: „czerwony”; kolor: # B0171F;
przedmioty z klasą
.czerwony
. ul> :: after.red display: block; treść: „czerwony”; kolor: # B0171F;
2. Liczba zdarzeń w sekwencji selektora
:pierworodny
i :tylko czytać
w następujący sposób: : first-child: tylko do odczytu color: #EEEEEE;
Rozszerzenia jQuery Selector
:
składnia nie zawsze stanowi właściwą pseudo-klasę CSS. Jeśli kiedykolwiek używałeś jQuery, mógłbyś użyć wielu jego selektorów :
na przykład składnia $ (': checkbox')
, $ (': input ”)
i $ (': selected')
. / * Zmień czcionkę wszystkich elementów HTML związanych z wejściem, takich jak przycisk, wybierz i wprowadź * / $ (": input") .css ("rodzina czcionek", "kurier nowy")