Cascade layers (@layer)
Baseline 2022 (Chrome 99, Safari 15.4, Firefox 97); breit verfügbar.
Chrome 99
Edge 99
Safari 15.4
Firefox 97
Deklariert geordnete Layer, sodass spätere Layer unabhängig von der Spezifität immer über frühere gewinnen. Beendet Spezifitätskriege zwischen Resets, Drittanbieter-CSS und Komponenten: ein Einzelklassen-Override schlägt einen `#id`-Selektor in einem niedrigeren Layer.
CSS
@layer reset, vendor, components, overrides;
@layer vendor {
#cta {
background: #c0392b;
color: #fff;
border: 0;
padding: 10px 18px
}
}
@layer components {
.fx-004 {
background: #2563eb;
border-radius: 8px;
font: 600 15px system-ui
}
}
@layer overrides {
.fx-004 {
background: #111
}
}
.fx-004 :is(a,button,input,select,textarea):focus-visible { outline: 2px solid currentColor; outline-offset: 2px; }
HTML
<button class="fx-004" id="cta">Layered button</button>Fallback: In der Praxis keiner nötig; alle Evergreen-Browser unterstützen Layer. Ungelayerte Styles gewinnen über alle Layer, also halte alles in Layern.
Prompt
Organisiere das CSS in Cascade Layers, einmal oben deklariert: `@layer reset, base, components, utilities, overrides;`. Lege Drittanbieter- oder generiertes CSS in einen niedrigen Layer (`@layer vendor`), Komponenten darüber und Utilities zuletzt, damit sie ohne `!important` gewinnen. Lass nie Regeln ungelayert, außer die `@layer`-Reihenfolgeanweisung selbst.