HTMLCSSJavaScriptIndexRoadmapImpressum

Eigenschaften des Flexbox Containers

Display Flex

Mit der CSS-Eigenschaft display legst du fest, wie ein Element dargestellt wird. Setzt du den Wert auf flex oder inline-flex, wird das Element zum Flex-Container – ab dann gelten alle Flexbox-Regeln für seine direkten Kindelemente.

CSS – Flex-Container aktivieren

1.container {
2    display: flex; /* or inline-flex */
3}

Der Unterschied zwischen flex und inline-flex: Mit display: flex verhält sich der Container wie ein Block-Element und nimmt die volle verfügbare Breite ein. Mit display: inline-flex verhält er sich wie ein Inline-Element – er ist nur so breit wie sein Inhalt und kann neben anderen Elementen stehen. In beiden Fällen funktionieren alle Flexbox-Eigenschaften gleich.

Container und Items

Jedes Flexbox-Layout besteht aus zwei Teilen: dem Flex-Container (dem Eltern-Element) und den Flex-Items (den direkten Kindelementen). Nur die direkten Kinder eines Flex-Containers werden zu Flex-Items – verschachtelte Enkel-Elemente nicht.

Der Flex-Container

Der Container ist das Eltern-Element, auf dem du display: flex setzt. An ihm stellst du ein, wie sich die Items anordnen, verteilen und ausrichten – zum Beispiel mit flex-direction, justify-content oder align-items.

Flex-Container – das äußere Eltern-Element in einem Flexbox-Layout

Die Flex-Items

Flex-Items sind die direkten Kindelemente im Container. Sie werden automatisch in die Flex-Richtung gelegt und lassen sich über Item-Eigenschaften wie flex-grow, flex-shrink oder align-self einzeln steuern.

Flex-Items – die direkten Kindelemente innerhalb des Flex-Containers

HTML – Container mit drei Flex-Items

1<div class="container">
2    <div>Item 1</div>
3    <div>Item 2</div>
4    <div>Item 3</div>
5</div>

flex-direction

Mit flex-direction legst du fest, in welche Richtung die Flex-Items angeordnet werden. Standardmäßig stehen sie nebeneinander in einer Zeile (row). Die Pfeile in den Abbildungen zeigen die Hauptachse – also die Richtung, in der die Items nacheinander platziert werden.

Es gibt vier mögliche Werte:

  • row – horizontal von links nach rechts (Standard)
  • row-reverse – horizontal von rechts nach links
  • column – vertikal von oben nach unten
  • column-reverse – vertikal von unten nach oben

row (Standard)

Bei flex-direction: row liegen die Items in einer Zeile. Der Punkt markiert den Start, der Pfeil zeigt das Ende der Hauptachse – von links nach rechts.

flex-direction: row – Items nebeneinander von links nach rechts

CSS – flex-direction: row

1.container {
2    display: flex;
3    flex-direction: row;
4}

row-reverse

Mit row-reverse bleiben die Items in einer Zeile, aber die Reihenfolge wird umgekehrt: Der Start liegt rechts, die Items werden von rechts nach links angeordnet.

flex-direction: row-reverse – Items nebeneinander von rechts nach links

CSS – flex-direction: row-reverse

1.container {
2    display: flex;
3    flex-direction: row-reverse;
4}

column

Bei flex-direction: column stehen die Items untereinander in einer Spalte. Die Hauptachse verläuft von oben nach unten.

flex-direction: column – Items untereinander von oben nach unten

CSS – flex-direction: column

1.container {
2    display: flex;
3    flex-direction: column;
4}

column-reverse

Mit column-reverse stehen die Items ebenfalls untereinander, aber der Start liegt unten. Die Items werden von unten nach oben gestapelt.

flex-direction: column-reverse – Items untereinander von unten nach oben

CSS – flex-direction: column-reverse

1.container {
2    display: flex;
3    flex-direction: column-reverse;
4}

Die HTML-Reihenfolge der Elemente bleibt bei allen Werten gleich – nur die visuelle Anordnung ändert sich.

flex-wrap

Standardmäßig bleiben alle Flex-Items in einer Zeile – auch wenn der Container zu schmal wird. Mit flex-wrap steuerst du, ob Items in eine neue Zeile (oder Spalte) umbrechen dürfen.

Es gibt drei Werte:

  • nowrap – alle Items in einer Zeile (Standard)
  • wrap – Items brechen in die nächste Zeile um
  • wrap-reverse – Items brechen um, neue Zeilen starten oben

Bei flex-wrap: wrap rutschen Items in die nächste Zeile, sobald horizontal kein Platz mehr ist. Die gestrichelte Linie in der Abbildung zeigt diesen Umbruch:

flex-wrap: wrap – Flex-Items brechen in eine neue Zeile um

CSS – flex-wrap: wrap

1.container {
2    display: flex;
3    flex-wrap: wrap;
4}

flex-wrap: wrap ist besonders nützlich für responsive Layouts – zum Beispiel bei Karten, Tags oder Button-Gruppen, die auf schmalen Bildschirmen untereinander stehen sollen.

justify-content

Mit justify-content steuerst du, wie Flex-Items entlang der Hauptachse verteilt werden – also in Richtung von flex-direction. Bei row ist das horizontal, bei column vertikal.

Die Grafik zeigt alle sechs Werte im Überblick:

justify-content – flex-start, flex-end, center, space-between, space-around, space-evenly
  • flex-start – Items am Anfang der Hauptachse (Standard, links bei row)
  • flex-end – Items am Ende der Hauptachse (rechts bei row)
  • center – Items in der Mitte, gleicher Abstand links und rechts
  • space-between – erster Item am Start, letzter am Ende, Abstand gleichmäßig dazwischen
  • space-around – gleicher Abstand um jedes Item (an den Rändern halb so viel)
  • space-evenly – Abstand überall gleich – auch zwischen Items und Rändern

CSS – justify-content: center

1.container {
2    display: flex;
3    justify-content: center;
4}

justify-content eignet sich besonders für Navigationen, Button-Leisten oder Footer, bei denen du Items links, rechts, zentriert oder gleichmäßig verteilt ausrichten willst.

align-items

Mit align-items steuerst du, wie Flex-Items entlang der Querachse ausgerichtet werden – also senkrecht zur Hauptachse. Bei row ist das vertikal, bei column horizontal.

Während justify-content die Verteilung in Laufrichtung regelt, bestimmt align-items, ob Items oben, unten, in der Mitte oder auf gleicher Textlinie stehen.

Die Grafik zeigt alle fünf Werte:

align-items – flex-start, flex-end, center, stretch, baseline
  • flex-start – Items am Anfang der Querachse (oben bei row)
  • flex-end – Items am Ende der Querachse (unten bei row)
  • center – Items in der Mitte der Querachse
  • stretch – Items auf volle Höhe des Containers strecken (Standard)
  • baseline – Items an der Text-Baseline ausrichten (sinnvoll bei Text)

CSS – align-items: center

1.container {
2    display: flex;
3    align-items: center;
4}

Die Kombination aus justify-content und align-items eignet sich besonders zum Zentrieren von Inhalten – zum Beispiel justify-content: center und align-items: center für die perfekte Mitte eines Containers.

align-content

Mit align-content steuerst du, wie mehrere Zeilen von Flex-Items entlang der Querachse verteilt werden. Die Eigenschaft wirkt nur, wenn Items umbrechen – also wenn du flex-wrap: wrap setzt und mindestens zwei Zeilen entstehen.

Im Unterschied zu align-items richtest du damit nicht einzelne Items aus, sondern ganze Zeilen als Gruppe.

Die Grafik zeigt die wichtigsten Werte:

align-content – flex-start, flex-end, center, stretch, space-between, space-around
  • flex-start – Zeilen am Anfang der Querachse (oben bei row)
  • flex-end – Zeilen am Ende der Querachse (unten bei row)
  • center – Zeilen in der Mitte des Containers
  • stretch – Zeilen strecken sich über die volle Höhe
  • space-between – erste Zeile oben, letzte unten, Abstand dazwischen
  • space-around – gleicher Abstand um jede Zeile

CSS – align-content: center

1.container {
2    display: flex;
3    flex-wrap: wrap;
4    align-content: center;
5}

align-content brauchst du vor allem bei mehrzeiligen Flex-Layouts – zum Beispiel bei Karten-Rastern oder Tag-Listen, die auf mehrere Zeilen umbrechen.

gap, row-gap, column-gap

Mit gap legst du den Abstand zwischen Flex-Items fest – ohne extra margin an jedem Element. Der Abstand entsteht nur zwischen den Items, nicht am äußeren Rand des Containers.

Es gibt drei Eigenschaften:

  • gap – Kurzform für row-gap und column-gap
  • row-gap – Abstand zwischen den Zeilen
  • column-gap – Abstand zwischen den Spalten

Die Grafik zeigt drei Varianten:

gap – ein Wert für gleichen Abstand, zwei Werte für row-gap und column-gap
  • gap: 10px – gleicher Abstand horizontal und vertikal
  • gap: 30px – größerer, aber weiterhin gleicher Abstand in beide Richtungen
  • gap: 10px 30px – erster Wert = row-gap, zweiter Wert = column-gap

CSS – gap: 10px

1.container {
2    display: flex;
3    flex-wrap: wrap;
4    gap: 10px;
5}

CSS – gap: 10px 30px

1.container {
2    display: flex;
3    flex-wrap: wrap;
4    gap: 10px 30px;
5}

gap funktioniert in Flexbox und CSS Grid – und ist oft die einfachste Lösung für gleichmäßige Abstände bei Karten, Buttons oder Tag-Listen.

Im nächsten Kapitel lernst du: Eigenschaften der Flex-Items