Szczegółowość selektorów
Jak określić ważność różnych selektorów w tym samym arkuszu stylów, odnoszących się do tych samych elementów i własności?
Sposób formatowania każdego elementu strony może być określony w kilku miejscach. O tym, jak ostatecznie będzie wyglądał wybrany element, decydują zasady kaskadowości stylów. Pozostaje jeszcze określenie ważności reguł stylów, znajdujących się w tym samym arkuszu CSS. Panuje tutaj dość intuicyjna zasada mówiąca, że bardziej szczegółowe selektory są ważniejsze.
- Selektory identyfikatora mają pierwszeństwo przed innymi, nawet jeśli znajdują się na początku arkusza CSS. Im więcej identyfikatorów zawiera selektor, tym jest bardziej szczegółowy, a więc ważniejszy.
Przykład
Tekst przedstawionego poniżej akapitu będzie czerwony (red):
📋 Zaznacz kod ▶ Edytuj na żywo
<div id="kontener"> <p id="identyfikator">...</p> </div>
📋 Zaznacz kod ▶ Edytuj na żywo
div#kontener p#identyfikator { color: red } p#identyfikator { color: green } p { color: black }
- Gdy rozpatrywane selektory nie zawierają żadnych identyfikatorów albo zawierają ich tyle samo, o ważności decyduje liczba użytych w regule klas, pseudoklas oraz atrybutów.
Przykład
Tekst przedstawionego poniżej akapitu będzie czerwony (red):
📋 Zaznacz kod ▶ Edytuj na żywo
<p class="klasa">...</p>
📋 Zaznacz kod ▶ Edytuj na żywo
p.klasa { color: red } p { color: black }
- Gdy w rozpatrywanych selektorach zarówno liczba identyfikatorów jak i klas, pseudoklas oraz atrybutów jest identyczna, bardziej szczegółowy (ważniejszy) jest selektor, który posiada więcej elementów lub pseudoelementów.
Przykład
Tekst przedstawionego poniżej akapitu będzie czerwony (red):
📋 Zaznacz kod ▶ Edytuj na żywo
<div> <p>...</p> </div>
📋 Zaznacz kod ▶ Edytuj na żywo
div p { color: red } p { color: black }
- Gdy żaden z powyższych punktów nie pozwala określić, który selektor jest bardziej szczegółowy, ważniejsze będą te deklaracje, które zostaną umieszczone na końcu.
Przykład
Tekst, określonego poniżej akapitu, będzie czerwony (red):
📋 Zaznacz kod ▶ Edytuj na żywo
p { color: black } p { color: green; color: red }
Przykład
Tekst przedstawionego poniżej akapitu będzie czerwony (red):
📋 Zaznacz kod ▶ Edytuj na żywo
<div id="kontener"> <p class="klasa">...</p> </div>
📋 Zaznacz kod ▶ Edytuj na żywo
div#kontener p.klasa { color: lime } div#kontener p.klasa { color: yellow; color: red } #kontener p.klasa { color: green } div#kontener p { color: olive } #kontener p { color: teal } div p.klasa { color: aqua } p.klasa { color: blue } .klasa { color: navy } div p { color: purple } p { color: fuchsia } * { color: black }
Komentarze
- Sławomir Kokłowski
18.05.2020 21:19
Zależy o co pytasz. Ale generalnie na tak postawione pytanie odpowiedź brzmi: tak ;-)
Zobacz więcej - Gosc
18.05.2020 20:29
Ktoś to jeszcze "ulepsza"?
Zobacz więcej - Nitr0Skay
07.01.2015 21:17
kurshtml
Teraz już jest w porządku. Dziękuję za poprawkę :)
Zobacz więcej - Sławomir Kokłowski
07.01.2015 00:41
Dziękuję za informację. Minifikator kodu usunął białe znaki z tego znacznika.
Zobacz więcej - Nitr0Skay
06.01.2015 22:24
Gość
Potwierdzam. U mnie też to występuje. Korzystam z Chrome
http://caniuse.com/#search=%3Aempty
http://i.imgur.com/T3Mv6F2.png
Zobacz więcej - Gość
06.01.2015 22:05
Chciałam zapytać: czy tu (http://www.kurshtml.edu.pl/css/pusty_element,pseudoklasy.html) nie ma błędu? U mnie zarówno pierwszy jak i trzeci akapit mają czerwone tło.
Zobacz więcej - Roberto
31.03.2013 19:27
ujemne marginesy, position:absolute, ogólnie wyjęcie z obiegu albo 'przeciwdziałanie' zmianom.
nazwy muszą być dzieckiem elementu, którego :hover powoduje zmianę - [...] jak najedziesz na 'magia' to strong nadal jest...
Zobacz więcej - GoŚćX
31.03.2013 19:21
Chciałbym wiedzieć czy istnieje taka cecha że pojawiający się element który wcześniej miał ceche i wartość: display:none; nie rozwali żadnych elementów strony, tylko pokaże się nad nimi. I gdy robię menu gdzie po najechaniu na klawisz np: galeria zwiększa on wysokoś i na nim wyskakują nazwy...
Zobacz więcej - Roberto
30.03.2013 21:03
zmiana display dziecka z none na jakiś przy :hover rodzica...
Zobacz więcej - jaaa
30.03.2013 20:12
Jak zrobić żeby po najechaniu myszką na jakiś elemnt (np: klawisz z menu) oprucz zmiany (podświetlenia klawisza) pod nim pokazywał się na przykład jakiś bloczek (zupełnie inny elemnt) jakie selektory użyć???
Zobacz więcej