Appearance
Kapitel 7: Ausrichtung auf der Querachse (align-items + align-content)
7.1 align-items: Ausrichtung einzelner Elemente auf der Querachse
Definition:align-items steuert, wie Flex-Elemente entlang der Querachse (Cross Axis) im Container ausgerichtet werden.
Wichtig:
align-itemswirkt nur auf der Querachse- Wenn
flex-direction: row→ vertikal - Wenn
flex-direction: column→ horizontal
Syntax:
css
.container {
display: flex;
align-items: <wert>;
}5 häufige Werte von align-items
1. stretch (Standardwert)
Verhalten:
- Elemente werden gestreckt, um die gesamte Höhe (bei
row) oder Breite (beicolumn) des Containers einzunehmen - Wenn Elemente eine feste Höhe/Breite haben, wird
stretchignoriert
CSS:
css
.container {
display: flex;
align-items: stretch; /* Standard */
height: 300px; /* Damit Stretch sichtbar ist */
border: 2px solid #333;
padding: 10px;
}
.item {
/* Keine feste Höhe! Sonst wirkt stretch nicht */
padding: 20px;
background-color: lightblue;
margin: 5px;
width: 100px;
}Ergebnis (bei flex-direction: row):
┌────────────────────────────────────┐
│ [1] │ ← Volle Höhe (300px)
│ [2] │
│ [3] │
└────────────────────────────────────┘2. flex-start
Verhalten:
- Elemente werden am Anfang der Querachse ausgerichtet
- Bei
row: Obenbündig - Bei
column: Linksbündig
CSS:
css
.container {
display: flex;
align-items: flex-start;
height: 300px;
border: 2px solid #333;
padding: 10px;
}
.item {
padding: 20px;
background-color: lightblue;
margin: 5px;
}Ergebnis (bei flex-direction: row):
┌────────────────────────────────────┐
│ [1] [2] [3] │ ← Obenbündig
│ │
│ │
└────────────────────────────────────┘3. flex-end
Verhalten:
- Elemente werden am Ende der Querachse ausgerichtet
- Bei
row: Untenbündig - Bei
column: Rechtsbündig
CSS:
css
.container {
display: flex;
align-items: flex-end;
height: 300px;
border: 2px solid #333;
padding: 10px;
}Ergebnis (bei flex-direction: row):
┌────────────────────────────────────┐
│ │
│ │
│ [1] [2] [3] │ ← Untenbündig
└────────────────────────────────────┘4. center (HÄUFIG VERWENDET!)
Verhalten:
- Elemente werden in der Mitte der Querachse zentriert
CSS:
css
.container {
display: flex;
align-items: center; /* Vertikal zentrieren */
height: 300px;
border: 2px solid #333;
padding: 10px;
}Ergebnis (bei flex-direction: row):
┌────────────────────────────────────┐
│ │
│ [1] [2] [3] │ ← Vertikal zentriert
│ │
└────────────────────────────────────┘Häufiger Anwendungsfall: Perfekte Zentrierung (horizontal + vertikal)
css
.container {
display: flex;
justify-content: center; /* Horizontal zentrieren */
align-items: center; /* Vertikal zentrieren */
height: 300px;
}Ergebnis:
┌────────────────────────────────────┐
│ │
│ [1] [2] [3] │ ← Perfekt zentriert!
│ │
└────────────────────────────────────┘5. baseline
Verhalten:
- Elemente werden an ihrer Text-Baseline ausgerichtet
- Nützlich, wenn Elemente unterschiedliche Schriftgrößen haben
CSS:
css
.container {
display: flex;
align-items: baseline;
border: 2px solid #333;
padding: 10px;
}
.item1 { font-size: 16px; }
.item2 { font-size: 24px; }
.item3 { font-size: 32px; }Ergebnis:
┌────────────────────────────────────┐
│ [1] [2] [3] │ ← An Baseline ausgerichtet
└────────────────────────────────────┘7.2 align-content: Ausrichtung mehrzeiliger Inhalte auf der Querachse
Definition:align-content steuert, wie Zeilen (bei Umbruch) entlang der Querachse im Container ausgerichtet werden.
Wichtig:
align-contentwirkt nur wennflex-wrap: wrapoderwrap-reversegesetzt ist- Bei einzeiligen Flex-Containern hat
align-contentkeine Wirkung
Syntax:
css
.container {
display: flex;
flex-wrap: wrap; /* MUSS gesetzt sein! */
align-content: <wert>;
height: 400px; /* Höhe für Demonstration */
}6 Werte von align-content
1. stretch (Standardwert)
Verhalten:
- Zeilen werden gestreckt, um den verfügbaren Platz auf der Querachse gleichmäßig zu füllen
CSS:
css
.container {
display: flex;
flex-wrap: wrap;
align-content: stretch; /* Standard */
height: 400px;
border: 2px solid #333;
padding: 10px;
}
.item {
width: 150px; /* Breite erzwingt Umbruch */
height: 80px;
background-color: lightblue;
margin: 5px;
}Ergebnis:
┌────────────────────────────────────┐
│ [1] [2] [3] │ ← Zeile 1 (gestreckt)
│────────────────────────────────────│
│ [4] [5] │ ← Zeile 2 (gestreckt)
│ │
└────────────────────────────────────┘2. flex-start
Verhalten:
- Zeilen werden am Anfang der Querachse ausgerichtet
- Bei
row: Obenbündig
CSS:
css
.container {
display: flex;
flex-wrap: wrap;
align-content: flex-start;
height: 400px;
border: 2px solid #333;
}Ergebnis:
┌────────────────────────────────────┐
│ [1] [2] [3] │ ← Zeile 1 (oben)
│ [4] [5] │ ← Zeile 2 (direkt darunter)
│ │
│ │
└────────────────────────────────────┘3. flex-end
Verhalten:
- Zeilen werden am Ende der Querachse ausgerichtet
- Bei
row: Untenbündig
CSS:
css
.container {
display: flex;
flex-wrap: wrap;
align-content: flex-end;
height: 400px;
border: 2px solid #333;
}Ergebnis:
┌────────────────────────────────────┐
│ │
│ │
│ [1] [2] [3] │ ← Zeile 1 (unten)
│ [4] [5] │ ← Zeile 2 (darüber)
└────────────────────────────────────┘4. center
Verhalten:
- Zeilen werden in der Mitte der Querachse zentriert
CSS:
css
.container {
display: flex;
flex-wrap: wrap;
align-content: center;
height: 400px;
border: 2px solid #333;
}Ergebnis:
┌────────────────────────────────────┐
│ │
│ [1] [2] [3] │ ← Zeilen zentriert
│ [4] [5] │
│ │
└────────────────────────────────────┘5. space-between
Verhalten:
- Erste Zeile am Anfang, letzte am Ende
- Gleicher Abstand zwischen den Zeilen
CSS:
css
.container {
display: flex;
flex-wrap: wrap;
align-content: space-between;
height: 400px;
border: 2px solid #333;
}Ergebnis:
┌────────────────────────────────────┐
│ [1] [2] [3] │ ← Erste Zeile oben
│ │
│ │
│ [4] [5] │ ← Letzte Zeile unten
└────────────────────────────────────┘6. space-around
Verhalten:
- Gleicher Abstand um jede Zeile
- Äußerer Rand ist halber Abstand im Vergleich zu den Abständen zwischen Zeilen
CSS:
css
.container {
display: flex;
flex-wrap: wrap;
align-content: space-around;
height: 400px;
border: 2px solid #333;
}Ergebnis:
┌────────────────────────────────────┐
│ │
│ [1] [2] [3] │ ← Abstand oben halb
│ │
│ [4] [5] │ ← Abstand unten halb
│ │
└────────────────────────────────────┘7.3 Unterschied zwischen align-items und align-content (Wichtig!)
| Eigenschaft | Wirkung | Wann wird es angewendet? |
|---|---|---|
| align-items | Ausrichtung einzelner Elemente auf der Querachse | Immer (ein- oder mehrzeilig) |
| align-content | Ausrichtung von Zeilen auf der Querachse | Nur bei mehrzeiligen Containern (flex-wrap: wrap) |
Praxisbeispiel: Unterschied verdeutlichen
Szenario 1: Einzeilig (align-content wirkt NICHT)
css
.container {
display: flex;
flex-wrap: nowrap; /* Ein Zeile! */
align-items: center; /* Wirkt! */
align-content: center; /* WIRKT NICHT! */
height: 300px;
}Szenario 2: Mehrzeilig (beide wirken)
css
.container {
display: flex;
flex-wrap: wrap; /* Mehrere Zeilen! */
align-items: center; /* Wirkt: Elemente innerhalb ihrer Zeile zentrieren */
align-content: center; /* Wirkt: Zeilen als Ganzes zentrieren */
height: 400px;
}Wichtigste Erkenntnis:
align-itemszentriert Elemente innerhalb ihrer Zeile.align-contentzentriert die Zeilen als Ganzes im Container.
7.4 Praxisbeispiel: Einzeilige/mehrzeilige Ausrichtung
Übung 1: Einzeiliger Container
HTML:
html
<div class="container single-line">
<div class="item">1</div>
<div class="item">2</div>
<div class="item">3</div>
</div>CSS:
css
.container {
display: flex;
flex-wrap: nowrap; /* Ein Zeile */
align-items: center; /* Elemente vertikal zentrieren */
/* align-content hat keine Wirkung! */
height: 300px;
border: 2px solid #333;
margin-bottom: 20px;
}
.item {
padding: 20px;
background-color: lightblue;
margin: 5px;
}Ergebnis:
- Elemente sind vertikal zentriert (
align-items: center) align-contenthat keine Wirkung (nur eine Zeile)
Übung 2: Mehrzeiliger Container
HTML:
html
<div class="container multi-line">
<div class="item">1</div>
<div class="item">2</div>
<div class="item">3</div>
<div class="item">4</div>
<div class="item">5</div>
</div>CSS:
css
.container {
display: flex;
flex-wrap: wrap; /* Mehrere Zeilen! */
align-items: center; /* Elemente innerhalb jeder Zeile zentrieren */
align-content: center; /* Zeilen als Ganzes zentrieren */
height: 400px;
border: 2px solid #333;
}
.item {
width: 150px; /* Erzwingt Umbruch */
padding: 20px;
background-color: lightblue;
margin: 5px;
}Ergebnis:
- Elemente sind innerhalb jeder Zeile vertikal zentriert (
align-items: center) - Zeilen als Ganzes sind im Container vertikal zentriert (
align-content: center)
Zusammenfassung
In diesem Kapitel hast du gelernt:
- ✅
align-items: Ausrichtung einzelner Elemente auf der Querachse - ✅ 5 häufige Werte:
stretch,flex-start,flex-end,center,baseline - ✅
align-content: Ausrichtung von Zeilen auf der Querachse (nur bei Umbruch!) - ✅ 6 Werte:
stretch,flex-start,flex-end,center,space-between,space-around - ✅ Den wichtigen Unterschied zwischen
align-itemsundalign-content
Nächstes Kapitel: In Kapitel 8 lernen wir Flex-Element-Eigenschaften kennen: order und align-self.
Übungsaufgaben
Aufgabe 7.1
Erstelle einen Container mit 3 Elementen. Verwende align-items: center und justify-content: center, um die Elemente perfekt zu zentrieren.
Aufgabe 7.2
Erstelle einen Container mit 6 Elementen und flex-wrap: wrap. Experimentiere mit verschiedenen align-content Werten und beobachte den Unterschied.
Aufgabe 7.3
Erstelle einen Container mit 2 Zeilen. Setze align-items: flex-start und align-content: space-between. Beobachte, wie beide Eigenschaften zusammenwirken.
