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-rootselektor.nav-itemzostaje 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-rootselektor.card-titlezostaje 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__itemzostaje 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-stylenie 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-rootmoż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-rootgeneruje 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-rootjest 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-rootz@mixini@functionumoż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.