SASS `@at-root`
Questo articolo spiega @at-root di SASS.
Tratteremo tutto, dall'uso di base di @at-root fino a esempi avanzati, passo dopo passo.
YouTube Video
Informazioni su @at-root di SASS
@at-root è una direttiva fornita da SASS che serve a spostare selettori o proprietà annidati dall'annidamento corrente all'ambito padre. Sfruttando questa funzionalità, puoi controllare la profondità dell'annidamento e generare il CSS desiderato in modo più efficiente.
Uso di base di @at-root
L'annidamento di SASS rende il codice più leggibile, ma un annidamento troppo profondo può generare CSS indesiderato. Usando @at-root, puoi escludere specifici blocchi di codice dalla struttura di annidamento.
Sintassi di Base
1@at-root {
2 // Code to be output at the parent (root) scope
3}Esempio di utilizzo
1.nav {
2 color: blue;
3 @at-root {
4 .nav-item {
5 color: red;
6 }
7 }
8}CSS compilato
1.nav {
2 color: blue;
3}
4.nav-item {
5 color: red;
6}- Grazie a
@at-root,.nav-itemviene generato al di fuori di.nav.
@at-root nei selettori annidati
Anche con un annidamento profondo, l'uso di @at-root permette di spostare selettori specifici al livello radice. Questo consente di produrre CSS controllato anche all'interno di strutture complesse.
Esempio di utilizzo
1.card {
2 background: white;
3 .card-header {
4 color: black;
5 @at-root .card-title {
6 font-size: 20px;
7 }
8 }
9}CSS compilato
1.card {
2 background: white;
3}
4.card .card-header {
5 color: black;
6}
7.card-title {
8 font-size: 20px;
9}- Usando
@at-root,.card-titleviene generato al di fuori di.card-header.
@at-root con argomenti
Specificando degli argomenti, @at-root può essere controllato in modo più flessibile.
argomento without
Quando utilizzi l'argomento without, l'output ignora gli ambiti specificati. In altre parole, puoi rimuovere le regole padre o le media query.
Esempio di utilizzo
1.nav {
2 @media (min-width: 768px) {
3 &__item {
4 @at-root (without: media) {
5 color: red;
6 }
7 }
8 }
9}CSS compilato
1.nav__item {
2 color: red;
3}- In questo caso,
@at-root (without: media)esclude l'ambito della media query e.nav__itemviene generato alla radice.
argomento with
Usare with mantiene nell'output solo gli ambiti specificati. Utile quando vuoi generare alla radice preservando ambiti specifici.
Esempio di utilizzo
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}CSS compilato
1@media (min-width: 768px) {
2 .nav__item-large {
3 font-size: 18px;
4 }
5}@at-root (with: media)sposta il selettore alla radice preservando la struttura della media query.
Specificare più condizioni
È anche possibile specificare più ambiti contemporaneamente, separati da spazi.
Esempio di utilizzo
1.wrapper {
2 @media (min-width: 600px) {
3 @at-root (without: rule media) {
4 .global-style {
5 color: green;
6 }
7 }
8 }
9}CSS compilato
1.global-style {
2 color: green;
3}- In questo esempio, sia
rule(selettori normali) siamedia(media query) sono esclusi, quindi.global-stylenon appartiene ad alcun ambito ed è generato interamente al livello radice. Questo è utile quando vuoi definire intenzionalmente stili globali anche in presenza di annidamenti complessi.
Combinare con le media query
Usando @at-root, è possibile generare stili a livello radice dall'interno delle media query. Questo consente di definire il design responsive a livello di componente.
Esempio di utilizzo
1.container {
2 @media (min-width: 768px) {
3 @at-root {
4 .container-large {
5 width: 80%;
6 }
7 }
8 }
9}CSS compilato
1.container-large {
2 width: 80%;
3}- Usando
@at-root, puoi generare stili a livello radice anche dall'interno delle media query. Questo rende facile definire stili globali indipendenti per ciascun breakpoint.
Casi d'uso di @at-root
@at-root è utile quando vuoi generare stili a livello radice in determinate condizioni. È particolarmente utile quando si gestiscono media query o stili specifici del tema all'interno dei componenti.
Separare componenti e temi
Usando @at-root, puoi generare classi globali indipendenti anche dall'interno delle media query. Questo facilita l'organizzazione di temi e stati per componente.
Esempio di utilizzo
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}CSS compilato
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}- In questo esempio, mentre si definiscono gli stili per il tema scuro all'interno di
.card,@at-rootgenera una classe.card-darkseparata. Questo consente di gestire le classi in modo flessibile tra temi diversi.
Note
Quando usi @at-root, tieni presenti i seguenti punti.
-
Evita l'uso eccessivo
@at-rootè potente, ma abusarne può offuscare l'intento del tuo annidamento. -
Chiarisci l'intento Lasciare commenti sul perché stai usando
@at-rootfacilita la comprensione agli altri sviluppatori. -
Presta attenzione alla coerenza degli ambiti Spostare l'output alla radice può cambiare le dipendenze degli stili. Sii chiaro su quali elementi si applica.
-
Combina con altre funzionalità di SASS Combinare
@at-rootcon@mixine@functionconsente un design CSS più flessibile.
Riepilogo
{^ i18n_speak
@at-rootは、SASSのネスト構文を補完する強力なツールです。不要なネストを解消し、構造を整理することで、より明確で再利用性の高いCSSを生成できます。スコープの理解を深め、目的に応じて使い分けることで、プロジェクト全体の可読性と保守性を高めることができます。^}
Puoi seguire l'articolo sopra utilizzando Visual Studio Code sul nostro canale YouTube. Controlla anche il nostro canale YouTube.