Specyficzność CSS
Specyficzność CSS (z ang. ‘specifity’) określa wagę właściwości CSS. Innymi słowy, jeśli w dwóch lub więcej miejscach zostaną zadeklarowane dla tego samego elementu różne właściwości, np. różne kolory tła, specyficzność określa, która z deklaracji jest „ważniejsza”.
Ważna jest więc umiejętność obliczania specyficzności danego elementu, która pozwala niekiedy zaoszczędzić sporo czasu straconego na przeszukiwaniu pliku CSS w odpowiedzi na pytanie: „dlaczego ten akapit ma niebieskie tło, skoro deklarowałem zielone”.
Oto jak oblicza się specyficzność konkretnego selektora:
- Dodaj 1000 (styl jest umieszczony w kodzie HTML):
| <span style=”color:red”>Czerwony tekst</span> |
- Za każdy identyfikator należy dodać po 100:
| #sidebar, #footer { color:red; } |
- Każda klasa to 10:
| .form { margin-top:20px; } |
- Wszystkie inne elementy, pseudoklasy, elementy HTML mają wartość 1:
| img { border:none; } |
- Uniwersalny selektor (*) ma wartość 0 (zero).
Jeśli właściwość danego elementu będzie różnie zadeklarowana w wielu miejscach, dominującą będzie ta, która ma największą specyficzność (nawet, gdy jest zadeklarowana wcześniej niż pozostałe).
Przykłady:
- a.stopka, h4, h5 0013
- #footer, img 0101
- #sidebar, p:first-line 0102
- h2, h3, h4, h5 0004
Spośród poniższych dwóch selektorów, właściwości tego pierwszego zostaną nadane elementom, ponieważ ma on większą specyficzność.
- #sidebar p#first { color: red; } — 0201
- #sidebar p:first-line { color: blue; } — 0102
W zrozumieniu specyficzności pomóc może podstawowe narzędzie webmastera, czyli Firebug. Po zaznaczeniu elementu na karcie HTML, w oknie styl po prawej stronie można przeglądać, jakie właściwości ma on nadany w kolejności od największej specyficzności.

Przydatne linki:
- CSS Specificity: Things You Should Know
- Link Specificity¯MeyerWeb
- CSS: Specificity Wars
- Assigning property values, Cascading, and Inheritance—W3C
Ładowanie





Browser: Mozilla/5.0 (Windows; U; Windows NT 5.1; pl; rv:1.9.1.3) Gecko/20090824 Firefox/3.5.3 (.NET CLR 3.5.30729)
dAREuS
Browser: Opera/9.80 (Windows NT 6.0; U; pl) Presto/2.2.15 Version/10.00
Browser: Mozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.9.1) Gecko/20090805 Firefox/3.5.2
Pozdrawiam
Browser: Opera/9.80 (Windows NT 5.1; U; pl) Presto/2.2.15 Version/10.00
Browser: Mozilla/5.0 (Windows; U; Windows NT 6.0; pl; rv:1.9.1.3) Gecko/20090824 Firefox/3.5.3 (.NET CLR 3.5.30729)
Browser: Mozilla/5.0 (Windows; U; Windows NT 5.1; pl; rv:1.9.1.3) Gecko/20090824 Firefox/3.5.3 FirePHP/0.3
dobra robota!
Browser: Opera/9.80 (Windows NT 5.1; U; pl) Presto/2.2.15 Version/10.00
Oczywiście, jak zwykle wszystkie nowoczesne przeglądarki oprócz IE obsługują powyższe pseudoklasy."
Browser: Mozilla/5.0 (X11; U; Linux i686; pl-PL; rv:1.9.1.2) Gecko/20090820 Iceweasel/3.5.3 (Debian-3.5.3-1)
Odnośnie specyficzności. Klasy i pseudoklasy mają tą samą hierarchię. Tak twierdzą inne źródła i firebug.
Browser: Mozilla/5.0 (Windows; U; Windows NT 6.0; en-US) AppleWebKit/533.2 (KHTML, like Gecko) Chrome/5.0.342.2 Safari/533.2