Zauważyłem, przeglądając różnego typu kursy, że specyficzność CSS jest tematem bardzo rzadko poruszanym (jeśli nie wcale; pobieżnie szukając u Zeldmana nie znalazłem, widziałem w spisie treści u Meyera). O co chodzi?

Mamy styl:

  • div p {color: #00b;}
  • p {color: #f00;}

Jakim kolorem zostanie wpisany tekst w <div><p>tekst<p><div>?

Biorąc pod uwagę to, czego można się dowiedzieć z większości kursów: czerwonym, bo p jest niżej niż div p.

Nie jest to prawda. Tekst będzie niebieski. Właśnie ze względu na wspomnianą specyficzność.

Elementy w CSS mają różne wartości. Tag HTML ma najniższą, równą 1; klasa ma wartość 10 a identyfikator jest równy 100. Zatem p w naszym przykładzie = 1, a div p = 2.

Zatem div#id p.klasa “wygra” z div p niezależnie od kolejności w jakiej zostaną ułożone.