</> HTML5Advent
ENFRESDEITPT

// css

CSS Grid vs. Flexbox: Was du wann nutzt (und wann beides zusammen)

Flexbox ordnet in einer Dimension, Grid in zwei. Der ehrliche Unterschied zwischen CSS Grid und Flexbox, ein direkter Vergleich und warum die meisten echten Layouts beides gemeinsam einsetzen.

Ein Laptop-Bildschirm zeigt CSS-Quellcode in einem Code-Editor

Grid vs. Flexbox ist die meistgestellte Frage zum CSS-Layout — und die ehrliche Antwort lautet: Es sind keine Rivalen. Sie lösen unterschiedliche Probleme: Flexbox ordnet Inhalte in einer Dimension (eine Zeile oder eine Spalte), während CSS Grid Inhalte in zwei Dimensionen ordnet (Zeilen und Spalten zugleich). Wenn das einmal sitzt, ist die Wahl zwischen beiden kein Raten mehr.

Die Antwort in einem Satz

Wenn du Elemente entlang einer einzigen Linie anordnest — eine Navigationsleiste, eine Reihe von Buttons, umbrechende Tags — greif zu Flexbox. Wenn du Elemente in eine echte zweidimensionale Struktur bringst — ein Seitenlayout, eine Fotogalerie, ein Dashboard aus Karten, die in Zeilen und Spalten ausgerichtet sind — greif zu Grid. Die meisten nicht-trivialen Seiten nutzen beides, und das ist so gedacht, kein Kompromiss.

Wie sie sich tatsächlich unterscheiden

AspektFlexboxCSS Grid
DimensionenEine (Zeile oder Spalte)Zwei (Zeilen und Spalten)
Gesteuert durchDen Inhalt (Größen ergeben sich aus den Elementen)Das Layout (du definierst zuerst die Tracks)
Am besten fürKomponenten: Navigationsleisten, Toolbars, Listen, Platz entlang einer Linie verteilenSeiten- und Bereichslayouts, Galerien, Kartenraster, Überlappung
Abständegap unterstütztgap unterstützt (hier entstanden)
AusrichtungHervorragend entlang der Haupt-/QuerachseHervorragend in beiden Achsen, plus Platzierung über Linie/Bereich
ÜberlappungNicht wirklichJa — Elemente können sich Zellen teilen
Nahaufnahme von CSS-Quellcode auf einem Computermonitor
Sowohl Grid als auch Flexbox werden in reinem CSS geschrieben — ohne Framework oder Präprozessor. Die Wahl betrifft die Form des Layouts, nicht das Werkzeug.

Wann du Flexbox nutzt

Flexbox spielt seine Stärken aus, wenn du eine Reihe von Elementen hast und den Platz zwischen ihnen entlang einer Achse verteilen willst. Eine Navigationsleiste mit Logo links und Links rechts, ein Karten-Footer, der einen Button nach unten drückt, eine Reihe von Tags, die umbricht, wenn der Platz ausgeht — das sind alles eindimensionale Probleme. Das klassische Muster ist eine einzige Deklaration:

.nav {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 1rem;
}

Da Flexbox inhaltsgesteuert ist, dimensionieren sich die Elemente von selbst, und du justierst sie mit flex-grow, flex-shrink und flex-basis. Das macht es ideal für Komponenten, deren Inhalte du nicht vollständig kontrollierst.

Wann du Grid nutzt

Grid spielt seine Stärken aus, wenn du zuerst die Struktur definierst und die Elemente darin platzierst. Eine Seite mit Header, Seitenleiste, Hauptbereich und Footer; eine Galerie, die saubere Zeilen und Spalten halten soll; ein responsiver Satz von Karten, der mit auto-fill umfließt — das sind zweidimensionale Probleme. Du deklarierst die Tracks, dann landen die Elemente darin:

.gallery {
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(220px, 1fr));
  gap: 1rem;
}

Diese eine Regel erzeugt ein responsives Kartenraster, das von selbst Spalten hinzufügt und entfernt, ganz ohne Media Queries — etwas, das Flexbox nicht sauber kann, weil es immer nur eine Achse kennt.

Die echte Antwort: nutze beides zusammen

Auf einer echten Seite nutzt du fast immer beides, ineinander verschachtelt. Grid kümmert sich um das große Ganze — das Grundgerüst der Seite oder eines Bereichs — und Flexbox um das Kleine darin: das Ausrichten der Elemente innerhalb einer Karte, eines Headers oder einer Toolbar. Zu Grid zu greifen heißt nicht, Flexbox aufzugeben; sie sind Schichten desselben Systems.

Ein einfaches Denkmodell: Grid ist fürs Layout, Flexbox für Komponenten. Wenn du Bereiche einer Seite positionierst, ist das Grid. Wenn du die Inhalte eines Bereichs aufreihst, ist das Flexbox. Bei Unsicherheit frag dich, ob das Problem wirklich zweidimensional ist — wenn Spalten und Zeilen miteinander fluchten müssen, ist es Grid; wenn es nur eine Linie aus Dingen ist, ist es Flexbox.

Browser-Support

Beide werden in jedem modernen Browser vollständig unterstützt, und das seit Jahren — Support ist 2026 also kein Entscheidungskriterium. Wähle nach der Form des Problems, nicht nach der Kompatibilität. Für tiefere Komponenten-Styles kombinierst du beides mit nativem CSS-Nesting und Container Queries, mit denen eine Komponente auf den Platz reagiert, den sie tatsächlich bekommt.

Das Fazit

Grid vs. Flexbox ist die falsche Fragestellung. Flexbox ist eindimensional und inhaltsgesteuert; Grid ist zweidimensional und layoutgesteuert. Wähle Flexbox für Linien aus Elementen und für Komponenten, wähle Grid für echte 2D-Layouts, und rechne damit, sie auf jeder Seite mit echter Struktur zu verschachteln. Zu wissen, welche Frage jedes von beiden beantwortet, ist das ganze Können.

Häufige Fragen

Sollte ich Flexbox oder Grid verwenden?
Verwende Flexbox, um Elemente in einer einzigen Richtung anzuordnen (eine Zeile oder eine Spalte) und den Inhalt einer Komponente auszurichten; greife zu CSS Grid, wenn du Zeilen und Spalten gleichzeitig steuern musst, etwa für das Grundgerüst einer Seite oder eine Galerie, die beide Achsen ausgerichtet hält.
Kann man CSS Grid und Flexbox zusammen verwenden?
Ja, und das ist der Normalfall. Grid übernimmt meist die übergeordnete Seiten- oder Abschnittsstruktur, während Flexbox die Elemente innerhalb jedes Bereichs ausrichtet (Karten, Header, Toolbars). Sie sind Schichten desselben Layoutsystems, keine Konkurrenten.
Ist CSS Grid besser als Flexbox?
Keines ist besser; sie lösen unterschiedliche Probleme. Flexbox ist eindimensional und inhaltsgetrieben, Grid ist zweidimensional und layoutgetrieben. Entscheide danach, ob dein Layout wirklich zweidimensional ist.
Ist die Browserunterstützung 2026 ein Problem?
Nein. Sowohl Flexbox als auch CSS Grid werden seit Jahren von allen modernen Browsern unterstützt, daher ist die Kompatibilität kein entscheidender Faktor — wähle nach der Art des Problems.