Grundlagen · 10 Min. Lesezeit

CSS Grid lernen: Der komplette Einsteiger-Leitfaden 2026

Von der ersten Zeile display: grid bis zum fertigen Seitenlayout. Container, Items, Spuren und Einheiten Schritt für Schritt erklärt.

Mateusz Viola
Mateusz Viola
Frontend-Redaktion · Aktualisiert: Juni 2026

CSS Grid ist die mit Abstand mächtigste Methode, um Layouts im Web zu bauen. Wer einmal verstanden hat, wie ein Container seine Kinder in Zeilen und Spalten einsortiert, baut Galerien, Dashboards und ganze Seiten in einem Bruchteil der Zeit, die früher mit Floats oder verschachtelten div-Türmen nötig war. Dieser Leitfaden führt dich von Null aus durch die Grundlagen: Du startest mit einem leeren Container, lernst Schritt für Schritt jede wichtige Eigenschaft kennen und baust am Ende ein vollständiges, klassisches Seitenlayout. Jeden Schritt kannst du direkt im CSS Grid Generator nachklicken und dir den passenden Code ausgeben lassen.

Was CSS Grid ist und wann du es brauchst

CSS Grid Layout, offiziell als CSS Grid Layout Module Level 1 vom W3C spezifiziert, ist ein zweidimensionales Layout-System. Das ist der entscheidende Unterschied zu allem, was es vorher gab. Floats, Tabellen oder Inline-Block waren immer Behelfslösungen für ein Problem, für das CSS lange kein eigenes Werkzeug hatte: Elemente gleichzeitig in Zeilen und Spalten anzuordnen und dabei volle Kontrolle über beide Achsen zu behalten.

Du legst ein Raster aus unsichtbaren Linien an, die Spalten und Zeilen begrenzen. Die Felder dazwischen heißen Zellen, der Bereich zwischen mehreren Zellen ist ein Bereich (Area). Deine Inhalte, die Grid-Items, setzt du anschließend in dieses Raster, entweder automatisch oder ganz gezielt auf bestimmte Linien.

Faustregel für die Praxis: Sobald ein Layout in beide Richtungen strukturiert ist, etwa eine Seite mit Kopf, Seitenleiste, Inhalt und Fuß, ist Grid das richtige Werkzeug. Geht es nur um eine einzelne Reihe oder Spalte, zum Beispiel eine Navigationsleiste mit Buttons nebeneinander, ist Flexbox oft einfacher. Beide Systeme schließen sich nicht aus, sie ergänzen sich: Ein Grid-Item kann selbst wieder ein Flex-Container sein.

Dein erstes Grid: Container und Items

Jedes Grid besteht aus genau zwei Rollen. Das Elternelement, auf dem display: grid steht, ist der Grid-Container. Alle direkten Kindelemente werden dadurch automatisch zu Grid-Items. Wichtig: nur die direkten Kinder, nicht die Enkel. Das ist der häufigste Stolperstein am Anfang.

Hier ist das minimal mögliche Grid. Ein Container mit drei Boxen, aufgeteilt in drei gleich breite Spalten:

.container {
  display: grid;
  grid-template-columns: 1fr 1fr 1fr;
  gap: 16px;
}
<div class="container">
  <div>Box 1</div>
  <div>Box 2</div>
  <div>Box 3</div>
</div>
Grid-Container (display: grid) Box 1 Box 2 Box 3 gap: 16px
Drei Grid-Items in drei gleich breiten Spalten, getrennt durch einen Abstand (gap).

Tipp: Du musst die Boxen nicht einzeln benennen. Sobald der Container ein Grid ist, fließen die Kinder automatisch der Reihe nach in die Zellen. Diese Automatik nennt man auto-placement, und für die meisten Galerien und Kartenlisten reicht sie völlig aus.

Spalten und Zeilen definieren

Die beiden zentralen Eigenschaften heißen grid-template-columns für die Spalten und grid-template-rows für die Zeilen. Jeder Wert, den du angibst, beschreibt eine Spur (track), also eine Spalte oder Zeile. grid-template-columns: 200px 1fr 200px erzeugt drei Spalten: eine feste linke und rechte Spalte von je 200 Pixeln und eine flexible Mitte, die den Rest füllt.

Statt Werte zu wiederholen, nutzt du die Funktion repeat(). repeat(4, 1fr) ist die Kurzform für 1fr 1fr 1fr 1fr und erzeugt vier gleich breite Spalten. Das spart Tipparbeit und macht spätere Änderungen einfacher.

Wenn du keine Zeilen explizit definierst, legt Grid sie automatisch an, sobald Items in einer neuen Reihe landen. Die Höhe dieser impliziten Zeilen steuerst du mit grid-auto-rows. So bleibt eine Kartengalerie aufgeräumt, auch wenn du nicht weißt, wie viele Karten am Ende vorhanden sind.

Die richtigen Einheiten: fr, px, auto, minmax

Welche Einheit du für eine Spur wählst, entscheidet darüber, wie sich das Layout bei verschiedenen Bildschirmgrößen verhält. Diese vier solltest du sicher beherrschen:

Einheit Verhalten Wann nutzen
fr Anteil am freien Platz, flexibel Spalten, die mitwachsen sollen
px Feste Größe, unveränderlich Seitenleisten, Icons, feste Breiten
auto So breit wie der Inhalt es verlangt Spalten, die sich dem Inhalt anpassen
minmax() Untergrenze bis Obergrenze Responsive Spalten ohne Media Query

Die fr-Einheit verteilt nur den Platz, der nach festen Werten und gap übrig bleibt.

Der Klassiker für responsive Layouts kombiniert repeat(), auto-fit und minmax(). Damit passt sich die Spaltenanzahl ganz ohne Media Query an die verfügbare Breite an:

.galerie {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(220px, 1fr));
  gap: 20px;
}

Jede Karte ist mindestens 220 Pixel breit und höchstens ein gleicher Anteil des Platzes. Sobald eine weitere Karte hineinpasst, fügt Grid automatisch eine Spalte hinzu. Die Details zu auto-fit gegen auto-fill behandelt der Responsive-Grid-Ratgeber.

Items gezielt platzieren

Bis hierhin hat Grid die Items automatisch einsortiert. Manchmal soll ein Element aber über mehrere Spalten gehen oder an einer bestimmten Stelle sitzen. Dafür gibt es die Grid-Linien. Bei drei Spalten gibt es vier vertikale Linien, von 1 ganz links bis 4 ganz rechts.

Mit grid-column: 1 / 3 sagst du einem Item, es soll von Linie 1 bis Linie 3 reichen, also zwei Spalten überspannen. Bequemer ist oft grid-column: span 2: das Item belegt zwei Spalten, egal wo es startet. Analog funktioniert grid-row für die Zeilen.

.hervorgehoben {
  grid-column: 1 / 3;   /* zwei Spalten breit */
  grid-row: 1 / 2;
}

Für größere Layouts lohnt sich der lesbarere Weg über benannte Bereiche mit grid-template-areas. Statt mit Liniennummern zu jonglieren, gibst du den Bereichen Namen wie header oder sidebar. Wie das genau funktioniert, zeigt der Ratgeber zu grid-template-areas.

Inhalte ausrichten und Lücken setzen

Den Abstand zwischen den Spuren steuerst du mit gap, früher grid-gap genannt. Du kannst einen Wert für beide Achsen angeben oder zwei getrennte: gap: 24px 16px bedeutet 24 Pixel zwischen Zeilen und 16 Pixel zwischen Spalten.

Für die Ausrichtung innerhalb der Zellen gibt es zwei Achsen. justify-items richtet horizontal aus, align-items vertikal. Beide zusammen kürzt place-items ab. place-items: center zentriert jeden Inhalt perfekt in seiner Zelle, eine der saubersten Methoden, überhaupt etwas in CSS zu zentrieren.

Achtung: Verwechsle nicht die Ausrichtung der Items in den Zellen (justify-items, align-items) mit der Ausrichtung des gesamten Rasters im Container (justify-content, align-content). Letztere greift nur, wenn das Grid kleiner als sein Container ist, etwa bei festen px-Spalten in einem breiten Container.

Praxis: ein komplettes Seitenlayout

Jetzt bauen wir das klassische Layout, das fast jede Webseite hat: Kopfzeile oben, Seitenleiste links, Hauptinhalt rechts, Fußzeile unten. Mit benannten Bereichen ist der Code fast selbsterklärend:

.seite {
  display: grid;
  grid-template-columns: 220px 1fr;
  grid-template-rows: auto 1fr auto;
  grid-template-areas:
    "header  header"
    "sidebar inhalt"
    "footer  footer";
  gap: 16px;
  min-height: 100vh;
}

.kopf    { grid-area: header;  }
.seitenleiste { grid-area: sidebar; }
.inhalt  { grid-area: inhalt;  }
.fuss    { grid-area: footer;  }

Die drei Zeilen in grid-template-areas sind eine kleine ASCII-Karte des Layouts. Header und Footer ziehen sich über beide Spalten, weil ihr Name zweimal nebeneinander steht. Wer das Layout später für Mobilgeräte umbauen will, ändert nur die Areas in einer Media Query, der HTML-Code bleibt unangetastet.

Genau dieses Vorgehen kannst du im Generator visuell zusammenklicken: Spalten und Zeilen einstellen, Bereiche benennen, Vorschau prüfen und den fertigen CSS-Code kopieren, ohne eine einzige Liniennummer von Hand zu zählen.

Typische Anfängerfehler

Häufige Fragen zu CSS Grid

Was ist CSS Grid in einem Satz?

CSS Grid ist ein zweidimensionales Layout-System in CSS, mit dem sich Elemente gleichzeitig in Zeilen und Spalten anordnen lassen, ohne Floats oder zusätzliche Wrapper-Elemente.

Wie lange dauert es, CSS Grid zu lernen?

Die Grundlagen (Container, Zeilen, Spalten, gap) lassen sich an einem Nachmittag verstehen. Für sichere Praxis inklusive minmax, auto-fit und grid-template-areas sollte man mit ein bis zwei Wochen regelmäßiger Übung an echten Layouts rechnen.

Was ist der Unterschied zwischen CSS Grid und Flexbox?

Flexbox ist eindimensional und ordnet Elemente entlang einer Achse an (Zeile oder Spalte). CSS Grid ist zweidimensional und steuert Zeilen und Spalten zugleich. Für Komponenten in einer Reihe eignet sich Flexbox, für ganze Seitenraster Grid.

Was bedeutet die Einheit fr in CSS Grid?

Die Einheit fr (fraction) steht für einen Anteil am verfügbaren freien Platz im Grid-Container. 1fr 1fr teilt den Raum in zwei gleich große Spalten, 2fr 1fr im Verhältnis zwei zu eins.

Brauche ich für CSS Grid noch Fallbacks für alte Browser?

In der Praxis kaum noch. CSS Grid wird laut MDN von allen aktuellen Browsern seit März 2017 unterstützt und liegt global bei über 97 Prozent Abdeckung. Fallbacks sind nur bei sehr alten Browserversionen wie dem Internet Explorer relevant.

Wie zentriere ich ein Element mit CSS Grid?

Mit place-items: center auf dem Grid-Container wird der Inhalt jeder Zelle horizontal und vertikal zentriert. Für ein einzelnes Item nutzt man place-self: center.

Quellen

Verwandte Artikel

Grundlagen Die Einheit fr in CSS Grid einfach erklärt fr gegen px gegen Prozent gegen auto: Wann nimmt man welche Einheit? Vergleich CSS Grid vs Flexbox: Wann welches Layout? Entscheidungshilfe mit Tabelle und konkreten Praxis-Szenarien. Responsive Responsive Layouts mit CSS Grid: minmax und auto-fit Tutorial zu auto-fit, auto-fill und minmax mit lauffähigem Code.

Probier es direkt aus

Stelle Spalten, Zeilen und gap visuell ein und kopiere den fertigen CSS-Code. Kostenlos, ohne Anmeldung, 100% lokal im Browser.

Zum CSS Grid Generator
Anzeige
Anzeige
Anzeige
Anzeige
Anzeige