Extend i selektory zastępcze
Udostępniaj style między selektorami za pomocą @extend i niewidocznych selektorów zastępczych.
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.
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
- Zmienne, zagnieżdżanie i fragmenty
- Miksiny i dołączanie
- Extend i selektory zastępcze
- Funkcje Sass i sterowanie przepływem