TL;DR: CSS Grid ist das fehlende Puzzlestück zu Flexbox. Während Flexbox eindimensionale Layouts meistert, gibt dir Grid die volle Kontrolle über Zeilen UND Spalten gleichzeitig. In diesem Artikel lernst du alles von den Basics bis Subgrid – mit praktischen Beispielen, die du sofort einsetzen kannst.

Du kennst Flexbox? Gut. Dann wird es Zeit für den großen Bruder. CSS Grid ist nicht besser als Flexbox – es ist das Gegenstück. Zusammen sind sie unschlagbar.

Aber fangen wir vorne an.

🤔 Grid vs. Flexbox: 1D vs. 2D

Flexbox arbeitet in einer Richtung. Entweder horizontal oder vertikal. Das ist perfekt für Navigation, Toolbars oder eine Reihe von Buttons.

Grid dagegen arbeitet in zwei Richtungen gleichzeitig. Zeilen und Spalten. Das macht es ideal für komplette Seitenlayouts, Dashboards und alles, wo du Elemente in einem Raster anordnen willst.

Kurz gesagt:

  • Flexbox = Elemente in einer Linie anordnen (1D)
  • Grid = Elemente in einem Raster anordnen (2D)
Warum CSS Flexbox Deine Layout-Probleme löst 🧑‍💻
Falls du Flexbox noch nicht kennst – hier ist der perfekte Einstieg.

🏗️ Grid Basics: Dein erstes Grid

Ein Grid zu erstellen ist überraschend einfach. Du brauchst nur einen Container mit display: grid und eine Definition für Spalten und/oder Zeilen.

.container {
  display: grid;
  grid-template-columns: 200px 1fr 200px;
  grid-template-rows: auto 1fr auto;
  gap: 1rem;
}

Das war's schon. Drei Spalten, drei Zeilen. Die mittlere Spalte nimmt den restlichen Platz ein. Einfach, oder?


  Header
  Sidebar
  Content
  Aside
  Footer

📐 Die fr-Einheit und minmax()

Die fr-Einheit ist das Herzstück von CSS Grid. Sie steht für "fraction" – also einen Bruchteil des verfügbaren Platzes.

.container {
  display: grid;
  grid-template-columns: 1fr 2fr 1fr;
}

Hier bekommt die mittlere Spalte doppelt so viel Platz wie die äußeren. Kein Rechnen mit Prozenten nötig.

Noch mächtiger wird es mit minmax():

.container {
  display: grid;
  grid-template-columns: minmax(200px, 1fr) 2fr minmax(150px, 1fr);
}

Die äußeren Spalten sind mindestens 200px bzw. 150px breit, wachsen aber mit. Das ist responsives Design ohne eine einzige Media Query.

🗺️ Grid Areas: Layouts visuell definieren

Jetzt wird es richtig cool. Mit grid-template-areas kannst du dein Layout buchstäblich "zeichnen":

.container {
  display: grid;
  grid-template-columns: 200px 1fr 200px;
  grid-template-rows: auto 1fr auto;
  grid-template-areas:
    "header  header  header"
    "sidebar content aside"
    "footer  footer  footer";
  gap: 1rem;
}

header  { grid-area: header; }
nav     { grid-area: sidebar; }
main    { grid-area: content; }
aside   { grid-area: aside; }
footer  { grid-area: footer; }

Du siehst das Layout direkt im Code. Das ist wie ein Bauplan. Jeder im Team versteht sofort, was passiert.

🔄 auto-fill vs. auto-fit: Responsive ohne Media Queries

Hier kommen zwei Keywords, die dir das Leben massiv erleichtern:

/* auto-fill: Erstellt so viele Spalten wie möglich */
.grid-fill {
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(250px, 1fr));
  gap: 1rem;
}

/* auto-fit: Wie auto-fill, aber leere Spalten kollabieren */
.grid-fit {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(250px, 1fr));
  gap: 1rem;
}

Der Unterschied? Bei auto-fill bleiben leere Spalten als Platzhalter erhalten. Bei auto-fit werden sie zusammengeklappt und die vorhandenen Elemente dehnen sich aus.

Für die meisten Card-Grids willst du auto-fit. Probier's aus!

🎯 gap, place-items und place-content

Abstände und Ausrichtung – das Salz in der Grid-Suppe.

.container {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: 1.5rem; /* Abstand zwischen allen Zellen */

  /* Elemente innerhalb ihrer Zelle zentrieren */
  place-items: center;

  /* Das gesamte Grid im Container zentrieren */
  place-content: center;
}

place-items ist die Kurzform für align-items + justify-items. place-content ist die Kurzform für align-content + justify-content. Weniger Code, gleicher Effekt.

🏷️ Named Grid Lines

Du kannst deinen Grid-Linien Namen geben. Das macht den Code lesbarer – besonders bei komplexen Layouts.

.container {
  display: grid;
  grid-template-columns:
    [sidebar-start] 250px
    [sidebar-end content-start] 1fr
    [content-end aside-start] 300px
    [aside-end];
  grid-template-rows:
    [header-start] auto
    [header-end main-start] 1fr
    [main-end footer-start] auto
    [footer-end];
}

.sidebar {
  grid-column: sidebar-start / sidebar-end;
  grid-row: main-start / main-end;
}

Statt kryptischer Zahlen wie grid-column: 1 / 2 sagst du einfach, wo das Element hin soll. Dein zukünftiges Ich wird dir danken.

🆕 Subgrid: Die neueste Superkraft

Subgrid ist ein Game-Changer. Damit können verschachtelte Grids die Spalten- oder Zeilendefinition des Eltern-Grids übernehmen.

.parent {
  display: grid;
  grid-template-columns: repeat(4, 1fr);
  gap: 1rem;
}

.child {
  grid-column: span 4;
  display: grid;
  grid-template-columns: subgrid;
  /* Übernimmt die 4 Spalten des Eltern-Grids */
}

Warum ist das wichtig? Stell dir Card-Layouts vor, bei denen Titel, Bild und Button über alle Cards hinweg exakt auf einer Linie sein sollen. Ohne Subgrid war das ein Albtraum. Mit Subgrid ist es trivial.

Subgrid hat mittlerweile breite Browser-Unterstützung – alle modernen Browser können es.

Container Queries in CSS: Das Ende von Media Queries? 📦
Grid + Container Queries = ultimative Responsive-Power. Schau mal rein!

🛠️ Praxisbeispiele

Dashboard Layout

.dashboard {
  display: grid;
  grid-template-columns: 250px 1fr;
  grid-template-rows: 60px 1fr;
  grid-template-areas:
    "nav header"
    "nav main";
  height: 100vh;
  gap: 0;
}

.dashboard-nav    { grid-area: nav; background: #1a1a2e; }
.dashboard-header { grid-area: header; background: #16213e; }
.dashboard-main   { grid-area: main; padding: 2rem; }

/* Cards im Main-Bereich */
.dashboard-cards {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(300px, 1fr));
  gap: 1.5rem;
}

Card Grid mit gleichmäßigen Höhen

.card-grid {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(280px, 1fr));
  gap: 2rem;
}

.card {
  display: grid;
  grid-template-rows: subgrid;
  grid-row: span 3; /* Bild, Content, Footer */
}

Holy Grail Layout

.holy-grail {
  display: grid;
  grid-template:
    "header header header" auto
    "nav    main   aside"  1fr
    "footer footer footer" auto
    / 200px 1fr    200px;
  min-height: 100vh;
  gap: 1rem;
}

header { grid-area: header; }
nav    { grid-area: nav; }
main   { grid-area: main; }
aside  { grid-area: aside; }
footer { grid-area: footer; }

Das Holy Grail Layout – jahrelang der heilige Gral des Webdesigns – ist mit Grid ein Fünfzeiler. Kein Float-Hack, kein Clearfix, kein Gebastel.

🧭 Wann Grid, wann Flexbox?

Situation Empfehlung
Navigation / Toolbar Flexbox
Seitenlayout mit Header, Sidebar, Content Grid
Card-Raster Grid
Elemente zentrieren Beide möglich
Elemente in einer Reihe mit variabler Breite Flexbox
Komplexe, verschachtelte Layouts Grid (mit Subgrid)
Dynamische Ausrichtung in einer Achse Flexbox

Die goldene Regel: Grid für das Layout, Flexbox für die Komponenten. Natürlich gibt es Graubereiche – aber mit dieser Faustregel liegst du in 90% der Fälle richtig.

CSS Grid Layout - CSS: Cascading Style Sheets | MDN
Die offizielle MDN-Referenz zu CSS Grid – perfekt zum Nachschlagen.
A Complete Guide to CSS Grid | CSS-Tricks
Der ultimative visuelle Guide zu CSS Grid von CSS-Tricks.

💡 Fazit

CSS Grid ist kein Ersatz für Flexbox – es ist die perfekte Ergänzung. Wenn du bisher nur Flexbox benutzt hast, fehlt dir buchstäblich die halbe Layout-Power von CSS.

Fang mit grid-template-areas an. Das ist der intuitivste Einstieg. Dann arbeite dich zu auto-fit + minmax() vor. Und wenn du Subgrid entdeckst, wirst du dich fragen, wie du jemals ohne ausgekommen bist.

Grid + Flexbox zusammen = Layout-Superkräfte. Kein Framework nötig. Nur reines CSS. 🚀

Artikel teilen:Share article:

Mehr Artikel entdecken

View Transitions API: Smooth Page Transitions Without a Framework ✨
Vorheriger Artikel

View Transitions API: Smooth Page Transitions Without a Framework ✨

TL;DR: The View Transitions API brings buttery-smooth page transitions directly to the browser - no framework, no JavaScript library needed. Just CSS and a few lines of JS. Here's how it works and why you should start using it today. 🤔 What Are View Transitions Anyway? You know

6 min read 13. Mai 2026
CSS Grid: The Missing Counterpart to Flexbox 🧩
Nächster Artikel

CSS Grid: The Missing Counterpart to Flexbox 🧩

TL;DR: CSS Grid is the missing puzzle piece to your Flexbox knowledge. While Flexbox handles one-dimensional layouts, Grid gives you full control over rows AND columns simultaneously. This article covers everything from basics to subgrid – with practical examples you can use right away. You know Flexbox? Great. Time to

4 min read 15. Mai 2026
View Transitions API: Smooth Page Transitions ohne Framework ✨
Ähnlicher Artikel

View Transitions API: Smooth Page Transitions ohne Framework ✨

TL;DR: Die View Transitions API bringt butterweiche Seitenuebergaenge direkt in den Browser - ganz ohne Framework, ganz ohne JavaScript-Bibliothek. Einfach CSS und ein paar Zeilen JS. Hier erfaehrst du, wie das funktioniert und warum du es sofort ausprobieren solltest. 🤔 Was sind View Transitions ueberhaupt? Kennst du das? Du klickst

6 min read 13. Mai 2026
CSS :has() – Der Parent Selector, auf den alle gewartet haben 🎯
Ähnlicher Artikel

CSS :has() – Der Parent Selector, auf den alle gewartet haben 🎯

TL;DR: CSS :has() ist der lang ersehnte Parent Selector – du kannst jetzt endlich Eltern-Elemente basierend auf ihren Kindern stylen. Kein JavaScript mehr nötig, kein Workaround, einfach pures CSS. Und ja, es funktioniert in allen modernen Browsern. 🤔 Warum gab es nie einen Parent Selector? Wenn du schon länger CSS schreibst,

4 min read 27. Apr. 2026
Container Queries in CSS: Das Ende von Media Queries? 📦
Ähnlicher Artikel

Container Queries in CSS: Das Ende von Media Queries? 📦

Container Queries machen Schluss mit dem Viewport-Chaos! 📦 Wie du deine Komponenten endlich wirklich responsive machst – und warum Media Queries trotzdem nicht tot sind.

4 min read 14. März 2026
Angular und TailwindCSS
Ähnlicher Artikel

Angular und TailwindCSS

Angular und TailwindCSS sind ein starkes Duo. So richtest du Tailwind in deinem Angular-Projekt ein und nutzt Utility-First CSS effektiv.

4 min read 13. März 2026