Moderne CSS-Features: Nesting, :has(), Container Queries, Subgrid

Moderne CSS-Features mit Live-Demos

Modernes CSS: Nesting, :has(), Container Queries, Subgrid | We.Inc

Live bearbeitbare Demos zu nativem CSS-Nesting, dem :has()-Selektor, Container Queries, Subgrid, @layer, :is(), color-mix() und text-wrap: balance, mit einer Baseline-Support-Tabelle.

Reines CSS erledigt heute Aufgaben, für die man früher Sass oder JavaScript brauchte. Natives Nesting gruppiert zusammengehörige Regeln, :has() gestaltet ein Elternelement abhängig von seinen Kindern, Container Queries passen eine Komponente an ihre eigene Breite an, und Subgrid richtet verschachtelte Elemente am äußeren Grid aus. Alle vier wurden 2023 Baseline, aktuelle Browser unterstützen sie also.

Die wichtigsten Features auf einen Blick

Zu jedem Feature unten gibt es eine Demo, die du bearbeiten kannst, und die Karte mit Container Query reagiert auf einen Schieberegler. So siehst du, wie sie ihr Layout wechselt, ohne dein Fenster zu verkleinern. Die Support-Tabelle nennt das Jahr, in dem jedes Feature Baseline wurde, also in den aktuellen Versionen von Chrome, Edge, Firefox und Safari funktioniert.

Häufige Fragen

Brauche ich Sass noch für Nesting?

Nicht nur für Nesting. Natives Nesting deckt das übliche Muster von Regeln in Regeln plus den &-Selektor ab. Sass bietet weiterhin Mixins, Schleifen und Funktionen, auch wenn Custom Properties und color-mix() vieles übernommen haben, wofür man es genutzt hat.

Was ist der Unterschied zwischen Container Queries und Media Queries?

Eine Media Query fragt den Viewport ab, meist die Fensterbreite. Eine Container Query fragt ein gewähltes Vorfahrenelement ab. So kann eine einzige Kartenkomponente in einer schmalen Seitenleiste ein kompaktes Layout zeigen und in der Hauptspalte derselben Seite ein breites.

Ist :has() langsam?

Die Browser-Engines haben es vor der Auslieferung optimiert, und normale Nutzung ist unproblematisch. Sehr breite Selektoren wie body:has(*) auf riesigen Seiten erzwingen mehr Abgleicharbeit. Verankere :has() deshalb nach Möglichkeit an einer bestimmten Komponentenklasse.

Was bedeutet Baseline?

Baseline ist eine Kennzeichnung aus der Web-Plattform-Community, die ein Feature als funktionsfähig in den aktuellen Versionen von Chrome, Edge, Firefox und Safari markiert. Newly available ist das Datum, an dem der letzte dieser Browser es ausgeliefert hat. Widely available folgt etwa dreißig Monate später.

Wann sollte ich Subgrid statt eines verschachtelten Grids nutzen?

Nutze Subgrid, wenn Kinder eines Grid-Elements an den äußeren Grid-Spuren ausgerichtet sein müssen, etwa Titel, Text und Buttons über eine Reihe von Karten hinweg. Ein einfaches verschachteltes Grid hat eigene, unabhängige Spuren, daher geraten Inhalte unterschiedlicher Länge aus der Reihe.

Wie der &-Selektor beim Nesting funktioniert

Cascade Layers in der Praxis

Was du zuerst übernehmen solltest

Natives CSS-Nesting

Eine Karte, gestaltet mit verschachtelten Regeln

Hover, Titel und die dunkle Variante stehen alle innerhalb von .card. & bezieht sich auf .card selbst.

Der :has()-Elternselektor

Ein Feld hervorheben, wenn seine Checkbox angehakt ist

In diesem Frame läuft kein Skript. Das Label gestaltet sich selbst, weil es ein angehaktes input enthält.

Ein Kartenlayout nur ändern, wenn es ein Bild enthält

Karten ohne Bild behalten das einspaltige Layout; Karten mit Bild bekommen zwei Spalten.

Container Queries

Das CSS hinter der Schieberegler-Demo

container-type macht .shelf messbar; die @container-Regel schaltet die Karte dann auf eine Zeile um, sobald das Regal mindestens 420px breit ist.

Subgrid

Kartenzeilen, die unabhängig von der Textlänge bündig sind

Jede Karte erstreckt sich über drei Zeilen des äußeren Grids und nutzt Subgrid für ihre eigenen Zeilen, sodass alle Titel, Texte und Buttons auf einer Linie liegen.

@layer, :is(), :where(), color-mix() und text-wrap

Cascade Layers bestimmen den Gewinner über die Reihenfolge

Der ID-Selektor liegt in einem früheren Layer, daher gewinnt trotzdem die einfache Klasse im späteren Layer.

:is() und :where() kürzen Selektorlisten

:is() übernimmt die Spezifität seines stärksten Arguments, :where() zählt immer als null.

color-mix() für Abtönungen und Hover-Schattierungen

Das Mischen mit Weiß oder Schwarz im oklab-Farbraum ergibt gleichmäßige Abstufungen aus einer einzigen Markenfarbe.

text-wrap: balance für Überschriften

Die zweite Überschrift verteilt ihre Wörter gleichmäßig auf die Zeilen, statt ein einzelnes Wort allein zu lassen. Browser beschränken das Ausbalancieren auf kurze Blöcke mit wenigen Zeilen.

Browser-Support (Baseline)

Baseline-Status (aktuelle Versionen von Chrome, Edge, Firefox und Safari), im Oktober 2026 mit MDN abgeglichen

Container-Query-Demo

Die Karte unten reagiert auf die Breite ihres grauen Containers, nicht auf dein Fenster. Überschreite 420px und sie wechselt zu einem zweispaltigen Layout.

Containerbreite:

Schreibtischlampe aus Walnuss

Warmes Licht, Messingschalter, handgefertigter Schirm.

@container (min-width: 420px) ist {state}.

zutreffend: Bild neben dem Text

nicht zutreffend: Bild über dem Text

Kostenlos starten · Keine Kreditkarte nötig

Verwandt: Ratgeber

Produkt

Für wen

Funktionen

Ressourcen

Unternehmen

Sitemap