@scope per stili con ambito locale
Limiti la portata delle regole CSS a specifici sottoalberi utilizzando la at-rule @scope.
@scope per stili con ambito locale è una lezione CSS Academy gratuita su CoddyKit. Questa è la lezione 3 di 4. Puoi leggere la lezione completa qui gratuitamente — poi esercitati direttamente nel browser con un editor di codice integrato e un tutor IA disponibile 24/7. Fa parte del percorso di apprendimento CSS Academy, e i tuoi progressi si sincronizzano tra il web e l'app CoddyKit. Il corso CSS Academy include 4 lezioni in totale.
Che cos'è @scope?
La regola at @scope (Chrome 118+, Safari 17.4+) limita le regole CSS a uno specifico sottoalbero del DOM. Le regole all'interno di @scope si applicano solo agli elementi contenuti nella radice dell'ambito dichiarata, impedendo la fuoriuscita degli stili tra componenti.
Sintassi di base
Dichiari un ambito con un selettore della radice dell'ambito. Tutte le regole al suo interno si applicano solo ai discendenti delle radici dell'ambito corrispondenti, non all'intero documento.
<div class="card">
<div class="title">Scoped Title</div>
<div class="body">Scoped body text — styles only apply inside .card.</div>
</div>
Radice dell'ambito
La radice dell'ambito (@scope (.card)) definisce il punto di ingresso. Gli elementi all'interno dell'ambito che corrispondono a .title ricevono lo stile. Gli elementi esterni a .card con la classe .title non vengono modificati: è un vero incapsulamento degli stili senza Shadow DOM.
Limite dell'ambito
È possibile definire facoltativamente un limite dell'ambito con to: @scope (.card) to (.nested-card). Le regole si applicano all'interno di .card, ma si fermano in corrispondenza dei discendenti .nested-card, limitando gli stili a un solo livello di annidamento dei componenti ed escludendo le istanze più profonde.
La pseudoclasse :scope all'interno di @scope
All'interno di un blocco @scope, :scope fa riferimento all'elemento radice dell'ambito. @scope (.card) { :scope { border-radius: 8px; } } applica lo stile direttamente all'elemento .card, non ai suoi discendenti.
Specificità basata sulla prossimità
@scope introduce una specificità basata sulla prossimità: quando più ambiti corrispondono a un elemento, prevale la radice dell'ambito antenata più vicina, indipendentemente dalla specificità del selettore. In questo modo si impedisce che gli stili dei componenti profondamente annidati vengano sovrascritti dagli stili degli ambiti antenati più lontani.
@scope e CSS Modules
CSS Modules generano nomi di classe univoci con hash per ottenere lo scope in fase di build, un aspetto che riguarda il bundler JavaScript. @scope ottiene lo scope nativamente nel browser, senza strumenti di build, nomi con hash o sintassi specifiche di un framework: puro CSS.
@scope e Shadow DOM
Shadow DOM crea un isolamento completo degli stili: gli stili esterni non possono penetrarvi. @scope crea un isolamento parziale: gli stili esterni possono ancora raggiungere gli elementi inclusi nello scope se hanno una specificità sufficiente. @scope è un'alternativa più leggera per definire lo scope dei componenti senza un isolamento completo.
Gestire i livelli con @scope
Combini @scope con @layer per ottenere un controllo preciso della cascata: definisca gli stili con scope del componente in un livello dedicato al componente. In questo modo gestisce sia l'ordine della cascata, tramite i livelli, sia lo scope degli stili, tramite @scope, in modo componibile e senza complicate strategie di denominazione delle classi.
Casi d'uso pratici
Componenti di un design system: definisca lo scope di tutti gli stili dei pulsanti con @scope (.button-group), così gli stili dei pulsanti interni non fuoriescono mai. Isolamento dei widget: definisca lo scope degli stili di un widget di terze parti rispetto al suo contenitore, impedendo conflitti con gli stili globali della pagina.
Supporto dei browser e fallback
@scope è supportato da Chrome 118+, Safari 17.4+ e Firefox 128+. Nei browser non supportati, gli stili all'interno di @scope vengono ignorati e la cascata ricade sugli stili globali. Utilizzi @scope come miglioramento progressivo quando definire lo scope dei componenti è utile, ma non essenziale.
Verifica delle conoscenze
Quale problema risolve @scope che è difficile affrontare usando soltanto i selettori CSS tradizionali?
Riepilogo
@scope limita l'applicazione delle regole CSS a un sottoalbero DOM dichiarato, consentendo l'incapsulamento nativo degli stili senza Shadow DOM o senza l'hashing dei nomi delle classi tramite strumenti di build. I limiti dello scope, la specificità di prossimità e l'integrazione con @layer rendono @scope una primitiva potente per i design system con scope dei componenti in puro CSS.
Impara CSS con un tutor IA — gratis
Scrivi ed esegui vero codice nel tuo browser, ricevi aiuto istantaneo da un tutor IA disponibile 24/7, e riprendi da dove hai lasciato sul web o nell'app.
- Corsi
- 40
- Lezioni
- 159
Domande Frequenti
La lezione «@scope per stili con ambito locale» è gratuita?
Sì — il testo completo di «@scope per stili con ambito locale» è gratuito qui sul web. Per esercitarvi in modo interattivo (un editor di codice integrato e un tutor IA 24/7) e sbloccare il resto del corso CSS Academy, passa a CoddyKit PRO. Il corso CSS Academy include 4 lezioni in totale.
Cosa imparerò in «@scope per stili con ambito locale»?
Limiti la portata delle regole CSS a specifici sottoalberi utilizzando la at-rule @scope. Eserciti CSS Academy con codice pratico che esegui direttamente nel browser, e un tutor IA 24/7 risponde alle tue domande mentre lavori sulla lezione.
Ho bisogno di esperienza per iniziare CSS Academy?
Non è richiesta alcuna esperienza precedente. CSS Academy su CoddyKit è strutturato per principianti e studenti avanzati, quindi puoi iniziare da qui o dall'inizio e procedere al tuo ritmo. Questa è la lezione 3 di 4.
Quanto tempo richiede la lezione «@scope per stili con ambito locale»?
La maggior parte delle lezioni CoddyKit richiede circa 5–10 minuti. Ogni lezione è breve e interattiva, quindi fai progressi costanti e riprendi esattamente da dove hai lasciato su web e app.
Posso scrivere ed eseguire codice in questa lezione CSS Academy?
Sì. Ogni lezione CSS Academy include un editor di codice integrato, quindi scrivi ed esegui codice reale direttamente nel tuo browser e ricevi feedback istantaneo dall'IA — nessuna configurazione locale necessaria.
Tutte le lezioni di questo corso
- Nesting CSS nativo
- Pseudo-classe relazionale :has()
- @scope per stili con ambito locale
- View Transitions API