mitmario.dev

Flexbox Praxis-Layouts

Flexbox-Theorie ist das eine, echte Layouts bauen das andere. In diesem Artikel findest du die häufigsten Layout-Patterns, die du mit Flexbox lösen kannst: perfekte Zentrierung, responsive Navigationen, Card-Layouts mit gleicher Höhe, das klassische Holy-Grail-Layout und einen Sticky Footer. Jedes Beispiel kannst du direkt kopieren und in deinem Projekt anpassen.

Steckbrief Flexbox Praxis-Layouts
Syntax
display: flex | inline-flex
Initialwert
(siehe Einzeleigenschaften)
Vererbt
Nein
Animierbar
Nein
Kategorie
Flexbox
Browser
5 von 5
E-Mail
2 von 5
Stand
15.02.2026

Perfekte Zentrierung

Die einfachste und eleganteste Art, ein Element vertikal und horizontal zu zentrieren. Zwei Zeilen CSS reichen.

Perfekte Zentrierung
.container {
  display: flex;
  justify-content: center;
  align-items: center;
  height: 160px;
}

Eine Alternative, die ebenfalls funktioniert: margin: auto auf dem Flex-Item.

Zentrierung mit margin: auto
.container {
  display: flex;
  height: 160px;
}

.item {
  margin: auto;
}

Responsive Navigation

Eine Navigation mit Logo links und Links rechts ist eines der häufigsten Patterns im Web. space-between macht es trivial.

Navigation mit space-between
.navbar {
  display: flex;
  justify-content: space-between;
  align-items: center;
  padding: 12px 20px;
}

.nav-links {
  display: flex;
  gap: 16px;
  list-style: none;
}

Card-Layout mit gleicher Höhe

Cards sollen immer gleich hoch sein, unabhängig vom Inhalt. Der Trick: flex: 1 1 300px für responsive Spalten und margin-top: auto auf dem Button, um ihn nach unten zu drücken.

Card-Layout mit gleicher Höhe
.card-grid {
  display: flex;
  flex-wrap: wrap;
  gap: 16px;
}

.card {
  flex: 1 1 180px;
  display: flex;
  flex-direction: column;
}

/* Button immer unten */
.card-btn {
  margin-top: auto;
}

Holy Grail Layout

Das klassische Layout mit Header, Footer, Sidebar links, Sidebar rechts und einem Main-Bereich in der Mitte. Mit Flexbox brauchst du nur verschachtelte Flex-Container.

Holy Grail Layout
.holy-grail {
  display: flex;
  flex-direction: column;
  height: 260px;
}

.body {
  display: flex;
  flex: 1;
}

.sidebar       { width: 90px; }
.main          { flex: 1; }
.sidebar-right { width: 80px; }

Der Footer klebt am unteren Rand der Seite, auch wenn der Inhalt kurz ist. Das Geheimnis: flex-direction: column auf dem äußeren Container, min-height: 100vh und flex: 1 auf dem Main-Bereich.

Sticky Footer
.page {
  display: flex;
  flex-direction: column;
  min-height: 100vh;
}

.main {
  flex: 1; /* Füllt den Rest */
}

/* Header und Footer brauchen kein flex */

Barrierefreiheit

Responsive Flexbox-Layouts müssen auf allen Breakpoints eine logische Lesereihenfolge behalten. Das betrifft besonders Layouts, die von flex-direction: row auf column wechseln (oder umgekehrt).

Test-Checklist:

  • Navigiere mit der Tab-Taste durch dein Layout, auf Mobile UND Desktop. Die Tab-Reihenfolge muss in beiden Ansichten Sinn ergeben.
  • Wenn Items bei kleineren Viewports umbrechen oder die Richtung wechseln, überprüfe, ob die semantische Reihenfolge (= DOM-Reihenfolge) noch zur visuellen Darstellung passt.
  • Bei Layouts wie dem Holy-Grail-Pattern: Die HTML-Struktur sollte Header → Sidebar → Main → Footer sein (oder Main vor Sidebar, je nach Priorität), auch wenn visuell die Sidebar links vom Main-Bereich erscheint.

WCAG 1.3.2 (Meaningful Sequence): Die DOM-Reihenfolge muss die logische Lesereihenfolge widerspiegeln. Wenn die visuelle Anordnung bei unterschiedlichen Viewport-Breiten stark variiert, teste mit Screenreadern (z.B. NVDA, VoiceOver) und Tastaturnavigation.

Tipps für die Praxis

7 Punkte
  • Starte mit flex: 1: In den meisten Fällen willst du, dass Items den verfügbaren Platz gleichmäßig aufteilen. flex: 1 ist dein Standardwerkzeug dafür.
  • margin-top: auto ist mächtig: In einem flex-direction: column Container schiebt margin-top: auto ein Element nach unten. Das ist perfekt für Buttons in Cards oder Footers in Containern.
  • Verschachtelte Flex-Container sind normal: Für komplexe Layouts brauchst du oft Flex-Container in Flex-Containern. Das ist kein Anti-Pattern, sondern genau dafür gemacht.
  • gap statt margin: Verwende gap für Abstände zwischen Items. Es ist sauberer, weil kein Abstand am Rand entsteht und du keinen :last-child Hack brauchst.
  • Flexbox vs. Grid: Flexbox ist ideal für eindimensionale Layouts (eine Reihe oder eine Spalte). Für zweidimensionale Raster (Zeilen und Spalten gleichzeitig) ist CSS Grid die bessere Wahl.
  • Mobile First: Starte mit flex-direction: column für Mobile und wechsle mit einer Media Query zu row für Desktop. Das ist einfacher als umgekehrt.
  • Teste mit unterschiedlichem Inhalt: Flex-Layouts können überraschen, wenn ein Item plötzlich mehr Text hat als erwartet. Teste immer mit kurzen und langen Inhalten.

Browser-Kompatibilität

5 von 5

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

  • Chrome

    Komplett

  • Firefox

    Komplett

  • Safari

    Komplett

  • Edge

    Komplett

  • Opera

    Komplett

Email-Kompatibilität

2 von 5

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

  • Apple Mail

    Komplett

  • Gmail

    Keine

    Flexbox wird komplett ignoriert

  • Outlook

    Keine

    Kein Flexbox-Support, Tabellen-Layouts verwenden

  • Thunderbird

    Komplett

  • Yahoo Mail

    Keine

    Kein Flexbox-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.