Pseudoklasa CSSPseudoklasy

:where()

Działa jak :is(), ale zawsze ma zerową specyficzność. Idealna do stylów bazowych, które łatwo nadpisać.

Na tej stronie

Przykład

#
CSS
:where(.btn) {
  padding: 8px 14px;
  border: 0;
  border-radius: 8px;
  background: #3f3f46;
  color: #fff;
}

.buy {
  background: #10b981;
}
Podgląd

Pierwsza reguła gra rolę stylu z biblioteki komponentów: dzięki :where() ma wagę (0, 0, 0). Druga to Twoja zwykła klasa, która wygrywa bez !important, niezależnie od kolejności reguł.

Definicja i zastosowanie

#

Pseudoklasa :where() przyjmuje listę selektorów i pasuje do elementu, który pasuje do dowolnego z nich, dokładnie jak :is(). Różnica jest jedna, ale ważna: cokolwiek wpiszesz w nawias, :where() dodaje do specyficzności zero.

Dzięki temu nadaje się do stylów, które mają łatwo ustępować: resetów, stylów domyślnych w bibliotekach komponentów i motywach. Reguła :where(.card) p ma wagę samego p, więc każdy użytkownik biblioteki nadpisze ją zwykłą klasą, bez !important.

Zerowana jest tylko część w nawiasie. W selektorze :where(.card) .title klasa .title nadal waży (0, 1, 0). Lista jest też wyrozumiała jak w :is(): błędne selektory są pomijane, a reszta działa.

Składnia

#
Składnia
:where( <lista selektorów> )

Przykładowe selektory

#
  • :where(#intro)

    (0, 0, 0)

    Identyfikator w nawiasie nie daje wagi, więc zwykłe p wygrywa. Tło jest zielone.
  • :is(#intro)

    (1, 0, 0)

    Dla porównania :is() zachowuje wagę identyfikatora i wygrywa. Tło jest niebieskie.
  • :where(#intro).note

    (0, 1, 0)

    Zerowana jest tylko część w nawiasie. Klasa .note waży normalnie i pokonuje p. Tło jest niebieskie.
  • :where(#intro, :nieznana)

    (0, 0, 0)

    Nieznany selektor na liście jest pomijany, a reszta działa. Tło jest niebieskie.

Przykładowe selektory w praktyce

#

:where(#intro)

Identyfikator w nawiasie nie daje wagi, więc zwykłe p wygrywa. Tło jest zielone.
:where(#intro) { background: royalblue; }
p { background: seagreen; }

:is(#intro)

Dla porównania :is() zachowuje wagę identyfikatora i wygrywa. Tło jest niebieskie.
:is(#intro) { background: royalblue; }
p { background: seagreen; }

:where(#intro).note

Zerowana jest tylko część w nawiasie. Klasa .note waży normalnie i pokonuje p. Tło jest niebieskie.
:where(#intro).note { background: royalblue; }
p { background: seagreen; }

:where(#intro, :nieznana)

Nieznany selektor na liście jest pomijany, a reszta działa. Tło jest niebieskie.
:where(#intro, :nieznana) { background: royalblue; }

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

#
  • Resety i style domyślne pisz w :where(). Każda późniejsza reguła, nawet z pojedynczym selektorem typu, łatwo je nadpisze.
  • Nie opakowuj w :where() stylów, które mają wygrywać, na przykład stanów błędu. Zerowa waga sprawi, że przegrają z byle czym.

Powiązane hasła

#

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