Przejdź do treści

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.

  1. 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 }
  2. 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 }
  3. 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 }
  4. 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
    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
    Gosc

    18.05.2020 20:29
    Ktoś to jeszcze "ulepsza"?
    Zobacz więcej

  • Nitr0Skay
    Nitr0Skay

    07.01.2015 21:17
    kurshtml
    Teraz już jest w porządku. Dziękuję za poprawkę :)
    Zobacz więcej

  • Sławomir Kokłowski
    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
    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ść
    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
    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
    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
    Roberto

    30.03.2013 21:03
    zmiana display dziecka z none na jakiś przy :hover rodzica...
    Zobacz więcej

  • jaaa
    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

Zobacz więcej komentarzy

Facebook