Container Queries

Zuletzt aktualisiert am 15. Februar 2026

Container Queries sind ein Paradigmenwechsel für CSS: Statt auf die Viewport-Breite zu reagieren, passen sich Elemente an die Größe ihres Containers an. Das macht Komponenten wirklich wiederverwendbar: eine Card-Komponente kann sich in einer schmalen Sidebar anders verhalten als im breiten Content-Bereich, ohne dass du etwas am CSS ändern musst.

Syntax
@container [name] (<bedingung>) { ... }
Initialwert
N/A (At-Rule)
Vererbt
Nein
Animierbar
Nein

Grundlagen

Bei Media Queries ist der Viewport die Bezugsgröße. Bei Container Queries ist es ein Eltern-Element, das du explizit als Container markierst. Die Kinder-Elemente können dann auf die Größe dieses Containers reagieren.

Damit ein Element als Container fungiert, brauchst du container-type. Der häufigste Wert ist inline-size, der die Breite des Containers abfragbar macht. size macht zusätzlich die Höhe abfragbar, ist aber selten nötig und hat Performance-Kosten. Mit container-name gibst du dem Container einen Namen, um bei verschachtelten Containern gezielt den richtigen anzusprechen.

Container Queries haben auch eigene Einheiten: cqw (1% der Container-Breite), cqh (1% der Container-Höhe), cqi (1% der Inline-Größe) und cqb (1% der Block-Größe). Damit kannst du Schriftgrößen und Abstände relativ zum Container skalieren.

Syntax & Werte

container-type

Wert Beschreibung Beispiel
normal Kein Container. Element kann nicht mit @container abgefragt werden. (Standard) container-type: normal;
inline-size Container für Inline-Größe (Breite). Der häufigste und empfohlene Wert. container-type: inline-size;
size Container für beide Achsen (Breite und Höhe). Höhere Performance-Kosten. container-type: size;

container-name & Shorthand

Wert Beschreibung Beispiel
container-name Benennt den Container, um ihn gezielt in @container-Regeln anzusprechen. container-name: sidebar;
container (Shorthand) Kurzform für container-name und container-type in einer Deklaration. container: sidebar / inline-size;

Container Query Units

Wert Beschreibung Beispiel
cqw 1% der Container-Breite (Container Query Width). font-size: 4cqw;
cqh 1% der Container-Höhe (Container Query Height). Braucht container-type: size. padding: 2cqh;
cqi 1% der Inline-Größe des Containers (bei LTR = Breite). font-size: 3cqi;
cqb 1% der Block-Größe des Containers (bei LTR = Höhe). margin-top: 2cqb;

Beispiele

Container Query Grundlagen

Eine Card wechselt von gestapeltem zu horizontalem Layout, wenn ihr Container breit genug ist.

Card mit Container Query
.wrapper {
  container-type: inline-size;
}

.card {
  display: flex;
  flex-direction: column;
}

@container (min-width: 500px) {
  .card {
    flex-direction: row;
  }

  .card-image {
    width: 200px;
  }
}

Gleiche Card in verschiedenen Containern

Die gleiche Card-Komponente passt sich automatisch an die Breite ihres Containers an, ohne dass du das CSS ändern musst.

Gleiche Card in verschiedenen Breiten
/* Beide Spalten als Container */
.sidebar, .content {
  container-type: inline-size;
}

/* Die Card passt sich automatisch an */
.card { flex-direction: column; }

@container (min-width: 400px) {
  .card { flex-direction: row; }
}

Benannte Container

Mit container-name sprichst du bei verschachtelten Containern gezielt den richtigen an.

Benannte Container
.outer {
  container: layout / inline-size;
}

.inner {
  container: card-area / inline-size;
}

/* Reagiert auf den äußeren Container */
@container layout (min-width: 800px) {
  .badge { background: green; }
}

/* Reagiert auf den inneren Container */
@container card-area (min-width: 400px) {
  .text { font-size: 1.125rem; }
}

Container Query Units für Fluid Typography

cqw-Einheiten skalieren relativ zum Container: perfekt für Überschriften, die sich der verfügbaren Breite anpassen.

Fluid Typography mit cqw
.container {
  container-type: inline-size;
}

.heading {
  /* Mindestens 1rem, maximal 2.5rem,
     skaliert mit 5% der Container-Breite */
  font-size: clamp(1rem, 5cqw, 2.5rem);
}

.text {
  font-size: clamp(0.875rem, 2.5cqw, 1.125rem);
}

Media Query vs. Container Query

Der direkte Vergleich: Media Queries reagieren auf den Viewport, Container Queries auf den Container.

Media Query vs. Container Query
/* Media Query: Viewport ist die Bezugsgröße */
@media (min-width: 768px) {
  .card { flex-direction: row; }
}

/* Container Query: Container ist die Bezugsgröße */
.wrapper { container-type: inline-size; }

@container (min-width: 500px) {
  .card { flex-direction: row; }
}

Barrierefreiheit

Text, der mit cqw-Einheiten skaliert, kann in sehr schmalen Containern zu klein werden. Verwende immer clamp() mit einem Minimum in rem, um eine lesbare Mindestgröße zu garantieren: font-size: clamp(1rem, 5cqw, 2rem).

Wenn Container Queries das Layout ändern (z.B. von vertikal zu horizontal), stelle sicher, dass Touch-Targets (Buttons, Links) in beiden Layouts mindestens 44x44px groß bleiben. Ein Button, der im horizontalen Layout schrumpft, ist auf Touch-Geräten schwer zu treffen.

Häufige Fehler

  • container-type vergessen. Ohne container-type: inline-size auf dem Eltern-Element funktioniert @container nicht. Die Kinder-Regeln werden einfach ignoriert.
  • size statt inline-size verwenden. container-type: size macht auch die Höhe abfragbar, hat aber höhere Performance-Kosten und ist in den meisten Fällen unnötig. Verwende inline-size als Standard.
  • Die Container Query auf den Container selbst anwenden statt auf die Kinder. @container ändert das Styling der Kind-Elemente, nicht des Containers. Der Container definiert nur die Bezugsgröße.
  • Verschachtelte Container ohne Namen verwenden. Ohne container-name greift @container immer auf den nächsten Eltern-Container zu. Bei verschachtelten Containern kann das unerwartet sein. Benenne sie explizit.
  • cqw-Einheiten ohne Minimum verwenden. font-size: 5cqw wird bei einem 200px-Container zu winzigen 10px. Verwende immer clamp() als Sicherheitsnetz.

Browser-Kompatibilität

Container Queries werden von allen modernen Browsern unterstützt. Safari unterstützt sie seit Version 16.0 (September 2022).

ClientUnterstützungHinweise
ChromeKomplett
FirefoxKomplett
SafariKomplettSeit Version 16.0
EdgeKomplett
OperaKomplett

Email-Kompatibilität

Container Queries werden in keinem E-Mail-Client unterstützt.

ClientUnterstützungHinweise
Apple MailKeineKein Support
GmailKeineKein Support
OutlookKeineKein Support
ThunderbirdKeineKein Support
Yahoo MailKeineKein Support

Verwandte Eigenschaften

Bleib auf dem Laufenden

Erhalte neue Inhalte direkt in dein Postfach

Mit der Anmeldung akzeptierst du unsere Datenschutzerklärung. Du kannst dich jederzeit über den Link in den E-Mails wieder abmelden.

Was erwartet dich?

Neue Artikel & Videos

Wenn ich was Neues veröffentliche, erfährst du's hier zuerst.

Plattform & Kurs-Updates

Neue Kurse, Referenz-Updates und gelegentlich Sonderpreise zum Launch.

Einmal die Woche in deinem Postfach

Kurz, auf den Punkt, kein Spam.