2024-09-29 | Podstawy programowania | 4 min czytania

Hierarchia selektorów CSS – algorytm szczegółowości


programowanie php

Hierarchia selektorów css jest ważnym elementem przy projektowaniu szaty graficznej strony internetowej – formatowaniu poszczególnych elementów. Co się dzieje gdy kilka reguł obejmuje ten sam element? Jak przewidzieć końcowy rezultat?

Czym są selektory?

CSS (Cascading Style Sheets) to język dyktujący jak elementy zapisane w HTML mają wyglądać na stronie. Kod CSS zapisywany jest przeważnie w osobnym pliku, a każde przypisanie stylu składa się z:

  • selektora; określa do jakich elementów zostanie przypisany styl,
  • deklaracji; określa styl, składa się z atrybutu i wartości.

Typy selektorów

  • ID – selektory odwołujące się do danego ID; “#id”,
  • klasy – selektory odwołujące się do klasy: “.klasa”,
  • elementu – selektory odwołujące się do danego elementu, na przykład: “p”,
  • * – selektor wszystkiego,
  • psudo-klasy – “:pseudoklasa”,
  • atrybutu; na przykład – “[type=”radio”]”,
  • pseudo-elementu – “::pseudoelement”.

Kaskadowa hierarchia selektorów

Jeśli styl dla właściwości danego atrybutu zostały zdefiniowane w różnych miejscach kodu CSS to końcowy wynik formatowania ustalany jest według hierarchii kaskadowej kolejno:

  1. kod w tagu HTML
  2. kod w pliku HTML i plik zewnętrzny
  3. ustawienia ogólne przeglądarki

Specificity – algorytm szczegółowości

Zdarza się, że do jednego elementów przypisanych jest kilka reguł. To która z nich ma największą wagę ustala algorytm. Operuje on na kilku regułach, które warto znać chcąc wiedzieć jaki styl zostanie przypisany do elementu.

Liczenie wag w hierarchii selektorów

Aby obliczyć wagę przypisywaną do danej reguły stylu zaczynamy od trzech kolumn z zerami. Następnie liczymy:

  • Pierwsza kolumna odpowiada ilości selektorów ID
  • Druga kolumna- ilości klas w tym pseudo-klas i selektorów atrybutów
  • Trzecia kolumna- ilości elementów w tym pseudo-elementów

Po podliczeniu uzyskane liczby można porównać między sobą. Robi się to zaczynając od pierwszej kolumny i idąc po kolejnych. Na przykład, [9,0,0] ma większą wagę od [3, 11, 11], ale mniejszą od [9, 0, 1]. Zamiast porównywania kolejnymi kolumnami można przekształcić je na liczbę wybierając podstawę większą od największej zawartej w niej liczbie. Dla podanego przykładu ([9,0,0]) można wybrać liczbę 10 i wymnożyć kolejne kolumny: 0*10^0+1*10^1+9*10^2. Jednak należy pamiętać, że nieważne jak wiele jest niższych wagą selektorów, wyższy będzie miał większe znaczenie, to znaczy, [1,0,0] jest ważniejsze od [0, 12, 9].

Szczególne przypadki

Powyższe zasady uwzględniają większość przypadków, jednak należy podkreślić kilka specyficznych sytuacji.

Selektor “*” nie ma żadnej wagi. Podobnie jak “:where()” i jej parametry.

Nie zawsze selektory są proste, istnieją również selektory złożone, tworzone za pomocą kombinatorów, takich jak: “+” czy “>”. Mimo, że zwiększają one szczegółowość reguły to nie przypisuje się im wagi.

Reguły osadzone, tzw. “nesting” oraz pseudo-klasy “:not()”, “:is()” i “:has()” same w sobie nie mają wagi. Jednak ich parametry już ją mają, oblicza się ją jako równowartość wagi najważniejszego selektora.

Hierarchia selektorów – podsumowanie

Konkludując, przy używaniu wielu reguł może zdarzyć się sytuacja, że odnoszą się one do jednego elementu. Aby wiedzieć, jaki będzie końcowy efekt jego formatowania należy posłużyć się algorytmem szczegółowości, który umożliwia obliczenie wagi danej reguły. Warto również pamiętać, że gdy dwie zasady mają taką samą wagę, to liczy się ta zapisana później, pojawiająca się dalej w kodzie. Również gdy zasada zapisana w linii kodu HTML konkuruje z taką zapisaną w osobnym arkuszu CSS, to ma ona pierwszeństwo.

Najczęściej czytane:

prowadzenie firmy

Dzielenie dysku na partycje to ważny element instalacji systemu operacyjnego. Możemy podzielić dysk na partycje w czasie lub po instalacji Windows 11.

modernizacja wordpress

Z przedstawionych we wisie 3 sposobów na usunięcie /category wg mnie najlepszym sposobem jest wykorzystanie wtyczki Yoast SEO. Polecamy tą wtyczkę do SEO.

prowadzenie firmy

Resetowanie hasła w systemie Windows może być konieczne, gdy zapomnimy swoje aktualne hasło lub chcemy zresetować hasło dla innego użytkownika.


Zapoznaj się z innymi wpisami:

programowanie php

Formaty dat mogą przydać się podczas tworzenia strony internetowej, by wyświetlić przydatne informacje. Dowiedz się jak je szybko zmodyfikować.

programowanie php

Font Awesome jest jednym z najpopularniejszych narzędzi, które umożliwiają programistom dodanie pięknych i skalowalnych ikon do stron internetowych.

programowanie php

Bootstrap jest jednym z najpopularniejszych frameworków front-endowych, które ułatwiają projektowanie i budowanie responsywnych stron internetowych.