Flex-Items

Zuletzt aktualisiert am 15. Februar 2026

Die Container-Eigenschaften steuern das Layout als Ganzes, aber die echte Flexibilität kommt von den Item-Eigenschaften. Mit flex-grow und flex-shrink bestimmst du, wie Items den verfügbaren Platz aufteilen oder bei Platzmangel schrumpfen. flex-basis definiert die Ausgangsgröße, und die Shorthand flex fasst alles zusammen. Dazu kommen order für die visuelle Reihenfolge und align-self für individuelle Ausrichtung.

Syntax
flex: <flex-grow> <flex-shrink> <flex-basis>
Initialwert
0 1 auto
Vererbt
Nein
Animierbar
Ja
Shorthand für
flex-growflex-shrinkflex-basis

Grundlagen

Jedes direkte Kind eines Flex-Containers ist automatisch ein Flex-Item. Standardmäßig hat jedes Item flex: 0 1 auto. Das bedeutet: Es wächst nicht über seine natürliche Größe hinaus (flex-grow: 0), es schrumpft bei Bedarf (flex-shrink: 1), und seine Ausgangsgröße basiert auf dem Inhalt (flex-basis: auto).

Die flex Shorthand ist der empfohlene Weg, diese drei Werte zu setzen. Sie ist nicht nur kürzer, sondern setzt auch clevere Standardwerte: flex: 1 wird zu flex: 1 1 0%, nicht zu flex: 1 1 auto. Das ist ein wichtiger Unterschied, den du verstehen solltest.

Syntax & Werte

flex-grow

Wert Beschreibung Beispiel
0 Item wächst nicht über seine natürliche Größe hinaus (Standard). flex-grow: 0
<number> Positive Zahl. Gibt den Anteil am verfügbaren Platz an, den das Item beansprucht. flex-grow: 1

flex-shrink

Wert Beschreibung Beispiel
1 Item schrumpft proportional, wenn der Platz knapp wird (Standard). flex-shrink: 1
0 Item schrumpft nicht und behält seine Basis-Größe. flex-shrink: 0
<number> Positive Zahl. Höhere Werte bedeuten stärkeres Schrumpfen. flex-shrink: 2

flex-basis

Wert Beschreibung Beispiel
auto Die Größe basiert auf width/height oder dem Inhalt des Items (Standard). flex-basis: auto
0 Keine Basisgröße. Der gesamte Platz wird über flex-grow verteilt. flex-basis: 0
<length> Feste Basisgröße (z.B. 200px, 20rem). flex-basis: 200px
<percentage> Prozentual zur Größe des Flex-Containers. flex-basis: 50%
content Basiert auf dem Inhalt des Items (wie auto ohne gesetzte width). flex-basis: content

flex (Shorthand)

Wert Beschreibung Beispiel
flex: 1 Entspricht flex: 1 1 0%. Item teilt verfügbaren Platz gleichmäßig. flex: 1
flex: auto Entspricht flex: 1 1 auto. Item wächst ab seiner natürlichen Größe. flex: auto
flex: none Entspricht flex: 0 0 auto. Item ist starr und ändert seine Größe nicht. flex: none
flex: <grow> <shrink> <basis> Volle Kontrolle über alle drei Werte. flex: 2 1 200px

order

Wert Beschreibung Beispiel
0 Standard-Reihenfolge (wie im HTML-Quellcode). order: 0
<integer> Items mit niedrigerem Wert erscheinen zuerst. Negative Werte sind erlaubt. order: -1

align-self

Wert Beschreibung Beispiel
auto Übernimmt den Wert von align-items des Containers (Standard). align-self: auto
flex-start Item wird am Anfang der Querachse ausgerichtet. align-self: flex-start
center Item wird in der Mitte der Querachse zentriert. align-self: center
flex-end Item wird am Ende der Querachse ausgerichtet. align-self: flex-end
stretch Item wird auf die volle Höhe der Querachse gestreckt. align-self: stretch
baseline Item wird an der Textgrundlinie ausgerichtet. align-self: baseline

Beispiele

flex-grow: Platz verteilen

flex-grow bestimmt, wie der verfügbare Platz auf die Items aufgeteilt wird. Die Zahlen sind Verhältnisse: Ein Item mit flex-grow: 2 bekommt doppelt so viel Extra-Platz wie eines mit flex-grow: 1.

flex-grow Proportionen
/* Kein Wachstum (Standard) */
.no-grow { flex-grow: 0; }

/* Gleichmäßig verteilt */
.equal { flex-grow: 1; }

/* B bekommt doppelt so viel Extra-Platz */
.a { flex-grow: 1; }
.b { flex-grow: 2; }
.c { flex-grow: 1; }

flex: 1 vs. flex: auto vs. flex: none

Die drei wichtigsten flex Patterns, die du kennen musst:

flex: 1 vs. auto vs. none
/* Gleiche Breite (Basisgröße 0) */
.equal { flex: 1; }      /* = flex: 1 1 0% */

/* Wachsen ab natürlicher Größe */
.grow { flex: auto; }    /* = flex: 1 1 auto */

/* Starr, keine Flex-Anpassung */
.fixed { flex: none; }   /* = flex: 0 0 auto */

order: Visuelle Reihenfolge ändern

order ändert die visuelle Reihenfolge der Items, ohne das HTML zu verändern. Achtung: Die Tab-Reihenfolge für Tastaturnutzer bleibt beim HTML-Quellcode. Verwende order daher nur für dekorative Zwecke.

order für visuelle Reihenfolge
/* Standard: HTML-Reihenfolge */
.item { order: 0; }

/* Nach vorne schieben */
.first { order: -1; }

/* Nach hinten schieben */
.last { order: 1; }

align-self: Einzelnes Item anders ausrichten

align-self überschreibt align-items für ein einzelnes Item. Damit kannst du ein bestimmtes Item anders positionieren als den Rest.

align-self überschreibt align-items
.container {
  display: flex;
  align-items: flex-start;
  height: 120px;
}

.center  { align-self: center; }
.end     { align-self: flex-end; }
.stretch { align-self: stretch; }

Barrierefreiheit

WICHTIG: Die order-Eigenschaft ist aus Barrierefreiheitssicht kritisch. Sie trennt die visuelle Reihenfolge von der DOM-Reihenfolge. Screenreader und Tastaturnavigation folgen der HTML-Struktur, nicht der visuellen Anordnung durch order. Das verletzt WCAG 1.3.2 (Meaningful Sequence).

Beispiel: Wenn du drei Buttons in der HTML-Reihenfolge A → B → C hast, aber mit order visuell zu C → A → B umsortierst, sehen Nutzer eine Reihenfolge, die Tastaturnutzer nicht erleben. Das ist verwirrend und problematisch.

Regel: Verwende order nur für rein dekorative Umordnungen, die keine inhaltliche Relevanz haben. Für semantisch wichtige Reihenfolgen (z.B. Formulare, Navigationen, Call-to-Actions) musst du die HTML-Struktur direkt anpassen.

Zusätzlich: flex-shrink kann dazu führen, dass Text zu klein wird, um lesbar zu bleiben. Setze min-width oder min-height, um sicherzustellen, dass Inhalte auf kleineren Bildschirmen nicht unleserlich werden.

Häufige Fehler

  • flex: 1 und flex: 1 1 auto verwechseln: flex: 1 setzt flex-basis auf 0%, nicht auf auto. Das bedeutet, alle Items starten bei 0 und teilen den gesamten Platz gleichmäßig. Bei flex: auto starten sie bei ihrer natürlichen Größe und teilen nur den restlichen Platz.
  • flex-basis und width gleichzeitig setzen: flex-basis hat Vorrang vor width (bzw. height bei Column-Layouts). Wenn beides gesetzt ist, wird width ignoriert. Verwende nur eines von beiden.
  • order für Zugänglichkeit missbrauchen: order ändert nur die visuelle Reihenfolge. Screenreader und Tab-Navigation folgen weiterhin dem HTML. Wenn die logische Reihenfolge anders sein soll, ändere das HTML.
  • Negative flex-grow Werte: flex-grow akzeptiert nur positive Zahlen und 0. Negative Werte sind ungültig und werden ignoriert.
  • flex-shrink: 0 vergessen bei festen Breiten: Wenn ein Item eine feste flex-basis oder width haben soll, die nicht schrumpfen darf, setze flex-shrink: 0. Ohne das schrumpft das Item trotzdem, wenn der Platz knapp wird.

Browser-Kompatibilität

Alle Flex-Item-Eigenschaften werden von allen modernen Browsern vollständig unterstützt. Die flex-Shorthand ist seit 2015 universell verfügbar.

ClientUnterstützungHinweise
ChromeKomplett
FirefoxKomplett
SafariKomplett
EdgeKomplett
OperaKomplett

Email-Kompatibilität

Flex-Item-Eigenschaften haben in HTML-Emails sehr eingeschränkten Support. Nur Apple Mail und Thunderbird unterstützen sie vollständig. Für E-Mail-Layouts solltest du auf Tabellen-basierte Layouts zurückgreifen.

ClientUnterstützungHinweise
Apple MailKomplett
GmailKeineFlexbox wird komplett ignoriert
OutlookKeineKein Flexbox-Support, Tabellen-Layouts verwenden
ThunderbirdKomplett
Yahoo MailKeineKein Flexbox-Support

Verwandte Eigenschaften

Bleib auf dem Laufenden

Erhalte neue Inhalte direkt in dein Postfach

Mit der Anmeldung akzeptierst du unsere Datenschutzerklärung. Du kannst dich jederzeit über den Link in den E-Mails wieder abmelden.

Was erwartet dich?

Neue Artikel & Videos

Wenn ich was Neues veröffentliche, erfährst du's hier zuerst.

Plattform & Kurs-Updates

Neue Kurse, Referenz-Updates und gelegentlich Sonderpreise zum Launch.

Einmal die Woche in deinem Postfach

Kurz, auf den Punkt, kein Spam.