0Pricing
CSS Academy · Lekcja

@scope dla stylów o ograniczonym zakresie

Ograniczaj zasięg reguł CSS do określonych poddrzew za pomocą reguły at @scope.

@scope dla stylów o ograniczonym zakresie 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.

Czym jest @scope?

Reguła at @scope (Chrome 118+, Safari 17.4+) ogranicza działanie reguł CSS do określonego poddrzewa DOM. Reguły wewnątrz @scope dotyczą wyłącznie elementów znajdujących się w zadeklarowanym zakresie, zapobiegając wyciekaniu stylów między komponentami.

Podstawowa składnia

Zakres należy zadeklarować za pomocą selektora elementu głównego zakresu. Wszystkie reguły wewnątrz dotyczą wyłącznie elementów potomnych pasujących do elementu głównego zakresu, a nie całego dokumentu.

<div class="card">
  <div class="title">Scoped Title</div>
  <div class="body">Scoped body text &mdash; styles only apply inside .card.</div>
</div>

Element główny zakresu

Element główny zakresu (@scope (.card)) określa punkt wejścia. Elementy znajdujące się w zakresie, które pasują do .title, są stylowane. Elementy znajdujące się poza .card, ale mające klasę .title, pozostają bez zmian — jest to prawdziwa enkapsulacja stylów bez użycia Shadow DOM.

Granica zakresu

Opcjonalnie można zdefiniować granicę zakresu za pomocą to: @scope (.card) to (.nested-card). Reguły obowiązują wewnątrz .card, ale zatrzymują się na elementach potomnych .nested-card — ograniczając style do jednego poziomu zagnieżdżenia komponentu i wykluczając głębiej zagnieżdżone wystąpienia.

Pseudoklasa :scope wewnątrz @scope

Wewnątrz bloku @scope :scope odnosi się do samego elementu głównego zakresu. @scope (.card) { :scope { border-radius: 8px; } } styluje bezpośrednio element .card, a nie jego elementy potomne.

Specyficzność zależna od bliskości

@scope wprowadza specyficzność zależną od bliskości: gdy do elementu pasuje wiele zakresów, wygrywa najbliższy element główny zakresu — niezależnie od specyficzności selektora. Zapobiega to nadpisywaniu głęboko zagnieżdżonych stylów komponentu przez style z odległych zakresów nadrzędnych.

@scope a CSS Modules

Moduły CSS generują unikatowe, haszowane nazwy klas, aby zapewnić zakresowanie podczas budowania — jest to kwestia bundlera JavaScript. @scope zapewnia zakresowanie natywnie w przeglądarce, bez narzędzi do budowania, haszowanych nazw ani składni specyficznej dla frameworka — to czysty CSS.

@scope a Shadow DOM

Shadow DOM tworzy pełną izolację stylów — zewnętrzne style nie mogą przeniknąć do środka. @scope tworzy częściową izolację — style z zewnątrz nadal mogą dotrzeć do elementów objętych zakresem, jeśli ich specyficzność jest wystarczająco duża. @scope to lżejsza alternatywa dla zakresowania komponentów, niewymagająca pełnej izolacji.

Warstwowanie z użyciem @scope

Połączenie @scope z @layer umożliwia precyzyjną kontrolę nad kaskadą: style ograniczone do komponentu można definiować w warstwie komponentu. W ten sposób można kompozycyjnie zarządzać zarówno kolejnością kaskady (za pomocą warstw), jak i zakresem stylów (za pomocą @scope), bez żonglowania nazwami klas.

Praktyczne przypadki użycia

Komponenty systemu projektowego: ogranicz wszystkie style przycisków do @scope (.button-group), aby style wewnętrznych przycisków nigdy nie wydostały się poza ten zakres. Izolowanie widżetu: ogranicz style widżetu zewnętrznego dostawcy do jego kontenera, zapobiegając konfliktom z globalnymi stylami strony.

Obsługa przeglądarek i mechanizm awaryjny

@scope jest obsługiwane w Chrome 118+, Safari 17.4+ i Firefox 128+. W przeglądarkach, które go nie obsługują, style wewnątrz @scope są ignorowane — kaskada przechodzi do globalnych stylów. Używaj @scope jako progresywnego ulepszenia, gdy zakresowanie komponentów jest korzystne, ale nie krytyczne.

Sprawdzenie wiedzy

Jaki problem rozwiązuje @scope, który trudno rozwiązać za pomocą samych tradycyjnych selektorów CSS?

Podsumowanie

@scope ogranicza stosowanie reguł CSS do zadeklarowanego poddrzewa DOM, umożliwiając natywne hermetyzowanie stylów bez Shadow DOM ani haszowania nazw klas przez narzędzia do budowania. Ograniczenia zakresu, specyficzność wynikająca z bliskości oraz integracja z @layer sprawiają, że jest to potężny fundament systemów projektowych z komponentami ograniczonymi do zakresu, tworzonych w czystym CSS.

Często zadawane pytania

Czy lekcja „@scope dla stylów o ograniczonym zakresie” jest bezpłatna?

Tak — pełny tekst „@scope dla stylów o ograniczonym zakresie” 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 „@scope dla stylów o ograniczonym zakresie”?

Ograniczaj zasięg reguł CSS do określonych poddrzew za pomocą reguły at @scope. Ć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 „@scope dla stylów o ograniczonym zakresie”?

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. Natywne zagnieżdżanie CSS
  2. Pseudoklasa relacyjna :has()
  3. @scope dla stylów o ograniczonym zakresie
  4. View Transitions API
← Powrót do CSS Academy