CSS Academy · Lekcja

Extend i selektory zastępcze

Udostępniaj style między selektorami za pomocą @extend i niewidocznych selektorów zastępczych.

Lekcja 3 z 412 kroki

Extend i selektory zastępcze to bezpłatna lekcja CSS Academy na CoddyKit. To lekcja 3 z 4. Możesz przeczytać całą lekcję poniżej za darmo — a potem ćwiczyć ją interaktywnie w przeglądarce z wbudowanym edytorem kodu i tutorem AI dostępnym 24/7. To część ścieżki edukacyjnej CSS Academy, a Twój postęp synchronizuje się między webem a aplikacją CoddyKit. Kurs CSS Academy zawiera 4 lekcji w sumie.

@extend w Sass

@extend umożliwia jednemu selektorowi przejęcie wszystkich stylów innego selektora. Zamiast powielać kod, rozszerzanie tworzy wspólny zestaw reguł w skompilowanym CSS.

<div class="error">Error message</div>
  <div class="critical-error">Critical error message</div>

Selektory zastępcze

Selektor zastępczy (poprzedzony symbolem %) definiuje blok stylów, który nigdy nie jest kompilowany samodzielnie — tylko wtedy, gdy zostanie rozszerzony. Nie generuje CSS, dopóki coś go nie rozszerzy.

<div class="product-card">Product card</div>
  <div class="profile-card">Profile card</div>

Dlaczego selektory zastępcze zamiast klas

Rozszerzenie rzeczywistej klasy dodaje cały kontekst jej selektora do skompilowanego wyniku. Selektory zastępcze są bardziej przejrzyste — generują pogrupowane selektory wyłącznie dla selektorów, które je rozszerzają.

Wynik kompilacji @extend

Gdy wiele selektorów rozszerza ten sam selektor zastępczy, Sass grupuje je w regułę rozdzielaną przecinkami:

<div class="product-card">Product card</div>
  <div class="profile-card">Profile card</div>

Pułapki @extend

@extend ma istotne ograniczenia:

  • Nie można go używać wewnątrz media queries
  • Może tworzyć nieoczekiwane, rozbudowane grupy selektorów, gdy występują łańcuchy rozszerzeń
  • Utrudnia prześledzenie skompilowanego CSS do plików źródłowych

Kompromisy między @extend a mixinem

Porównanie:

  • @extend: mniejszy CSS (wspólne reguły), ale złożone łańcuchy selektorów i ograniczenia dotyczące media queries
  • @mixin: powiela deklaracje, ale jest bardziej przewidywalny i można go używać wewnątrz media queries

Mixin jest zwykle lepszym rozwiązaniem

We współczesnym Sass zwykle preferuje się mixiny zamiast @extend. HTTP/2 i kompresja gzip sprawiają, że powielanie deklaracji ma mniejsze znaczenie, a możliwość debugowania mixinów jest ważniejsza niż niewielka różnica w rozmiarze CSS.

Kiedy warto użyć @extend

@extend (w połączeniu z selektorami zastępczymi) sprawdza się, gdy:

  • Wiele selektorów rzeczywiście współdzieli ten sam stan semantyczny (np. stany błędu)
  • Kod nie znajduje się wewnątrz media queries
  • Style bazowe są stabilne i dobrze zdefiniowane

Selektory zastępcze a motywy

Selektory zastępcze dobrze sprawdzają się w przypadku zestawów narzędziowych przypominających reset, które są przejmowane przez wiele komponentów:

<a href="#" class="skip-link">Skip to content</a>
  <span class="sr-label">Screen reader label</span>

Uwagi dotyczące deprecacji

Niektóre przewodniki stylu i zespoły całkowicie zakazują używania @extend ze względu na jego złożoność i rozrost selektorów, który może powodować. Należy znać kompromisy i przestrzegać konwencji przyjętych w zespole.

Szybkie sprawdzenie

Czym różni się rozszerzanie zwykłej klasy od rozszerzania selektora zastępczego (%)?

Podsumowanie

@extend umożliwia selektorowi przejęcie stylów innego selektora, grupując selektory w skompilowanym CSS. Selektory zastępcze (%name) nie generują niczego do czasu rozszerzenia — są bardziej przejrzyste niż rozszerzanie rzeczywistych klas. Należy unikać @extend wewnątrz media queries. We współczesnym Sass zwykle preferuje się mixiny zamiast @extend ze względu na ich przewidywalność i łatwiejsze debugowanie.

Bezpłatny start

Ucz się CSS dzięki korepetycjom AI — za darmo

Pisz i uruchamiaj kod w przeglądarce, otrzymuj natychmiastową pomoc od korepetytora AI dostępnego 24/7 i kontynuuj naukę w sieci lub w aplikacji.

Kursy
40
Lekcje
159

Często zadawane pytania

Czy lekcja „Extend i selektory zastępcze” jest bezpłatna?

Tak — pełny tekst „Extend i selektory zastępcze” jest dostępny za darmo tutaj w sieci. Aby ćwiczyć ją interaktywnie (wbudowany edytor kodu i tutor AI dostępny 24/7) i odblokować resztę kursu CSS Academy, przejdź na CoddyKit PRO. Kurs CSS Academy zawiera 4 lekcji w sumie.

Co nauczysz się w „Extend i selektory zastępcze”?

Udostępniaj style między selektorami za pomocą @extend i niewidocznych selektorów zastępczych. Ćwiczysz CSS Academy z praktycznym kodem, który uruchamiasz bezpośrednio w przeglądarce, a tutor AI dostępny 24/7 odpowiada na Twoje pytania podczas pracy nad lekcją.

Czy potrzebuję doświadczenia, aby zacząć CSS Academy?

Nie wymagamy żadnego doświadczenia. CSS Academy w CoddyKit jest strukturyzowany dla początkujących i zaawansowanych użytkowników, więc możesz zacząć tutaj lub od początku i uczyć się w swoim tempie. To lekcja 3 z 4.

Ile czasu zajmuje lekcja „Extend i selektory zastępcze”?

Większość lekcji CoddyKit trwa około 5–10 minut. Każda lekcja to mały, interaktywny krok, dzięki czemu robisz systematyczne postępy i zawsze wracasz dokładnie do tego samego miejsca — na webie i w aplikacji.

Czy mogę pisać i uruchamiać kod w tej lekcji CSS Academy?

Tak. Każda lekcja CSS Academy zawiera wbudowany edytor kodu, więc piszesz i uruchamiasz prawdziwy kod bezpośrednio w przeglądarce i od razu otrzymujesz sprzężenie zwrotne od AI — bez konfiguracji na komputerze.

Wszystkie lekcje w tym kursie

  1. Zmienne, zagnieżdżanie i fragmenty
  2. Miksiny i dołączanie
  3. Extend i selektory zastępcze
  4. Funkcje Sass i sterowanie przepływem
← Powrót do CSS Academy