Unlimited WordPress themes, graphics, videos & courses! Unlimited asset downloads! From $16.50/m
Advertisement
  1. Code
  2. Web Development
Code

30 selektorów CSS które musisz zapamiętać!

by
Difficulty:IntermediateLength:LongLanguages:
This post is part of a series called CSS3 Mastery.
10 CSS3 Properties you Need to be Familiar With
Getting to Work with CSS3 Power Tools

Polish (Polski) translation by Krzysztof Kaptur (you can also view the original English article)

Znasz już podstawe selektory, id, class, i selektory potomków - i odpuszczasz? Jeśli tak to wiele Cię omija. Wiele selektorów wymienionych poniżej jest częscią specyfikacji CSS3, w konsekwencji są dostępne tylko w nowoczesnych przeglądarkach.

1. *

Zacznijmy od oczywistych selektorów, dla początkujących, zanim przejdziemy do bardziej zaawansowanych.

Symbol gwiazdki obierze za cel każdy element znajdujący się na stronie. Wielu deweloperów używa tego triku by wyzerować margin i padding. Pomimo, że jest to dobry sposób do szybkich testów, polecałbym nie stosować tego w kodzie produkcyjnym. Obciąża to nadto wyszukiwarkę i jest niepotrzebne.

* może być również użyte z selektorem dziecka (ang. child selector).

Ten kod obierze za cel każdy element div z id równym container Staraj się jednak nie używać tej techniki zbyt często, jeśli w ogóle.

Pokaż Demo

Kompatybilność

  • IE6+
  • Firefox
  • Chrome
  • Safari
  • Opera

2. #X

Symbol '#' (hash) pozwala nam wybrać cel na podstawie id.Jest to najpopularniejszy sposób wykorzystania, jednak bądź ostrożny używając go.

Zastanów się: czy rzeczywiście musisz nadać elementowi id by go wybrać?

Selektory id są niezmienne i jednorazowe. Jeśli to możliwe najpierw spróbuj użyć nazwy elementu, jednego z nowych elementów HTML5, lub pseudoklasy.

Pokaż Demo

Zgodność

  • IE6+
  • Firefox
  • Chrome
  • Safari
  • Opera

3. .X

Jest to selektor klasy (ang. class). Różnica między nim a id jest taka, że klasą możesz wybrać wiele elementów. Użyj class jeśli chcesz nadać styl grupie elementów. Ewentualnie, użyj id by znaleźć i wystylizować tylko konkretny element.

Pokaż Demo

Zgodność

  • IE6+
  • Firefox
  • Chrome
  • Safari
  • Opera

4. X Y

Jednym z najpopularniejszych selektorów jest selektor potomka (ang. descendant). Jeśli musisz lepiej sprecyzować cel, używasz właśnie tego. Na przykład, jeśli zamiast zaznaczać wszystkie linki, chcesz wybrać tylko te, które znajdują się w nieuporządkowane liście? Jest to sprecyzowane, gdy używasz selektora potomka.

Porada profesjonalisty - jeśli Twój selektor wygląda tak X Y Z A B.error, to robisz to źle. Zawsze zastanów się czy musisz wrzucać takie obciążenie.

Pokaż Demo

Zgodność

  • IE6+
  • Firefox
  • Chrome
  • Safari
  • Opera

5. X

Co jeśli chcesz zaznaczyć wszystkie elementy tego samego typu (ang. type), bez używania id lub class? Idź na łatwiznę i użyj selektora typu. Jeśli chcesz zaznaczyć wszystkie nieuporządkowane listy ('unordered lists'), użyj ul {}.

Pokaż Demo

Zgodność

  • IE6+
  • Firefox
  • Chrome
  • Safari
  • Opera

6. X:visited and X:link

Pseudo-klasy :link używamy by zaznaczyć wszystkie linki które jeszcze nie były kliknięte.

Ewentualnie, używamy pseudo-klasy :visited, która jak się domyślasz, pozwala na dodanie stylu do linka na stronie który był kliknięty, lub odwiedzony.

Pokaż Demo

Zgodność

  • IE7+
  • Firefox
  • Chrome
  • Safari
  • Opera

7. X + Y

Ten selektor odwołuje się do sąsiedniego selektora. Wybierze tylko ten element, który występuje bezpośrednio po wcześniej wymienionym elemencie. W tym przypadku, tylko pierwszy paragraf, po każdym ul będzie miał czerwony tekst.

Pokaż Demo

Zgodność

  • IE7+
  • Firefox
  • Chrome
  • Safari
  • Opera

8. X > Y

Różnica pomiędzy X Y a X > Y jest taka, że ten drugi wybiera tylko bezpośrednie dzieci. Na przykład.

Selektor #container > ul weźmie za cel tylko ul, które są bezpośrednimi dziećmi div z id container. Nie zaznaczy jednak ul , które jest dzieckiem pierwszego li.

Dlatego jest wiele korzyści płynących z kombinatorów dzieci. Poleca się ten sposób przy pracy z JavaScriptem opartym na selektorach CSS.

Pokaż Demo

Zgodność

  • IE7+
  • Firefox
  • Chrome
  • Safari
  • Opera

9. X ~ Y

Ogólny selektor następnika jest podobny do X + Y, ale jest mniej ścisły. Kiedy selektor następnika (ul + p) wybierze tylko pierwszy element występujący natychmiast po poprzednim selektorze, ten jest bardziej ogólny.Wybierze, odwołując się do przykładu wyżej, każdy element p jeśli tylko następuje po ul.

Pokaż Demo

Zgodność

  • IE7+
  • Firefox
  • Chrome
  • Safari
  • Opera

10. X[title]

Odwołując się do tak zwanego selektora atrybutu,w przykładzie powyżej, wybierze on tylko element z atrybutem title. Linki, które go nie mają nie otrzymają stylu. Jednak co jeśli chciałbyś być bardziej dokładny? Zobaczmy...

Pokaż Demo

Zgodność

  • IE7+
  • Firefox
  • Chrome
  • Safari
  • Opera

11. X[href="foo"]

Fragment powyżej nada styl wszystkim linkom prowadzącym do https://net.tutsplus.com; otrzymają one nasz firmowy zielony kolor. Pozostałe linki będą nienaruszone.

Zauważ, że wartość zawinęliśmy w cudzysłów. Pamiętaj by zrobić to samo przy selektorze CSS w JavaScripcie. W miarę możliwości zawsze używaj slektorów CSS zamiast nieoficjalnych metod.

Działa dobrze, ale jest nieco sztywne. Co jeśli link przekierowuje do Nuttuts+ , ale ścieżka to nettuts.com, zamiast pełnego url? W tej sytuacji możemy użyć zwykłą składnię.

Pokaż Demo

Zgodność

  • IE7+
  • Firefox
  • Chrome
  • Safari
  • Opera

12. X[href*="nettuts"]

Właśnie tego było nam potrzeba. Gwiazdka oznacza, że podana wartość musi wystąpić gdziekolwiek w wartości atrybutu. Dzięki temy wybrane zostanie nettuts.com, net.tutsplus.com, a nawet tutsplus.com.

Pamiętaj, że to szerokie pojęcie. Co jeśli link prowadzi do jakiejś strony nie-Envato z tuts w adresie? Gdy musisz być bardziej konkretny użyj^ i $,by odwołać się odpowiednio do początku i końca ciągu znaków.

Pokaż Demo

Zgodność

  • IE7+
  • Firefox
  • Chrome
  • Safari
  • Opera

13. X[href^="http"]

Czy zastanawiałeś się, jak niektóre strony są w stanie umieścić ikonki zaraz obok linku do zewnętrznej strony? Jestem pewny, że już wcześniej się z nimi spotkałeś; przypominają nam, że link przekieruje nas na zupełnie inną stronę.

Najczęściej jest wykorzystywane w wyrażeniach, by oznaczyć początek ciągu znaków. Jeśli chcemy obrać za cel wszystkie linki, które mają href zaczynające się od http, możemy skorzystać z selektora podanego powyżej.

Zauważ, że nie szukamy https://; jest to zbędne i dodatkowo nie bierze pod uwagę adresów zaczynających się od https://.

Co jeśli chcemy wystylizować wsszystkie linki które prowadzą do np. zdjęcia? W takim wypadku, odwołajmy się do końca ciągu.

Pokaż Demo

Zgodność

  • IE7+
  • Firefox
  • Chrome
  • Safari
  • Opera

14. X[href$=".jpg"]

Ponownie używamy zwykłego symbolu $, zwracając się do końca ciągu.W tym wypadku szukamy wszystkich linków prowadzących do obrazka -- lub conajmniej do tego, który kończy się .jpg. Zapamięta, że to nie podziała na gif i pngs.

Pokaż Demo

Zgodność

  • IE7+
  • Firefox
  • Chrome
  • Safari
  • Opera

15. X[data-*="foo"]

Wróć do punktu ósmego; jak zwrócić się do wszystkich typów obrazów png, jpeg,jpg, gif? Możemy stworzyć multi-selektory, w ten sposób:

Jest to jednak upierdliwe i neefektywne. Innym rozwiązanie jest użycie stałych atrybutów.Co jeśli dodamy nasz własny atrybut data-filetype do każdego z linków do obrazu?

Wtedy, z kotwicą na miejscu możemy użyć standardowego selektora by ucelować te linki .

Pokaż Demo

Zgodność

  • IE7+
  • Firefox
  • Chrome
  • Safari
  • Opera

16. X[foo~="bar"]

A oto trik, którym zaimponujesz kolegom. Niewielu o tym wie. Tylda (~) pozwala na ucelowanie atrybutu, który ma oddzielone spacją różne wartości.

Biorąc za przykład nasz atrybut z punktu 15 możemy stworzyć atrybut data-info, który może otrzymać oddzieloną spacją listę wszystkiego co chcemy zanotować.W tym przypadku zanotujemy zewnętrzne linki i linki do obrazów - dla przykładu.

Dzięki temu przy użyciu '~' możemy zaznaczyć każdy element który posiada którąkolwiek wartość .

Nieźle, co?

Pokaż Demo

Zgodność

  • IE7+
  • Firefox
  • Chrome
  • Safari
  • Opera

17. X:checked

Ta pseudo-klasa obierze za cel tylko sprawdzone elementy - jak przycisk radio lub checklist. To takie proste

Pokaż Demo

Zgodność

  • IE9+
  • Firefox
  • Chrome
  • Safari
  • Opera

18. X:after

Pseudo-klasy before i after wymiatają. Każdego dnia ludzie znajdują nowe, kreatywne sposoby na efektywne ich użycie. Tworzą one treść wokół wybranego elementu.

Wielu poznało te klasy kiedy spotkało się z trikiem clear-fix.

Wykorzystując ten trik z :after dodajemy miejsce po elemencie i go czyścimy. Jest to świetny trik do poznania, wyjątkowo korzystny gdy metoda overflow: hidden; nie jest możliwa.

Kolejny kreatywny sposób do wykorzystania nawiązuje do szybkiego sposobu na tworzenie cieni..

Zgodnie ze specyfikacją selektorów CSS3, powinieneś używać kodu z dwoma dwókropkami ::. Lecz, by zachować kompatybilność, przeglądarka akceptuje pojedyńczy dwukropek. W chwili obecnej jest to nawet wskazane w projektach.

Zgodność

  • IE8+
  • Firefox
  • Chrome
  • Safari
  • Opera

19. X:hover

No dalej, przecież znasz ten przykład. Oficjalny termin to pseudo-klasa akcji użytkownika. Brzmi myląca, ale takie nie jest. Chcesz nadać specjalny wygląd, gdy użytkownik najedzie kursorem na dany element? Ta pseudo-klasa to zagwarantuje!

Pamiętaj że starsza wersja Internet Explorer nie odpowiada gdy :hover jest nadane innemu elementowi niż link.

Najczęsciej będziesz tego używał gdy np. nadasz border-bottom linkom gdy na nie najedziesz.

Porada profesjonalisty - border-bottom: 1px solid black; wygląda lepiej niż text-decoration: underline;.

Zgodność

  • IE6+ (W IE6, :musi być dodane do linku)
  • Firefox
  • Chrome
  • Safari
  • Opera

20. X:not(selektor)

Negująca pseudo-klasa jest szczególnie pomocna. Załóżmy, że chcę wybrać wszystkie elementy div, oprócz jednego z id container. Fragment powyżej wykona to zadanie idealnie.

Lub jeśli chciałbym wybrać każdy pojedyńczy element (niezalecane), oprócz paragrafów, możemy wtedy użyć:

Pokaż Demo

Zgodność

  • IE9+
  • Firefox
  • Chrome
  • Safari
  • Opera

21. X::pseudoElement

Możemy użyć pseudo-elementu (poprzedzonego::) by wystylizować elementy takie jak pierwsza linia czy pierwsza litera. Zapamiętaj, że muszą one być dodane do elementów blokowych, by zadziałały.

Pseudo-elementy są tworzone poprzez użycie dwóch dwukropków ::

Obierz za cel Pierwszą Literę Paragrafu

Ten kod znajdzie wszystkie paragrafy na stronie, a następnie wybierze tylko pierwsze litery tych paragrafów.

Jest to najczęściej wykorzystywane do nadania stylu pierwszej literze, podobnie jak w gazetach.

Obierz za cel Pierwszą Linię Paragrafu

Podobnie, pseudo-element ::first-line nada styl tylko pierwszemu wierszowi paragrafów.

"W ramach zgodności z już istniejącymi arkuszami stylów, wyszukiwarki muszą zaakceptować korzystanie z jednego dwukropka przed pseudo-elementami, które było zaprezentowane w CSS1 i CSS2 (:first-line, :first-letter, :before i :after). Ta kompatybilnośc nie jest dopuszczona do nowych pseudo-elementów zaprezentowanych w tej specyfikacji. " - Źródło

Pokaż Demo

Zgodność

  • IE6+
  • Firefox
  • Chrome
  • Safari
  • Opera

22. X:nth-child(n)

Pamiętacie te dni, gdy nie mieliśmy możliwości określić dokładnego elementu w stosie? Pseudo-klasa nth-child rozwiązuje ten problem!

Pamiętaj, że nth-child akceptuje tylko naturalne liczby i zaczyna się od 1. Jeśli chcesz wybrać drugi element z listy użyj li:nth-child(2).

Możemy tego użyć by wybrać grupę elementów. Na przykład użyjemy li:nth-child(4n) by wybrać co czwarty element listy..

Pokaż Demo

Zgodność

  • IE9+
  • Firefox 3.5+
  • Chrome
  • Safari

23. X:nth-last-child(n)

Co jeśli mamy ogromną listę elementów w ul, a potrzebujemy zaznaczyć, powiedzmy trzeci element od końca? Zamiast li:nth-child(397), możesz użyć pseudo-klasy nth-last-child.

Ta pseudo-klasa działa prawie identycznie jak ta z numerem 16, poza tym że zaczyna liczyć od końca i porusza się w górę stosu.

Pokaż Demo

Zgodność

  • IE9+
  • Firefox 3.5+
  • Chrome
  • Safari
  • Opera

24. X:nth-of-type(n)

Zarzą się sytuację, gdy zamiast dziecka, będziesz chciał wybrać elementy zgodnie z jego typem.

Wyobraź sobie znacznik, który zawiera pięć nieuporządkowanych list. Jeśli chesz nadać styl tylko trzeciemu ul, i nie ma on przypisanego id, to możesz skorzystać z nth-of-type(n). W przykładzie powyżej obramowanie zostanie nadane tylko trzeciemu ul.

Pokaż Demo

Zgodność

  • IE9+
  • Firefox 3.5+
  • Chrome
  • Safari

25. X:nth-last-of-type(n)

Możemy również użyć nth-last-of-type by zacząćod końca i dążyć do wybranego elementu.

Zgodność

  • IE9+
  • Firefox 3.5+
  • Chrome
  • Safari
  • Opera

26. X:first-child

Ta pseudo-klasa pozwalanam wybrać wyłącznie pierwsze dziecko elementu. Często będziesz z tego korzystał chcąc usunąć obramowanie z pierwszego i ostatniego elementu listy.

Przypuśćmy, że masz listę wierszy i każdy ma nadane border-top i border-bottom. Z takim ustawieniem pierwszy i ostatni element będą wyglądać dziwnie.

Wielu designerów korzysta z klas first i last by to osiągnąć. Możesz jednak skorzystac z wyżej podanych pseudo-klas.

Pokaż Demo

Zgodność

  • IE7+
  • Firefox
  • Chrome
  • Safari
  • Opera

27. X:last-child

W przeciwieństwie do first-child, last-child zaznaczy ostatni element rodzica.

Przykład

Zbudujmy dla przykładu wystylizowaną liste elementów by zademonstrować użycie tych klas.

Kod

Nic specjalnego, ot zwykla lista.

CSS

Ten kod nada tło, usunie domyślny 'padding' elementu ul,i doda obramowanie do każdego elementu li by nadać trochę głębi.

Styled List

By dodać głębie do listy, zastosuj border-bottom do każdego li, które jest ton lub dwa ciemniejsze od tła li. Następnie dodaj border-top, które jest kilka tonów jasniejsze.

Jedyny problem to jak widać dodanie obramowań do pierwszego i ostanitego elementu listy, użyjmy pseudo-klas :first-child i :last-child by to naprawić.

Fixed

Naprawione!

Pokaż Demo

Zgodność

  • IE9+
  • Firefox
  • Chrome
  • Safari
  • Opera

Tak - IE8 obsługuje :first-child,ale nie :last-child. Weź ich zrozum.

28. X:only-child

Prawdę mówiąc pseudo-klasy only-child nie będziesz używał prawie wcale. Mimo to jest dostępna, jeśli będziez jej potrzebował.

Pozwala ona na wybranie elementów które są jedynymi dziećmi rodziców. Tłumacząc przykład powyżej, tylko paragrafowi który jest jedynym dzieckiem div będzie nadany czerwony kolor.

Weźmy pod uwagę następujący przykład.

W tym przypadku paragraf w drugim div nie będzie brany pod uwagę; jedynie przerwszy div. Z chwilą, gdy dodajesz więcej elementów dzieci do rodzica, pseudo-klasa only-child przestaje działać.

Pokaż Demo

Zgodność

  • IE9+
  • Firefox
  • Chrome
  • Safari
  • Opera

29. X:only-of-type

Ta pseudo-klasa może być użyta na kilka ciekawych sposobów. Obierze za cel tylko te elementy, które nie mają rodzeństwa. Na przykład zaznaczmy wszystkie ul, które mają tylko jeden element w liście.

Najpierw zastanów się jak tego dokonać? Możesz skorzystać z ul li, ale to wybierze wszystkie elementy listy. Jedynym rozwiązaniem będzie użycie only-of-type.

Pokaż Demo

Zgodność

  • IE9+
  • Firefox 3.5+
  • Chrome
  • Safari
  • Opera

30. X:first-of-type

Pseudo-klasa first-of-type pozwala wybrać pierwszy element z rodzeństwa danego typu.

Test A

By lepiej to zrozumieć, przeprowadźmy test. Skopiuj poniższy kod do swojego edytora:

Teraz, bez czytania dalej, wybierz tylko "2 Element Listy". Gdy Ci się to uda (lub się poddasz), doczytaj dalej.

Rozwiązanie 1

Jest kilka sposobów na rozwiązanie tego. Przerobimy te przydatne. Zacznijmy od użycia first-of-type.

Ten kod mówi "znajdź pierwszą nieuporządkowaną listę na stronie, następnie poszukaj bezpośredniego dziecka, które jest elementem listy. Następnie ogranicz się do wybrania tylko drugiego elementu listy."

Rozwiązanie 2

Inną możliwością jest skorzystanie z selektora brata.

W tym przypadku szukamy ul które występuje bezpośrednio po tagu p, a następnie szukamy ostatniego dziecka tego elemementu.

Rozwiązanie 3

Możemy robić z selektorami co tylko chcemy.

Tym razem chwytamy pierwsze ul na stronie, a następnie szukamy pierwszego elementu listy zaczynając od końca! :)

Pokaż Demo

Zgodność

  • IE9+
  • Firefox 3.5+
  • Chrome
  • Safari
  • Opera

Podsumowanie

Jeśli piszesz dla starszych przeglądarek, jak Internet Explorer 6, musisz być ostrożny korzystając z nowszych selektorów. Ale proszę, nie daj się zniechęcić do ich nauki. Bardzo byś sobie zaszkodził nie ucząc się ich. Upewnij się, by sprawdzić kompatybilność na tej liście. Ewentualnie możesz użyć świetnego skrzyptu Deana Edwarda IE9.js script , by móc korzystać z tych selektorów w starszych przeglądarkach.

Po drugie, podczas prac z bibliotekami JavaScript, jak np. JQuery, zawsze staraj się wykorzystać selektory CSS3, zamiast metod/selektorów, których dostarcza nam biblioteka. Dzięki temu kod bedzie działał szybciej, jako że silnik selektorów skorzysta z rodzimej analizy przeglądarki, a nie ze swojej.

Dzięki za przeczytanie i mam nadzieję, że wyłapałeś trika lub dwa!

Advertisement
Advertisement
Advertisement
Advertisement
Looking for something to help kick start your next project?
Envato Market has a range of items for sale to help get you started.