Jeśli zamierzasz używać CSS regularnie, musisz zrozumieć, jaka jest specyfikacja i jak jest stosowana.

Poza spławikami i pozycjami, specyfika może być jedną z najtrudniejszych rzeczy do przyzwyczajenia się, nie mówiąc już o opanowaniu. Selektory używane w CSS mają różne wagi i są kontrolowane przez specyfikę. Dlatego czasami, gdy stosujesz regułę do elementu, nie ma to odzwierciedlenia w twoim projekcie.

Jeśli kiedykolwiek korzystałeś z ważnego słowa kluczowego, aby zhackować swój CSS, ten artykuł jest dla Ciebie.

Jak przeglądarka odczytuje CSS

Aby uzyskać solidne podstawy, musisz wiedzieć, jak przeglądarka faktycznie odczytuje CSS i w jaki sposób reguły są nadpisywane.

Po pierwsze, przeglądarka odczyta arkusz stylów od góry do dołu, co oznacza, że ​​za pomocą tego kodu:

/*Line 10*/ul li a {color: red;}/*Line 90*/ul li a {color: blue;}

Reguła podana w linii 10 zostanie nadpisana, a znacznik zakotwiczenia będzie niebieski, ponieważ przeglądarka będzie uwzględniać reguły w dalszej kolejności w CSS, aby zachować wyższy priorytet.

Działa to również w przypadku faktycznego porządku importowania plików css, na przykład:

Ponieważ umieściłeś plik custom.css po pliku style.css wszystko, co napiszesz w pliku style.css (obecnie dyskontowanie, waga selektorów) zostanie zastąpione i zastąpione tym, co jest w custom.css, technika ta jest często używana według twórców motywów, aby dać użytkownikowi trochę miejsca na dodawanie własnych stylów bez zmiany głównego pliku. (Należy jednak pamiętać, że plik custom.css nie zastępuje w całości style.css, tylko te reguły, które zostały specjalnie zastąpione, zostaną zastąpione).

Specyficzność

Wszystko powyżej ma zastosowanie tylko wtedy, gdy używasz tej samej wagi na każdym selektorze. Jeśli określasz identyfikatory, klasy lub elementy stosów, to nadajesz im wagę, a to jest specyfika.

Istnieją cztery kategorie definiujące poziom specyficzności selektora: style śródliniowe (te są czasem używane przez javascript), identyfikatory, klasy i elementy. Jak zmierzyć specyfikę? Swoistość jest mierzona w punktach, przy czym stosowana jest najwyższa wartość punktów.

  • Identyfikatory są warte 100 punktów.
  • Zajęcia są warte 10 punktów.
  • Elementy są warte 1 punkt.

Wiedząc to, jeśli używasz selektora takiego jak to:

#content .sidebar .module li a

Jego całkowita waga wynosi 122 punkty (100 + 10 + 10 + 1 +1), co jest identyfikatorem, dwiema klasami i dwoma elementami.

Rzeczy do zapamiętania

  • Dowody tożsamości mają zbyt dużą wagę w porównaniu do klas i elementów, więc powinieneś ograniczyć użycie identyfikatorów w swoich arkuszach stylów do absolutnego minimum.
  • W przypadkach, w których selektory mają tę samą wagę, kolejność, w jakiej się pojawiają, jest przywracana, przy czym ta druga ma wyższy priorytet.
  • Style osadzone w stylach atutowych HTML w arkuszach stylów, ponieważ są bliższe elementowi.
  • Jedynym sposobem na przesłonięcie stylów wbudowanych jest użycie ważnej instrukcji!
  • Pseudo klasy i atrybuty mają taką samą wagę jak zwykłe klasy.
  • Pseudoelementy mają tę samą wagę, co normalny element.
  • Uniwersalny selektor (*) nie ma ciężaru.

Przykłady

ul li a {color: red;}

Ten selektor będzie miał wagę 3, co oznacza, że ​​wystarczy dodać klasę gdzie indziej, możesz ją przesłonić.

.content #sidebar {width: 30%;}

Ten selektor ma wagę 110 punktów, głównie ze względu na identyfikator, który dodaje 100 punktów w sumie 110.

.post p:first-letter {font-size: 16px;}

Ten selektor ma wagę 12 punktów, ponieważ pseudoelement: pierwsza litera waży tylko 1 punkt, podobnie jak znacznik p.

p {font-family: Helvetica, arial, sans-serif;}

Ten selektor waży tylko 1 punkt, ten typ selektora powinien być używany u góry strony podczas zaznaczania podstawowych stylów, które później mogą zostać nadpisane dla określonych obszarów.

Zawsze pamiętaj, że aby zastąpić selektor ID, musisz napisać 256 klas dla tego samego elementu, jak na przykład:

#title {font-weight: bold;}.home .page .content .main .posts .post .post-content .headline-area .wrapper /* ... etc. ... */ .title {font-weight: normal;}

Tylko w ten sposób drugi selektor pobije ten, używając identyfikatora.

Wniosek

Swoistość nie jest błyskotliwym aspektem CSS, ale moim zdaniem jest to obszar, który jest najczęściej pomijany. Prawidłowa specyfika nie tylko pomaga uniknąć błędów, ale także przyspieszy rozwój i ostateczną witrynę.

Czy nadużywasz identyfikatorów podczas pisania CSS? Czy kiedykolwiek wróciłeś! Ważne? Daj nam znać w komentarzach.

Wyróżniony obraz / miniatura, precyzyjny obraz przez Shutterstock.