CSS @layer
La direttiva CSS @layer organizza gli stili in livelli gerarchici
Con @layer
puoi creare livelli CSS separati che controllano la priorità delle regole nella cascata, a prescindere dalla specificità o dall’ordine di caricamento nel file. È ideale per gestire grandi progetti, librerie di componenti o override modulari. I livelli vengono valutati nell’ordine in cui sono elencati nella dichiarazione @layer a, b, c
.
Sintassi
@layer a, b, c | nome-layer { /* dichiarazioni CSS */ }
Uso e ordinamento dei Layer
La direttiva @layer
ti consente di organizzare il tuo CSS in "livelli" (layer) separati, in modo da migliorare la gestione dell'override e la struttura del codice.
Puoi definire uno o più layer nel CSS e usarli per controllare la **priorità** delle regole applicate. L'ordine di dichiarazione dei layer è fondamentale:
-
Ordine di applicazione: I layer vengono applicati in ordine di definizione. Il layer definito per **ultimo** ha la **priorità più alta**.
@layer base, override;
-
Definizione di un Layer: La sintassi è la seguente:
@layer nome-layer { ... }
Conclusione:
Ordine dei layer: I layer vengono applicati in ordine di definizione (quello scritto per ultimo ha la priorità più alta).
Ordinamento manuale: Usare @layer base, component, override; permette di stabilire chiaramente quale layer debba avere la priorità.
Esempio Direttiva: @layer
Codice Esempio: @layer

/* Ordina i layer manualmente, dando priorità più alta a 'base' */
@layer component, override, base;
/* Definiamo i layer */
@layer base {
.layer-example { color: red; }
}
@layer component {
.layer-example { color: green; }
}
@layer override {
.layer-example { color: blue; }
}
Contenuto Esempio: @layer
Esempio di utilizzo di @layer
per controllare la priorità degli stili
In questo esempio, <h1> risulterà rosso perché il layer base
ha la priorità più alta rispetto agli altri.
Example Layer
CSS e HTML per @layer
:
<style>
/* Ordina i layer manualmente, dando priorità più alta a 'base' */
@layer component, override, base;
/* Definiamo i layer */
@layer base {
.layer-example { color: red; }
}
@layer component {
.layer-example { color: green; }
}
@layer override {
.layer-example { color: blue; }
}
</style>
<h1 class="layer-example">Example Layer</hi>
Comportamento con l'uso di @import
Se vuoi importare dei layer da un altro file CSS, puoi specificare l'ordine dei layer in questo modo:
Codice Esempio: @import layer

@import url("component.css") layer(component);
@import url("base.css") layer(base);
Sintesi dell'ordine di applicazione
-
I layer vengono applicati in base al loro ordine di registrazione: quello registrato per ultimo ha la priorità più alta. È possibile definirlo manualmente tramite
@layer nome1, nome2, ...
. - Le regole all'interno di un layer possono essere sovrascritte da regole presenti in layer con priorità superiore.
-
Le regole CSS non inserite in alcun layer vengono automaticamente associate al layer implicito
default
, che ha priorità superiore rispetto ai layer dichiarati.
Note:
Le indicazioni dei Browser supportati sono superate grazie alla loro costante evoluzione, si consiglia di verificare la compatibilità dei vari browser eseguendo il test cliccando qui sotto.