Pseudoklasa CSSPseudoklasy

:root

Pasuje do elementu głównego dokumentu, w HTML do znacznika html. Zwyczajowe miejsce na zmienne CSS całej strony.

Na tej stronie

Przykład

#
CSS
:root {
  --brand: #7c3aed;
  --surface: #18181b;
  --radius: 12px;
}

.card {
  padding: 14px;
  border-left: 4px solid var(--brand);
  border-radius: var(--radius);
  background: var(--surface);
}
Podgląd

Definicja i zastosowanie

#

Pseudoklasa :root wybiera korzeń drzewa dokumentu. Na stronie HTML to zawsze element <html>, więc :root i html wskazują ten sam element. Różnią się wagą: :root jako pseudoklasa ma specyficzność (0, 1, 0), a html jako selektor typu tylko (0, 0, 1).

Najczęściej trzyma się tu zmienne CSS (właściwości niestandardowe) dla całej strony: kolory marki, odstępy, promienie zaokrągleń. Zmienne dziedziczą się w dół drzewa, więc zapisane na :root są dostępne w każdym elemencie przez var(--nazwa).

W :root ustawia się też rzeczy, które dotyczą całego dokumentu: color-scheme, bazowy font-size, od którego liczone są jednostki rem, czy scroll-behavior. Motyw ciemny albo jasny zmienisz, nadpisując zmienne w jednym miejscu, np. w @media (prefers-color-scheme: light) albo w regule :root[data-theme="light"].

Składnia

#
Składnia
:root { --nazwa: wartość; }

Typowe zastosowania

#
  • --brand

    Jedna zmienna koloru zmienia naraz przycisk i znaczek.
  • --radius

    Promień zaokrągleń wszystkich elementów ustawiony w jednym miejscu.
  • --brand i --radius

    Kilka zmiennych naraz to gotowy motyw. Komponenty się nie zmieniają, zmieniają się tylko wartości.
  • font-size

    Bazowy rozmiar czcionki dokumentu. Tekst podany w rem rośnie razem z nim.

Typowe zastosowania w praktyce

#

--brand

Jedna zmienna koloru zmienia naraz przycisk i znaczek.
:root { --brand: #7c3aed; }

--radius

Promień zaokrągleń wszystkich elementów ustawiony w jednym miejscu.
:root { --radius: 999px; }

--brand i --radius

Kilka zmiennych naraz to gotowy motyw. Komponenty się nie zmieniają, zmieniają się tylko wartości.
:root { --brand: #10b981; --radius: 12px; }

font-size

Bazowy rozmiar czcionki dokumentu. Tekst podany w rem rośnie razem z nim.
:root { font-size: 20px; }

Więcej przykładów

#
Przełączanie motywu jednym atrybutem
CSS
:root {
  --bg: #18181b;
  --fg: #e5e5e5;
}

:root[data-theme="light"] {
  --bg: #f4f4f5;
  --fg: #18181b;
}

.panel {
  background: var(--bg);
  color: var(--fg);
}
Podgląd

Kliknij przycisk. Skrypt zmienia tylko atrybut data-theme na elemencie <html>, a kolory podmieniają się przez zmienne.

Obsługa przeglądarek

#

Szeroko dostępne

Działa we wszystkich nowoczesnych przeglądarkach, także na telefonach. Możesz używać bez obaw.

  • Chrome
  • Edge
  • Firefox
  • Safari

Dobre praktyki

#
  • Nazywaj zmienne od roli, a nie od wartości: --color-accent zamiast --purple. Zmiana motywu nie będzie wtedy wymagała zmiany nazw.
  • Zmienne na :root są globalne. Wartości potrzebne tylko w jednym komponencie definiuj na tym komponencie, np. .card { --gap: 12px; }.
  • Pamiętaj, że :root waży więcej niż html. Reguła html { … } nie nadpisze właściwości ustawionej w :root, nawet jeśli stoi niżej.

Powiązane hasła

#

Widzisz błąd albo brakuje przykładu? Napisz do nas.