CSS-Tools

Kostenlose CSS @scope Regel-Builder

Generieren Sie CSS @scope-Regeln zur Stilisierung von DOM-Teilbaumen ohne BEM oder CSS Modules.

Tool wird geladen...

Was ist CSS @scope Regel-Builder?

Die CSS @scope-At-Regel ermöglicht Entwicklern die Definition einer Grenze für Style-Regeln, die ihre Wirkung auf einen bestimmten DOM-Teilbaum beschränkt. Dies löst das klassische CSS-Scoping-Problem ohne BEM, CSS Modules oder Shadow DOM. Die @scope-Regel nimmt einen oberen Grenzselektor (den Scope-Root, erforderlich) und einen optionalen unteren Grenzselektor (die Scope-Limit, optional). Styles innerhalb von @scope treten nicht aus dem Teilbaum aus, und Styles außerhalb von @scope überschreiben keine gescopten Regeln ohne absichtlichen Selektor-Match. Gescopte Regeln haben eine niedrigere Spezifität als nicht gescopte globale Regeln, was Überschreibungen vorhersagbar und absichtlich macht.

Kurze Antwort

CSS @scope beschränkt Style-Regeln auf einen DOM-Teilbaum und verhindert Stil-Austritte ohne BEM oder Shadow DOM. Konfigurieren Sie eine obere Grenze (Scope-Root) und optional eine untere Grenze (Scope-Limit). Gescopte Regeln haben niedrigere Spezifität als nicht gescopte Regeln für vorhersagbare Überschreibungen. Chrome 118+, Safari 17.4+, Firefox 128+ (Baseline 2025).

Last updated: 2026-06-02

Einschränkungen

  • @scope erzeugt keinen neuen Stacking-Kontext, keine z-Index-Isolierung und kein Containment - es beschränkt nur den Selektor-Match. Eigenschaften wie z-index, CSS-Counter und Custom Properties interagieren weiterhin über Scope-Grenzen hinweg.
  • Übermäßig breite Scope-Root-Selektoren (wie eine gemeinsame Klasse, die an vielen Stellen verwendet wird) können unerwartete Style-Anwendungen verursachen. Jede @scope-Regel wird für jedes Element ausgewertet, das dem Scope-Root entspricht, sodass komplexe Scope-Bäume die Leistung auf Seiten mit vielen DOM-Elementen beeinträchtigen können.
  • In Browsern, die @scope nicht unterstützen, werden die Regeln innerhalb der At-Regel vollständig ignoriert, nicht ent-scoped. Wenn breite Browserunterstützung erforderlich ist, duplizieren Sie die gescopten Regeln als nicht gescopte Regeln außerhalb des @scope-Blocks als Fallback.

Sources:MDN Web Docs · W3C Specifications · jquery.app on GitHub

So nutzt du dieses Tool

  1. Geben Sie den Scope-Root-Selektor ein - das Element, das die obere Grenze definiert. Alle Style-Regeln innerhalb des @scope-Blocks gelten nur innerhalb des Teilbaums dieses Elements.
  2. Fügen Sie optional einen Scope-Limit-Selektor hinzu - die untere Grenze, die beschränkt, wie tief die gescopten Styles angewendet werden. Style-Regeln gelten nicht für Elemente innerhalb der Scope-Limit oder tiefer.
  3. Schreiben Sie die CSS-Style-Regeln innerhalb des @scope-Blocks mit standardmäßiger CSS-Syntax. Diese Regeln haben eine niedrigere Spezifität als nicht gescopte globale Regeln, die auf dieselben Elemente abzielen.
  4. Kopieren Sie das generierte @scope-CSS und fügen Sie es in Ihr Stylesheet ein. Platzieren Sie @scope-Regeln nach globalen Standardwerten, aber vor komponentenspezifischen Überschreibungen für die vorhersagbarste Kaskade.

Wofür du es nutzen kannst

  • Begrenzen Sie Widget-Styles auf ihr Container-Element, sodass sie nicht in den Rest der Seite austreten, wodurch die Notwendigkeit von BEM-Klassennamen für jedes Element entfällt.
  • Wenden Sie verschiedene Link-Styles innerhalb einer Seitenleiste gegenüber dem Hauptinhaltsbereich an, ohne Selektoren mit höherer Spezifität oder !important zu schreiben.
  • Beschränken Sie Drittanbieter-Embed-Styles auf ihren Wrapper-div, sodass das interne CSS des Embeds das umgebende Seitenlayout nicht beeinflusst.

Anwendungsfalle

Praxisbeispiele

Beispiel

Sidebar-Widget mit isolierten Styles

Eine Nachrichtenseite hat ein Sidebar-Widget, das eigene Linkfarben und Schriftgrößen benötigt. Mit @scope (.sidebar) { a { color: #555; font-size: 14px; } } gelten die Link-Styles nur innerhalb von .sidebar. Links im Hauptinhaltsbereich bleiben unbeeinflusst, und es ist keine BEM-Klassenumbenennung auf den Sidebar-Elementen erforderlich.

Beispiel

Gescopte Karten-Styles mit unterer Grenze

Eine Komponentenbibliothek hat eine Kartenkomponente, die ihre direkten Kinder stylen, aber keine Elemente innerhalb verschachtelter Karteninstanzen verändern soll. Mit @scope (.card) to (.card-inner) { ... } gelten die gescopten Styles innerhalb von .card, stoppen aber vor .card-inner und verhindern so Stilkonflikte in verschachtelten Kartenlayouts.

Haufige Fehler

  • @scope zu verwenden, ohne zu verstehen, dass gescopte Regeln eine niedrigere Spezifität als globale Regeln haben - wenn eine globale Regel und eine gescopte Regel auf dasselbe Element abzielen, gewinnt die globale Regel. Dies ist absichtlich für einfache Überschreibungen, kann aber überraschen, wenn Sie erwarten, dass gescopte Regeln immer gelten.
  • Zu vergessen, dass @scope keinen neuen Stacking-Kontext oder Containment erzeugt - anders als Shadow DOM isoliert @scope keine CSS-Counter, z-index oder Paint-Containment. Es beschränkt nur den Selektor-Match auf den DOM-Teilbaum.
  • @scope mit einem übermäßig breiten Scope-Root-Selektor (wie div oder *) anzuwenden - dies macht den Zweck des Scopings zunichte und kann unerwartete Auswirkungen auf die Leistung haben, da der Browser den Scope-Root gegen viele Elemente auswerten muss.

Überprüfung

  1. Wenden Sie in Chrome 118+ das generierte @scope-CSS auf eine Seite mit mehreren Abschnitten an. Überprüfen Sie, dass Styles innerhalb von @scope nur auf Elemente innerhalb des Scope-Root-Teilbaums angewendet werden und nicht auf identische Elemente außerhalb.
  2. Fügen Sie eine nicht gescopte globale Regel hinzu, die auf dieselben Elemente wie die gescopte Regel abzielt. Überprüfen Sie, dass die globale Regel Vorrang hat, was bestätigt, dass gescopte Regeln eine niedrigere Spezifität als globale Regeln haben.

FAQ

Fragen zu CSS @scope Regel-Builder

Wie unterscheidet sich @scope von Shadow DOM zur Stilisolierung?

Shadow DOM bietet vollständige Kapselung: Styles innerhalb eines Shadow-Roots können die Host-Seite nicht beeinflussen, und Host-Seiten-Styles können nicht in den Shadow-Baum eindringen. @scope beschränkt nur den Selektor-Match auf einen DOM-Teilbaum, verhindert aber nicht die Vererbung vererbbarer Eigenschaften (wie font-family oder color), erzeugt kein neues Dokumentfragment und isoliert keine CSS-Counter, z-index oder Custom Properties. @scope ist leichter und erfordert keine DOM-Umstrukturierung, während Shadow DOM stärkere Garantien zu Kosten umfangreicherer DOM-Änderungen bietet.

Ersetzt @scope BEM oder CSS Modules?

@scope reduziert, ersetzt aber nicht vollständig BEM oder CSS Modules. Für einfaches Komponenten-Scoping innerhalb eines einzelnen DOM-Baums kann @scope die Notwendigkeit von BEMs Block-Element-Modifier-Benennung innerhalb einer Scope-Grenze eliminieren. Für tief verschachtelte Komponenten, mehrere Scopes oder Framework-übergreifende Komponentengrenzen bieten BEM oder CSS Modules jedoch immer noch klarere Benennung und vorhersagbareres Verhalten. @scope wird am besten als Ergänzung zu bestehenden Methodiken verwendet, nicht als vollständiger Ersatz.

Was passiert, wenn ich @scope-Regeln verschachtele?

Verschachtelte @scope-Regeln werden unterstützt. Eine innere @scope-Regel wird relativ zum Root des äußeren Scopes ausgewertet. Style-Regeln im inneren Scope gelten für Elemente, die beide Scope-Grenzen erfüllen. Dies ist nützlich für Komponentenhierarchien, in denen ein Kindkomponenten-Scope innerhalb des Eltern-Scope-Kontexts ausgewertet werden soll. Die niedrigere Spezifität gescopter Regeln gilt für jede Scope-Ebene unabhängig.

Welche Browser unterstützen CSS @scope?

@scope ist Baseline 2025, unterstützt in Chrome 118+, Edge 118+, Safari 17.4+ und Firefox 128+. Dies deckt über 90% der globalen Browser-Nutzung Stand Mitte 2026 ab. @scope kann sicher in Produktion mit Fallback-Styling für nicht unterstützte Browser verwendet werden - die Regeln innerhalb von @scope gelten in Browsern, die die At-Regel nicht unterstützen, einfach global ohne Scoping.

Verwandte Tools

Weitere css-tools

Css

CSS Carousel Generator

Generate native CSS carousel markup with scroll-snap, scroll buttons, scroll markers, and accessible list structure. No JavaScript required.

Tool öffnen

Auch ausprobieren

Auch ausprobieren