mitmario.dev

Grid Praxis-Layouts

Grid-Theorie ist das eine, echte Layouts bauen das andere. In diesem Artikel findest du die häufigsten Layout-Patterns, die du mit CSS Grid lösen kannst: ein flexibles 12-Spalten-System, ein Dashboard mit benannten Bereichen, ein Magazine-Layout mit verschieden großen Karten, und responsive Raster, die sich ohne Media Queries anpassen. Jedes Beispiel kannst du direkt kopieren und in deinem Projekt anpassen.

Steckbrief Grid Praxis-Layouts
Syntax
display: grid
Initialwert
(siehe Einzeleigenschaften)
Vererbt
Nein
Animierbar
Nein
Kategorie
Grid
Browser
5 von 5
E-Mail
0 von 5
Stand
15.02.2026

12-Spalten-Grid

Das klassische 12-Spalten-System, wie du es von Bootstrap kennst, lässt sich mit CSS Grid in zwei Zeilen bauen. Items platzierst du mit span, und die Mathematik stimmt immer.

12-Spalten-Grid
.grid-12 {
  display: grid;
  grid-template-columns: repeat(12, 1fr);
  gap: 8px;
}

.col-12 { grid-column: span 12; }
.col-8  { grid-column: span 8; }
.col-6  { grid-column: span 6; }
.col-4  { grid-column: span 4; }
.col-3  { grid-column: span 3; }

Dashboard-Layout

Ein typisches Dashboard mit Header, Sidebar, Hauptbereich und Widgets. grid-template-areas macht die Struktur sofort lesbar, und verschachteltes Grid im Widget-Bereich sorgt für flexible Inhalte.

Dashboard-Layout
.dashboard {
  display: grid;
  grid-template-areas:
    "header  header  header"
    "sidebar main    main"
    "sidebar widgets widgets";
  grid-template-columns: 140px 1fr 1fr;
  grid-template-rows: 45px 1fr auto;
  gap: 8px;
}

.header  { grid-area: header; }
.sidebar { grid-area: sidebar; }
.main    { grid-area: main; }

/* Verschachteltes Grid für Widgets */
.widgets {
  grid-area: widgets;
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 8px;
}

Magazine-Layout

Ein asymmetrisches Layout, bei dem der Featured-Artikel einen großen Bereich einnimmt und kleinere Artikel drumherum angeordnet sind. Das erreichst du mit grid-column: span und grid-row: span.

Magazine-Layout
.magazine {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  grid-auto-rows: 80px;
  gap: 8px;
}

/* Featured: 2 Spalten, 2 Zeilen */
.featured {
  grid-column: span 2;
  grid-row: span 2;
}

/* Breiter Artikel: 2 Spalten */
.medium { grid-column: span 2; }

Responsive ohne Media Queries

Mit repeat(auto-fit, minmax(250px, 1fr)) erstellt der Browser automatisch so viele Spalten wie nötig. Die Karten sind mindestens 250px breit und füllen den Rest mit 1fr. Kein JavaScript, keine Media Queries.

Responsives Card-Grid ohne Media Queries
.card-grid {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(250px, 1fr));
  gap: 16px;
}

/* auto-fit: leere Spalten werden zusammengeklappt
   minmax(250px, 1fr): mindestens 250px, maximal 1fr
   → Responsive ohne Media Queries! */

Responsive mit Grid-Template-Areas

Für komplexere Layouts, bei denen sich die Struktur auf verschiedenen Bildschirmgrößen grundlegend ändert, kombinierst du grid-template-areas mit Media Queries.

Responsive Layout (Mobile-Ansicht)
/* Mobile: alles gestapelt */
.layout {
  display: grid;
  grid-template-areas:
    "header"
    "nav"
    "main"
    "aside"
    "footer";
  grid-template-columns: 1fr;
  gap: 8px;
}

/* Tablet: 2-Spalten */
@media (min-width: 768px) {
  .layout {
    grid-template-areas:
      "header header"
      "nav    nav"
      "main   aside"
      "footer footer";
    grid-template-columns: 1fr 200px;
  }
}

/* Desktop: 3-Spalten */
@media (min-width: 1024px) {
  .layout {
    grid-template-areas:
      "header header header"
      "nav    main   aside"
      "footer footer footer";
    grid-template-columns: 160px 1fr 200px;
  }
}

Barrierefreiheit

Responsive Grid-Layouts sind eine häufige Quelle für Barrierefreiheitsprobleme. Wenn sich das visuelle Layout zwischen Mobile, Tablet und Desktop stark unterscheidet, kann die Lesereihenfolge für Screenreader inkonsistent oder verwirrend werden.

Kritische Punkte:

  • DOM-Reihenfolge über alle Breakpoints testen: Die Reihenfolge muss für Mobile, Tablet und Desktop logisch bleiben. Wenn die Sidebar auf Mobile nach oben wandert, sollte sie auch im DOM vor dem Hauptinhalt stehen.
  • Tab-Reihenfolge bei verschiedenen Viewport-Größen prüfen: Teste mit der Tab-Taste, ob die Fokusreihenfolge bei jedem Breakpoint Sinn ergibt. Sprünge zwischen weit entfernten Bereichen sind verwirrend.
  • Komplexe Magazine-Layouts kritisch prüfen: Asymmetrische Layouts mit verschieden großen Karten können eine visuelle Reihenfolge erzeugen, die von der DOM-Reihenfolge abweicht. Für Bildergalerien ist das egal, bei Artikellisten problematisch.

Best Practice: Baue deine Layouts “Mobile First” und erweitere sie für größere Screens. So bleibt die DOM-Reihenfolge meist natürlich. Teste regelmäßig mit Screenreader und Tastatur, nicht nur visuell.

Tipps für die Praxis

7 Punkte
  • auto-fit statt auto-fill für responsive Grids: auto-fit klappt leere Spalten zusammen, sodass deine Items den gesamten Platz nutzen. Das ist in den meisten Fällen das gewünschte Verhalten.
  • Benannte Areas für komplexe Layouts: Wenn dein Layout mehr als 3-4 Bereiche hat, sind grid-template-areas viel lesbarer als Liniennummern. Der CSS-Code liest sich wie eine visuelle Darstellung des Layouts.
  • minmax() statt fester Breiten: minmax(200px, 1fr) gibt deinen Spalten eine Mindestbreite, lässt sie aber flexibel wachsen. Das ist robuster als feste Pixelwerte.
  • Grid für 2D, Flexbox für 1D: Verwende Grid, wenn du Zeilen UND Spalten gleichzeitig kontrollieren willst. Für einfache Reihen (Navigation, Button-Gruppen) ist Flexbox oft einfacher.
  • Verschachteltes Grid ist normal: Ein Grid-Item kann selbst ein Grid-Container sein. Das ist kein Anti-Pattern, sondern der empfohlene Weg für komplexe Layouts wie Dashboards.
  • Teste mit gap: Ein gap von 8-16px macht den Unterschied zwischen einem professionellen und einem zusammengequetschten Layout. gap ist sauberer als Margins, weil kein Abstand am Rand entsteht.
  • Mobile First bei grid-template-areas: Definiere zuerst das Mobile-Layout (gestapelt) und erweitere es in Media Queries für Tablet und Desktop. So funktioniert dein Layout auch ohne CSS.

Browser-Kompatibilität

5 von 5

Alle in diesem Artikel verwendeten Grid-Eigenschaften werden von allen modernen Browsern vollständig unterstützt.

  • Chrome

    Komplett

  • Firefox

    Komplett

  • Safari

    Komplett

  • Edge

    Komplett

  • Opera

    Komplett

Email-Kompatibilität

0 von 5

Grid-Layouts funktionieren in HTML-Emails nur in Apple Mail und Thunderbird teilweise. Für E-Mail-Layouts solltest du auf Tabellen-basierte Layouts zurückgreifen.

  • Apple Mail

    Teilweise

    Grundlegende Grid-Layouts werden unterstützt

  • Gmail

    Keine

    Grid wird komplett ignoriert

  • Outlook

    Keine

    Kein Grid-Support, Tabellen-Layouts verwenden

  • Thunderbird

    Teilweise

    Grundlegende Grid-Layouts werden unterstützt

  • Yahoo Mail

    Keine

    Kein Grid-Support

Newsletter

einmal die Woche, kostenlos

Neue Artikel und Videos, was sich auf der Lernplattform tut, und ab und zu ein Sonderpreis zum Kursstart. Kurz genug, dass du es auch liest.

Zuletzt verschickt · KW 40

Einmal alles neu, und die Lernplattform ist da

Danach kommt eine Mail mit Bestätigungslink, erst dann bist du eingetragen. Abmelden geht unten in jeder Ausgabe. Mehr dazu in der Datenschutzerklärung.