Kombinator CSSSelektory

A + B

Znak + wybiera element B, który stoi bezpośrednio za elementem A i ma z nim wspólnego rodzica.

Na tej stronie

Przykład

#
CSS
h3 + p {
  font-size: 17px;
  color: #fff;
}
Podgląd

Definicja i zastosowanie

#

Kombinator sąsiada, nazywany też kombinatorem następnego rodzeństwa, łączy dwa elementy stojące tuż obok siebie. Zapis h2 + p trafi w akapit, który następuje zaraz po nagłówku h2, ale już nie w kolejne akapity ani w akapit oddzielony innym elementem.

Oba elementy muszą mieć wspólnego rodzica, a B musi stać za A, nigdy przed nim. Tekst i komentarze między nimi się nie liczą, liczą się tylko elementy.

Typowe zastosowania to wyróżnienie pierwszego akapitu po nagłówku, odstęp między sąsiednimi elementami (li + li) oraz reakcja na stan pola formularza: input:checked + label zmienia etykietę stojącą zaraz za zaznaczonym polem.

CSS nie ma osobnego kombinatora poprzedniego sąsiada. Gdy chcesz ostylować element stojący przed innym, użyj :has(): h2:has(+ p) wybiera nagłówek, po którym stoi akapit.

Składnia

#
Składnia
A + B { właściwość: wartość; }

Przykładowe selektory

#
  • .start + span

    Tylko element stojący zaraz za .start. Czwórka już nie pasuje.
  • span + span

    Każdy span, tuż przed którym stoi inny span. Szóstka odpada, bo jej poprzednikiem jest em.
  • .start + span + span

    Kombinatory łączą się w łańcuch: tu drugi element za .start.
  • .demo > * + *

    Każde dziecko ramki, które ma poprzednika. Szary zostaje tylko pierwszy element, dlatego ten wzór służy do odstępów między elementami.

Przykładowe selektory w praktyce

#

.start + span

Tylko element stojący zaraz za .start. Czwórka już nie pasuje.
.start + span { background: #7c3aed; color: #fff; }

span + span

Każdy span, tuż przed którym stoi inny span. Szóstka odpada, bo jej poprzednikiem jest em.
span + span { background: #7c3aed; color: #fff; }

.start + span + span

Kombinatory łączą się w łańcuch: tu drugi element za .start.
.start + span + span { background: #7c3aed; color: #fff; }

.demo > * + *

Każde dziecko ramki, które ma poprzednika. Szary zostaje tylko pierwszy element, dlatego ten wzór służy do odstępów między elementami.
.demo > * + * { background: #7c3aed; color: #fff; }

Więcej przykładów

#
Etykieta reagująca na zaznaczone pole
CSS
.option input:checked + label {
  border-color: #a78bfa;
  background: rgb(124 58 237 / 0.2);
  color: #fff;
}
Podgląd

Kliknij drugą opcję. Styl przechodzi na etykietę stojącą tuż za zaznaczonym polem.

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

#
  • Do odstępów między elementami listy wystarczy li + li { margin-top: 8px; }: pierwszy element nie dostanie zbędnego marginesu. W kontenerach flex i grid prostszy jest gap.
  • Przy polach formularza zachowaj kolejność w HTML: najpierw input, potem label. Kombinator działa tylko w przód.
  • Poprzedniego sąsiada wybierzesz przez :has(), np. label:has(+ input:invalid) to etykieta stojąca przed błędnym polem.

Powiązane hasła

#

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