Selektor CSSSelektory

.klasa

Wybiera elementy, które mają podaną klasę w atrybucie class. Najczęściej używany selektor do stylowania komponentów.

Na tej stronie

Przykład

#
CSS
.btn {
  padding: 8px 14px;
  border: 0;
  border-radius: 8px;
  background: #3f3f46;
  color: #fff;
  font-weight: 600;
}

.btn.primary {
  background: #7c3aed;
}
Podgląd

Definicja i zastosowanie

#

Selektor klasy zaczyna się kropką: .card wybierze każdy element, który w atrybucie class ma słowo card. Atrybut może zawierać kilka klas rozdzielonych spacjami (class="card pro"), a selektor pasuje, gdy wśród nich jest ta szukana.

Klasy to podstawa porządnego CSS. Jedną klasę możesz nadać wielu elementom różnego typu, a jeden element może mieć kilka klas. Specyficzność klasy to (0, 1, 0): więcej niż selektor typu, ale dużo mniej niż identyfikator, więc reguły łatwo ze sobą łączyć i nadpisywać.

Kilka klas zapisanych razem, bez spacji, oznacza „wszystkie naraz”: .btn.primary trafi tylko w element, który ma obie klasy. Ze spacją (.card .title) to już zupełnie inny selektor, kombinator potomka.

Wielkość liter ma znaczenie: .Card i .card to dwie różne klasy. Nazwa klasy w selektorze nie może też zaczynać się od cyfry (np. .1kolumna) bez ucieczki znakowej, dlatego najprościej takich nazw unikać.

Składnia

#
Składnia
.nazwa-klasy { właściwość: wartość; }

Warianty zapisu

#
  • .tag

    Każdy element z klasą tag, niezależnie od znacznika i od innych klas.
  • .tag.hot

    Dwie klasy bez spacji: element musi mieć obie naraz.
  • button.tag

    Znacznik połączony z klasą: tylko przyciski, które mają klasę tag.
  • [class~="tag"]

    Selektor atrybutu, który działa dokładnie jak .tag i ma tę samą wagę. Klasa to po prostu wygodny skrót.

Warianty zapisu w praktyce

#

.tag

Każdy element z klasą tag, niezależnie od znacznika i od innych klas.
.tag { background: #7c3aed; color: #fff; }

.tag.hot

Dwie klasy bez spacji: element musi mieć obie naraz.
.tag.hot { background: #7c3aed; color: #fff; }

button.tag

Znacznik połączony z klasą: tylko przyciski, które mają klasę tag.
button.tag { background: #7c3aed; color: #fff; }

[class~="tag"]

Selektor atrybutu, który działa dokładnie jak .tag i ma tę samą wagę. Klasa to po prostu wygodny skrót.
[class~="tag"] { background: #7c3aed; color: #fff; }

Więcej przykładów

#
Nazewnictwo BEM: blok, element, modyfikator
CSS
.card {
  padding: 12px 14px;
  border-radius: 12px;
  background: #18181b;
}

.card__title {
  margin: 0 0 4px;
  font-size: 16px;
}

.card--pro {
  outline: 2px solid #f59e0b;
}
Podgląd

W BEM każda część komponentu dostaje własną klasę, więc wszystkie selektory mają tę samą, niską wagę i nie zależą od struktury HTML.

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 klasy od roli, a nie od wyglądu: .alert przetrwa zmianę koloru, .czerwony-tekst już nie.
  • Zamiast wydłużać selektor (.sidebar .menu .item), nadaj elementowi własną klasę. Reguły będą krótsze, a specyficzność niska i przewidywalna.
  • W JavaScripcie klasy dodasz i usuniesz przez element.classList.add("active") albo classList.toggle(). To najprostszy sposób na zmianę wyglądu w reakcji na działanie użytkownika.

Powiązane hasła

#

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