SASS `@at-root`
Ten artykuł wyjaśnia @at-root
w SASS.
Omówimy wszystko od podstaw użycia @at-root
po zaawansowane przykłady, krok po kroku.
YouTube Video
O dyrektywie SASS @at-root
@at-root
to dyrektywa w SASS służąca do przenoszenia zagnieżdżonych selektorów lub właściwości z bieżącego zagnieżdżenia do nadrzędnego zakresu. Wykorzystując tę funkcję, możesz kontrolować głębokość zagnieżdżenia i efektywniej generować zamierzony CSS.
Podstawowe użycie @at-root
Zagnieżdżanie w SASS poprawia czytelność kodu, ale zbyt głębokie zagnieżdżanie może prowadzić do generowania niezamierzonego CSS. Korzystając z @at-root
, możesz wyłączyć określone bloki kodu ze struktury zagnieżdżenia.
Podstawowa składnia
1@at-root {
2 // Code to be output at the parent (root) scope
3}
Przykładowe użycie
1.nav {
2 color: blue;
3 @at-root {
4 .nav-item {
5 color: red;
6 }
7 }
8}
Skompilowany CSS
1.nav {
2 color: blue;
3}
4.nav-item {
5 color: red;
6}
- Dzięki
@at-root
selektor.nav-item
zostaje wygenerowany poza.nav
.
@at-root w zagnieżdżonych selektorach
Nawet przy głębokim zagnieżdżeniu użycie @at-root
pozwala przenieść wybrane selektory na poziom główny (root). Umożliwia to generowanie kontrolowanego CSS nawet w złożonych strukturach.
Przykładowe użycie
1.card {
2 background: white;
3 .card-header {
4 color: black;
5 @at-root .card-title {
6 font-size: 20px;
7 }
8 }
9}
Skompilowany CSS
1.card {
2 background: white;
3}
4.card .card-header {
5 color: black;
6}
7.card-title {
8 font-size: 20px;
9}
- Dzięki
@at-root
selektor.card-title
zostaje wygenerowany poza.card-header
.
@at-root z argumentami
Podając argumenty, możesz elastyczniej kontrolować działanie @at-root
.
argument 'without'
Gdy użyjesz argumentu without
, wynik pominie wskazane zakresy. Innymi słowy, możesz usunąć reguły nadrzędne lub zapytania medialne.
Przykładowe użycie
1.nav {
2 @media (min-width: 768px) {
3 &__item {
4 @at-root (without: media) {
5 color: red;
6 }
7 }
8 }
9}
Skompilowany CSS
1.nav__item {
2 color: red;
3}
- W tym przypadku
@at-root (without: media)
wyłącza zakres zapytań medialnych, a.nav__item
zostaje wygenerowany na poziomie głównym (root).
argument 'with'
Użycie with
pozostawia w wyniku jedynie wskazane zakresy. Przydatne, gdy chcesz wygenerować style na poziomie głównym (root), zachowując określone zakresy.
Przykładowe użycie
1.nav {
2 &__item {
3 @media (min-width: 768px) {
4 @at-root (with: media) {
5 &-large {
6 font-size: 18px;
7 }
8 }
9 }
10 }
11}
Skompilowany CSS
1@media (min-width: 768px) {
2 .nav__item-large {
3 font-size: 18px;
4 }
5}
@at-root (with: media)
przenosi selektor na poziom główny (root), zachowując strukturę zapytań medialnych.
Określanie wielu warunków
Możesz również określić wiele zakresów jednocześnie, oddzielonych spacjami.
Przykładowe użycie
1.wrapper {
2 @media (min-width: 600px) {
3 @at-root (without: rule media) {
4 .global-style {
5 color: green;
6 }
7 }
8 }
9}
Skompilowany CSS
1.global-style {
2 color: green;
3}
- W tym przykładzie wykluczono zarówno
rule
(zwykłe selektory), jak imedia
(zapytania medialne), więc.global-style
nie należy do żadnego zakresu i jest w całości generowany na poziomie głównym (root). To przydatne, gdy chcesz celowo definiować style globalne nawet w złożonym zagnieżdżeniu.
Łączenie z zapytaniami medialnymi
Używając @at-root
, możesz generować style najwyższego poziomu, nawet będąc wewnątrz reguł @media. Dzięki temu możesz definiować responsywność na poziomie komponentu.
Przykładowe użycie
1.container {
2 @media (min-width: 768px) {
3 @at-root {
4 .container-large {
5 width: 80%;
6 }
7 }
8 }
9}
Skompilowany CSS
1.container-large {
2 width: 80%;
3}
- Za pomocą
@at-root
możesz również generować style na poziomie głównym (root) z wnętrza zapytań medialnych. Ułatwia to definiowanie niezależnych stylów globalnych dla każdego breakpointu.
Przypadki użycia @at-root
@at-root
jest przydatna, gdy chcesz generować style na poziomie głównym (root) w określonych warunkach. Szczególnie pomocna przy obsłudze zapytań medialnych lub stylów specyficznych dla motywów wewnątrz komponentów.
Oddzielanie komponentów i motywów
Dzięki @at-root
możesz generować niezależne klasy globalne nawet wewnątrz zapytań medialnych. To ułatwia organizowanie motywów i stanów na poziomie komponentu.
Przykładowe użycie
1.card {
2 background: white;
3 color: black;
4
5 @media (prefers-color-scheme: dark) {
6 @at-root (with: media) {
7 .card-dark {
8 background: #222;
9 color: white;
10 }
11 }
12 }
13}
Skompilowany CSS
1.card {
2 background: white;
3 color: black;
4}
5
6@media (prefers-color-scheme: dark) {
7 .card-dark {
8 background: #222;
9 color: white;
10 }
11}
- W tym przykładzie, definiując style dla ciemnego motywu wewnątrz
.card
,@at-root
generuje osobną klasę.card-dark
. Umożliwia to elastyczne przełączanie klas między różnymi motywami.
Notatki
Korzystając z @at-root
, pamiętaj o następujących kwestiach.
-
Unikaj nadużywania
@at-root
jest potężna, ale jej nadużywanie może zacierać zamysł zagnieżdżenia. -
Wyjaśniaj intencje Pozostawianie komentarzy wyjaśniających, dlaczego używasz
@at-root
, ułatwia innym programistom zrozumienie kodu. -
Zwracaj uwagę na spójność zakresów Przeniesienie wynikowych reguł na poziom główny może zmienić zależności między stylami. Jasno określ, których elementów to dotyczy.
-
Łącz z innymi funkcjami SASS Połączenie
@at-root
z@mixin
i@function
umożliwia bardziej elastyczne projektowanie CSS.
Podsumowanie
{^ i18n_speak
@at-root
は、SASSのネスト構文を補完する強力なツールです。不要なネストを解消し、構造を整理することで、より明確で再利用性の高いCSSを生成できます。スコープの理解を深め、目的に応じて使い分けることで、プロジェクト全体の可読性と保守性を高めることができます。^}
Możesz śledzić ten artykuł, korzystając z Visual Studio Code na naszym kanale YouTube. Proszę również sprawdzić nasz kanał YouTube.