HTMLCSSJavaScriptIndexRoadmapImpressum

Eigenschaften Flexbox Items

Am Flex-Item stellst du ein, wie sich einzelne Kindelemente im Container verhalten – unabhängig von den Container-Eigenschaften. Die erste Eigenschaft dafür ist order.

order

Mit order legst du fest, in welcher Reihenfolge Flex-Items angezeigt werden. Standardmäßig ist der Wert 0. Items mit kleineren Werten erscheinen zuerst, Items mit größeren Werten danach.

Wichtig: Die HTML-Reihenfolge im Code bleibt gleich – nur die visuelle Anordnung ändert sich. Das ist hilfreich für Layouts, bei denen du die Reihenfolge per CSS anpassen willst, ohne das HTML umzubauen.

order – Flex-Items werden nach ihrem order-Wert sortiert

Die Grafik zeigt drei Beispiele:

  • Gleiche Werte – Items mit demselben order-Wert behalten ihre ursprüngliche HTML-Reihenfolge (z. B. drei Items mit order: 1)
  • Negative Werte – ein Item mit order: -1 rutscht nach vorne, noch vor alle Items mit 0 oder positiven Werten
  • Vertikale Layoutsorder funktioniert auch bei flex-direction: column

HTML – drei Flex-Items

1<div class="container">
2    <div class="item a">A</div>
3    <div class="item b">B</div>
4    <div class="item c">C</div>
5</div>

CSS – order ändert die Anzeigereihenfolge

1.item.a { order: 2; }
2.item.b { order: -1; }
3.item.c { order: 1; }

In diesem Beispiel erscheint B zuerst (order: -1), dann C (order: 1) und zuletzt A (order: 2) – obwohl im HTML A, B, C stehen.

flex-grow

Mit flex-grow legst du fest, ob und wie stark ein Flex-Item den freien Platz im Container einnimmt. Standardmäßig ist der Wert 0 – Items bleiben dann so breit wie ihr Inhalt und wachsen nicht.

Ein Wert größer als 0 bedeutet: Das Item darf wachsen. Der freie Platz wird proportional zu den flex-grow-Werten aller Items verteilt.

flex-grow – gleiche und unterschiedliche Wachstumsfaktoren
  • Oben: alle Items mit flex-grow: 1 – der freie Platz wird gleichmäßig verteilt (Verhältnis 1:1:1)
  • Unten: Werte 1, 2, 1 – das mittlere Item bekommt doppelt so viel Platz wie die äußeren (Verhältnis 1:2:1)

CSS – flex-grow verteilt freien Platz

1.container {
2    display: flex;
3}
4
5.item { flex-grow: 1; }
6
7.item.middle { flex-grow: 2; }

flex-grow eignet sich besonders, wenn Items unterschiedlich breit werden sollen – zum Beispiel eine Sidebar mit fester Breite und ein Hauptinhalt, der den restlichen Platz einnimmt.

flex-shrink

Mit flex-shrink steuerst du, ob ein Item schrumpfen darf, wenn im Container nicht genug Platz ist. Standardmäßig ist der Wert 1 – Items werden dann kleiner, damit alles hineinpasst.

  • 1 (Standard) – Item darf schrumpfen
  • 0 – Item behält seine Größe und schrumpft nicht
  • 2, 3, … – Item schrumpft stärker als Items mit niedrigeren Werten

CSS – flex-shrink: 0 verhindert Schrumpfen

1.container {
2    display: flex;
3    width: 300px;
4}
5
6.item { flex-shrink: 1; }
7
8.item.fixed {
9    flex-shrink: 0;
10    min-width: 150px;
11}

Mit flex-shrink: 0 bleibt ein Item bei wenig Platz in voller Größe – nützlich für Logos, Buttons oder Sidebars, die nicht zusammengedrückt werden sollen.

flex-basis

Mit flex-basis legst du die Ausgangsgröße eines Items fest, bevor freier Platz verteilt wird. Bei flex-direction: row entspricht das der Breite, bei column der Höhe.

  • auto (Standard) – Größe richtet sich nach Inhalt oder width / height
  • 200px, 50% usw. – feste oder relative Startgröße
  • 0 – Item startet ohne eigene Basisgröße (häufig mit flex: 1)

CSS – flex-basis setzt die Startgröße

1.item {
2    flex-basis: 200px;
3}
4
5.item.half {
6    flex-basis: 50%;
7}

flex-basis bestimmt also, wie groß ein Item zuerst ist – danach greifen flex-grow und flex-shrink.

flex

flex ist die Kurzform für flex-grow, flex-shrink und flex-basis in einer Zeile:

flex: grow shrink basis

  • flex: 1 – entspricht 1 1 0%: Item wächst und schrumpft, Startgröße 0
  • flex: auto – entspricht 1 1 auto: wächst und schrumpft, Startgröße nach Inhalt
  • flex: none – entspricht 0 0 auto: weder wachsen noch schrumpfen
  • flex: 0 0 250px – feste Breite, kein Wachsen, kein Schrumpfen

CSS – flex als Kurzform

1.item {
2    flex: 1;
3}
4
5.sidebar {
6    flex: 0 0 250px;
7}
8
9.content {
10    flex: 1 1 auto;
11}

In der Praxis nutzt du flex am häufigsten – zum Beispiel flex: 1 für gleich breite Spalten oder flex: 0 0 250px für eine feste Sidebar.

align-self

Mit align-self richtest du ein einzelnes Flex-Item entlang der Querachse aus – und überschreibst damit die Container-Eigenschaft align-items nur für dieses Item.

In der Grafik haben alle Items oben durch align-items: flex-start dieselbe Ausrichtung – nur das dritte Item liegt unten, weil es align-self: flex-end hat:

align-self – ein einzelnes Item mit flex-end ausrichten

Mögliche Werte (wie bei align-items):

  • auto – übernimmt den Wert von align-items (Standard)
  • flex-start – am Anfang der Querachse
  • flex-end – am Ende der Querachse
  • center – in der Mitte
  • stretch – auf volle Höhe strecken
  • baseline – an der Text-Baseline ausrichten

CSS – align-self für ein einzelnes Item

1.container {
2    display: flex;
3    align-items: flex-start;
4}
5
6.item.special {
7    align-self: flex-end;
8}

align-self ist praktisch, wenn fast alle Items gleich ausgerichtet sind, aber ein einzelnes Item anders stehen soll – zum Beispiel ein Button unten in einer Karte.

Im nächsten Kapitel lernst du: Responsive