Übersicht: CSS-Grid

CSS Grid ist ein zweidimensionales Layout-System für das Web — es erlaubt das gleichzeitige Layout in Zeilen und Spalten. Du definierst einen Grid-Container (das Elternelement) und darin werden Grid-Items positioniert. Grid ist ideal für komplexe Seiten- oder Komponentenlayouts und arbeitet gut mit anderen Modulen (z. B. Flexbox). MDN Web Docs

1. Grundprinzip von CSS Grid

BegriffBeschreibung
Grid ContainerElternelement, auf das display: grid oder display: inline-grid angewendet wird.
Grid ItemsDirekte Kinder des Containers – sie werden automatisch Teil des Grids.
Grid TracksSpalten und Zeilen des Grids (engl. columns und rows).
Grid LinesLinien zwischen den Tracks, nummeriert oder benannt.
Grid AreasZusammenhängende Bereiche aus mehreren Zellen (per Namen definiert).
Explicit GridVom Entwickler explizit definierte Spalten/Zeilen.
Implicit GridVom Browser automatisch hinzugefügte Zeilen/Spalten.

2. Wichtige CSS-Eigenschaften für Grids

EigenschaftTypBeschreibungBeispiel
display: gridContainerAktiviert das Grid-Layout (Block-Layout).display: grid;
display: inline-gridContainerWie Grid, aber Inline-Element.display: inline-grid;
grid-template-columnsContainerDefiniert Spalten (Breiten & Anzahl).grid-template-columns: 200px 1fr 1fr;
grid-template-rowsContainerDefiniert Zeilen (Höhen & Anzahl).grid-template-rows: auto 100px 1fr;
grid-template-areasContainerDefiniert benannte Layoutbereiche.Siehe Beispiel unten

ein . beschreibt einen leeren Bereich
grid-templateContainerKurzform für rows, columns, areas.grid-template: auto 1fr / 200px 1fr;
gridContainerKurzform, kombiniert Templates und Auto-Werte.grid: auto-flow / 1fr 1fr;
grid-column-start, grid-column-endItemStart-/Endlinie für Spalte.grid-column: 1 / 3;
grid-row-start, grid-row-endItemStart-/Endlinie für Zeile.grid-row: 2 / 4;
grid-areaItemName einer Area oder Kurzform für row/column.grid-area: header;
grid-auto-rowsContainerHöhe automatisch erzeugter Zeilen.grid-auto-rows: minmax(100px, auto);
grid-auto-columnsContainerBreite automatisch erzeugter Spalten.grid-auto-columns: 200px;
grid-auto-flowContainerSteuerung, wie neue Items platziert werden.grid-auto-flow: row dense;
gapContainerAbstand zwischen Zellen (Kurzform).gap: 10px;
row-gap / column-gapContainerVertikaler / horizontaler Abstand.row-gap: 20px;
justify-itemsContainerAusrichtung der Items horizontal (innerhalb Zellen).justify-items: center;
align-itemsContainerVertikale Ausrichtung innerhalb Zellen.align-items: start;
place-itemsContainerKurzform für align-items / justify-items.place-items: center;
justify-contentContainerAusrichtung des gesamten Grids horizontal.justify-content: space-between;
align-contentContainerAusrichtung des gesamten Grids vertikal.align-content: space-around;
place-contentContainerKurzform für align-content / justify-content.place-content: center;
justify-selfItemHorizontale Ausrichtung eines Items.justify-self: end;
align-selfItemVertikale Ausrichtung eines Items.align-self: start;
minmax(min, max)FunktionDefiniert min. und max. Größe eines Tracks.grid-template-columns: minmax(150px, 1fr);
repeat(n, value)FunktionWiederholt Spalten-/Zeilenmuster.grid-template-columns: repeat(3, 1fr);
auto-fit / auto-fillFunktionAutomatische, responsive Wiederholung von Spalten.repeat(auto-fill, minmax(200px, 1fr));
subgridContainer (Kind)Erbt Trackgrößen vom Eltern-Grid (Grid Level 2).grid-template-rows: subgrid;

3. Praxis-Beispiele

Einfaches 3-Spalten-Layout:

.container {
  display: grid;
  grid-template-columns: 1fr 2fr 1fr; /* 3 Spalten: 1:2:1 */
  gap: 16px; /* Abstand zwischen Zellen */
}

Grid mit benannten Bereichen:

.container {
  display: grid;
  grid-template-columns: 200px 1fr;
  grid-template-rows: auto 1fr auto;
  grid-template-areas:
    "header header"
    "sidebar main"
    "footer footer";
  gap: 12px;
}
.header { grid-area: header; }
.sidebar { grid-area: sidebar; }
.main { grid-area: main; }
.footer { grid-area: footer; }

4. Tipps & Best Practices

TippErklärung
✅ Verwende gap statt margin zwischen Grid-ItemsSorgt für saubere, konsistente Abstände.
✅ Kombiniere Grid (für Layout) + Flexbox (für Inhalte)Ideal für komplexe Seitenstrukturen.
✅ Nutze minmax() und auto-fit für responsive DesignsFlexible Spalten ohne Media Queries.
⚠️ Vorsicht bei grid-auto-flow: denseKann Reihenfolge optisch verändern – nicht immer barrierefrei.

5. Links

CSS-Tricks: https://css-tricks.com/snippets/css/complete-guide-grid/