Czym jest specyficzność selektora CSS i jak działa?
Przeglądarka określa, jakie style wyświetlić na elemencie, w zależności od specyficzności reguł CSS. Zakładamy, że przeglądarka już określiła reguły pasujące do danego elementu. Wśród pasujących reguł, specyficzność, cztery wartości oddzielone przecinkami, a, b, c, d, są obliczane dla każdej reguły na podstawie następujących kryteriów:
aoznacza, czy używane są style śródliniowe. Jeśli deklaracja właściwości jest stylem śródliniowym na elemencie,awynosi 1, w przeciwnym razie 0.bto liczba selektorów ID.cto liczba klas, atrybutów i selektorów pseudoklas.dto liczba tagów i selektorów pseudo-elementów.
Wynikowa specyficzność nie jest wynikiem, ale macierzą wartości, które można porównywać kolumna po kolumnie. Porównując selektory w celu określenia, który ma najwyższą specyficzność, patrzy się od lewej do prawej i porównuje najwyższą wartość w każdej kolumnie. Zatem wartość w kolumnie b zastąpi wartości w kolumnach c i d, niezależnie od tego, jakie by one nie były. W związku z tym, specyficzność 0,1,0,0 byłaby większa niż 0,0,10,10.
W przypadku równej specyficzności: liczy się najnowsza reguła. Jeśli dwukrotnie napisałeś tę samą regułę w swoim arkuszu stylów (niezależnie od tego, czy jest to styl wewnętrzny, czy zewnętrzny), to niższa reguła w twoim arkuszu stylów jest bliżej elementu do stylizacji, jest ona uważana za bardziej specyficzną i dlatego zostanie zastosowana.
Napisałbym reguły CSS o niskiej specyficzności, aby w razie potrzeby można je było łatwo nadpisać. Podczas pisania kodu biblioteki komponentów interfejsu użytkownika CSS ważne jest, aby miały one niską specyficzność, aby użytkownicy biblioteki mogli je nadpisywać bez używania zbyt skomplikowanych reguł CSS tylko w celu zwiększenia specyficzności lub uciekania się do !important.