edubun
Deutsch

Flexbox

Vor Flexbox brauchte man Tricks, um eine Box senkrecht zu zentrieren. Mit display: flex reichen zwei Deklarationen: justify-content und align-items.

Eine Zeile oder eine Spalte

Flexbox, das CSS-Modul Flexible Box Layout, ordnet eine Gruppe von Boxen entlang einer Linie an. Setz display: flex auf einen Container, und seine direkten Kinder, die Flex-Items, reihen sich nebeneinander auf, statt sich zu stapeln. Diese eine Deklaration reicht für eine Menüleiste, eine Reihe von Buttons oder eine Karte, deren Fußzeile unten kleben soll. Flexbox arbeitet in einer Dimension auf einmal: entweder eine Zeile oder eine Spalte. Wenn du Zeilen und Spalten zusammen brauchst, ist Grid aus der nächsten Einheit meist das bessere Werkzeug.

In einer Zeile verläuft die Hauptachse (im Deutschen) von links nach rechts und die Querachse von oben nach unten. justify-content wirkt entlang der Hauptachse, align-items entlang der Querachse.

Zwei Achsen

In Flexbox wird alles über zwei Achsen beschrieben. Die Hauptachse ist die Richtung, in der die Items fließen, festgelegt durch flex-direction: row (Standard) oder column. Die Querachse steht im rechten Winkel dazu. justify-content verteilt die Items entlang der Hauptachse: flex-start, center, flex-end, space-between (erstes und letztes Item an den Rändern, gleiche Lücken dazwischen) oder space-around. align-items positioniert sie auf der Querachse: stretch (Standard, alle Items so hoch wie das höchste), flex-start, center oder flex-end. Eine Box ist also mit justify-content: center und align-items: center in beide Richtungen zentriert.

.bar {
  display: flex;
  justify-content: space-between;  /* logo left, menu right */
  align-items: center;             /* vertically centred */
  gap: 16px;                       /* space between items */
}
.cards { display: flex; flex-wrap: wrap; gap: 12px; }
.card  { flex: 1 1 200px; }        /* grow, shrink, start at 200px */
Eine Kopfleiste und eine Reihe von Karten, die in neue Zeilen umbricht.

Lücken und Umbruch

gap setzt Abstand zwischen die Items, ohne an den Außenrändern etwas hinzuzufügen. Das will man meistens, und genau das ist mit Margins umständlich. Standardmäßig bleiben Flex-Items in einer Zeile und schrumpfen, bis sie passen, auch wenn sie dabei gequetscht werden. flex-wrap: wrap lässt sie in eine neue Zeile rutschen, wenn der Platz nicht reicht. So wird aus einer Reihe von vier Karten auf dem Laptop auf dem Tablet zwei Reihen mit je zwei Karten und auf dem Handy eine einzige Spalte, ganz ohne Media Query.

Wie Items wachsen und schrumpfen

Die Kurzschreibweise flex an einem Item nimmt drei Werte. flex-grow sagt, wie viel vom übrigen Platz das Item im Vergleich zu seinen Geschwistern bekommt. flex-shrink sagt, wie bereitwillig es schrumpft, wenn der Platz knapp wird. flex-basis ist seine Ausgangsgröße vor dem Wachsen oder Schrumpfen. flex: 1 1 200px heißt: bei 200 Pixeln starten und dann zusätzlichen Platz gleichmäßig mit anderen Items teilen, die ebenfalls grow 1 haben. flex: 1 allein ist die Kurzform für 1 1 0% und macht alle Items gleich breit. Gibst du einem Item flex-grow: 2 und den anderen 1, bekommt es doppelt so viel vom übrigen Platz wie sie.

Sichtbare und echte Reihenfolge

Flexbox kann die Reihenfolge der Items ändern, mit flex-direction: row-reverse oder der Eigenschaft order, ohne das HTML anzufassen. Geh damit vorsichtig um. Tastaturfokus und Screenreader folgen weiter der Reihenfolge im HTML. Zeigt der Bildschirm also Contact vor Home, aber die Tab-Taste besucht zuerst Home, verlieren Tastaturnutzer die Orientierung. Wenn die Reihenfolge für die Bedeutung wichtig ist, ändere sie im HTML.

Flex-ContainerDas Elternelement mit display: flex
Flex-ItemEin direktes Kind eines Flex-Containers
HauptachseFlussrichtung; festgelegt durch flex-direction
justify-contentVerteilt Items entlang der Hauptachse
align-itemsPositioniert Items auf der Querachse
gapAbstand zwischen Items, nicht an den Rändern
flex: 1 1 200pxgrow 1, shrink 1, Basis 200px
  1. Welche Deklaration macht ein Element zum Flex-Container?
    • display: flex
    • flex: 1
    • position: flex
  2. Welche Eigenschaft verteilt Items in einer Zeile waagerecht?
    • justify-content
    • align-items
    • flex-wrap
  3. Was steuert justify-content bei flex-direction: column?
    • Die senkrechte Verteilung
    • Die waagerechte Verteilung
    • Die Schriftgröße
  4. Welcher Wert setzt das erste und das letzte Item an die Ränder, mit gleichen Lücken dazwischen?
    • space-between
    • space-around
    • center
  5. Welchen Standardwert hat align-items?
    • stretch
    • center
    • flex-start
  6. Vier Items haben flex: 1 in einem 400px breiten Container ohne Lücken. Wie breit ist jedes?
  7. Drei Items mit flex-basis 0 teilen sich 400px. Eines hat flex-grow 2, die anderen 1. Wie breit ist das große?
  8. Was erlaubt flex-wrap: wrap?
    • Items rutschen in eine neue Zeile, wenn kein Platz ist
    • Text bricht innerhalb der Items um
    • Items überlappen sich
  9. Die Eigenschaft order setzt Contact auf dem Bildschirm an die erste Stelle, im HTML steht es aber zuletzt. Was besucht es trotzdem zuletzt?
    • Tastaturfokus und Screenreader
    • Der Mauszeiger
    • Nichts
  10. In wie vielen Dimensionen auf einmal ordnet Flexbox an?
Das Wichtigste
  • display: flex reiht die direkten Kinder entlang der Hauptachse auf.
  • justify-content auf der Hauptachse, align-items auf der Querachse, gap dazwischen.
  • flex: grow shrink basis; flex-wrap: wrap für Reihen, die umbrechen; sichtbare Reihenfolge gleich der HTML-Reihenfolge halten.
Quellen zu diesem Kurs (6)
  • W3C CSS Working Group specifications: CSS Snapshot 2025, Selectors Level 4, CSS Cascading and Inheritance Level 5, CSS Color Level 4, CSS Values and Units Level 4, CSS Box Model Level 3, CSS Box Sizing Level 3, CSS Fonts Level 4, CSS Flexible Box Layout Level 1, CSS Grid Layout Level 2, Media Queries Level 4 and Level 5 (w3.org/TR/, checked 2026-10-17)
  • MDN Web Docs, Learn web development: CSS styling basics and CSS layout, and the CSS reference (developer.mozilla.org/en-US/docs/Learn_web_development/Core/Styling_basics, .../Core/CSS_layout, developer.mozilla.org/en-US/docs/Web/CSS, checked 2026-10-17)
  • W3C, CSS history and CSS1 Recommendation of 17 December 1996 (w3.org/Style/CSS20/history.html, w3.org/press-releases/1996/css1-rec, checked 2026-10-17)
  • W3C WCAG 2.2, success criteria 1.4.3 Contrast (Minimum)
  • 1.4.8 Visual Presentation, 1.4.10 Reflow, 1.4.12 Text Spacing (w3.org/TR/WCAG22/, checked 2026-10-17)
  • every code exercise checked with a Playwright probe against a reference solution.

Abgerufen: 2026-10-17