CSS align-items Eigenschaft
Die align-items-Eigenschaft legt die Ausrichtung von Elementen im Container fest. Lernen Sie die Werte kennen und probieren Sie Beispiele aus.
Die CSS-Eigenschaft align-items legt die Standardausrichtung für Flex-Elemente (und Grid-Elemente) entlang der Querachse ihres Containers fest. Sie ist das Gegenstück zu justify-content, das Elemente entlang der Hauptachse ausrichtet.
Diese Seite erklärt, was die Querachse ist, geht jeden Wert mit einem ausführbaren Beispiel durch und zeigt, wie align-items mit align-self und align-content zusammenhängt.
Die Querachse verstehen
In einem Flex-Container ist die Hauptachse die Richtung, in der die Elemente fließen — festgelegt durch flex-direction. Die Querachse verläuft senkrecht dazu:
flex-direction: row(der Standard) → Hauptachse ist horizontal, also ist die Querachse vertikal, undalign-itemssteuert die vertikale Ausrichtung.flex-direction: column→ Hauptachse ist vertikal, also ist die Querachse horizontal, undalign-itemssteuert die horizontale Ausrichtung.
Da die Achse von flex-direction abhängt, werden Bezeichnungen wie flex-start und flex-end anstelle von top/bottom verwendet — sie bedeuten immer „Beginn der Querachse" bzw. „Ende der Querachse", unabhängig von der Richtung.
Hinweis:
align-itemsgilt nur für Flex- und Grid-Container — bei einem Element mit dem Standard-display: blockhat es keine Wirkung. Setzen Sie zuerstdisplay: flex(oderdisplay: grid) auf dem übergeordneten Element.
Wann es eingesetzt wird
Der klassische Anwendungsfall ist die vertikale Zentrierung: display: flex; align-items: center zentriert Kindelemente vertikal ohne Margins oder absolute Positionierung. In Kombination mit justify-content: center wird ein Element auf beiden Achsen zentriert — das altbekannte „ein Div zentrieren"-Problem, gelöst in zwei Zeilen.
align-items vs. align-self vs. align-content
align-itemswird am Container gesetzt und steuert die standardmäßige Querachsen-Ausrichtung aller Elemente.align-selfwird an einem einzelnen Element gesetzt, um dasalign-itemsdes Containers nur für dieses Element zu überschreiben.align-contentrichtet die Zeilen als Gruppe aus, wenn der Flex-Container mehrere Zeilen hat (flex-wrap: wrap). Bei einer einzelnen Zeile hat es keine Wirkung — dann kommtalign-itemszum Einsatz.
Diese Eigenschaft gehört zu den CSS3-Eigenschaften.
Die Eigenschaft align-items akzeptiert folgende Werte:
stretchflex-startcenterflex-endbaseline
| Standardwert | stretch |
|---|---|
| Gilt für | Flex- und Grid-Container. |
| Vererbbar | Nein. |
| Animierbar | Nein. |
| Version | CSS3 |
| DOM-Syntax | object.style.alignItems = "center"; |
Syntax
align-items: stretch | center | flex-start | flex-end | baseline | initial | inherit;Beispiele
stretch (Standard)
Mit stretch wachsen Elemente, um die gesamte Querachsen-Größe des Containers auszufüllen (hier die volle Höhe), solange sie keine eigene feste Höhe haben.
<!DOCTYPE html>
<html>
<head>
<title>Title of the document</title>
<style>
#example {
width: 220px;
height: 300px;
padding: 0;
border: 1px solid #000;
display: flex;
align-items: stretch;
}
#example li {
flex: 1;
list-style: none;
}
</style>
</head>
<body>
<h2>Align-items: stretch; example</h2>
<ul id="example">
<li style="background-color:#8ebf42;">Green</li>
<li style="background-color:#1c87c9;">Blue</li>
<li style="background-color:#ccc;">Gray</li>
</ul>
</body>
</html>
center
Die Elemente werden an der Mitte der Querachse positioniert (hier vertikal zentriert).
Beispiel der CSS align-items-Eigenschaft mit dem Wert center
<!DOCTYPE html>
<html>
<head>
<title>The title of the document</title>
<style>
#example {
width: 220px;
height: 300px;
padding: 0;
border: 1px solid #000;
display: flex;
align-items: center;
}
#example li {
flex: 1;
list-style: none;
}
</style>
</head>
<body>
<h2>Align-items: center; example</h2>
<ul id="example">
<li style="background-color:#8ebf42;">Green</li>
<li style="background-color:#1c87c9;">Blue</li>
<li style="background-color:#ccc;">Gray</li>
</ul>
</body>
</html>flex-start
Die Elemente werden am Beginn der Querachse platziert (oben, beim Standard-flex-direction: row).
Beispiel der CSS align-items-Eigenschaft mit dem Wert flex-start
<!DOCTYPE html>
<html>
<head>
<title>The title of the document</title>
<style>
#example {
width: 220px;
height: 300px;
padding: 0;
border: 1px solid #000;
display: flex;
align-items: flex-start;
}
#example li {
flex: 1;
list-style: none;
}
</style>
</head>
<body>
<h2>Align-items: flex-start; example</h2>
<ul id="example">
<li style="background-color:#8ebf42;">Green</li>
<li style="background-color:#1c87c9;">Blue</li>
<li style="background-color:#ccc;">Gray</li>
</ul>
</body>
</html>flex-end
Die Elemente werden am Ende der Querachse platziert (unten, beim Standard-flex-direction: row).
Beispiel der CSS align-items-Eigenschaft mit dem Wert flex-end
<!DOCTYPE html>
<html>
<head>
<title>The title of the document</title>
<style>
#example {
width: 220px;
height: 300px;
padding: 0;
border: 1px solid #000;
display: flex;
align-items: flex-end;
}
#example li {
flex: 1;
list-style: none;
}
</style>
</head>
<body>
<h2>Align-items: flex-end; example</h2>
<ul id="example">
<li style="background-color:#8ebf42;">Green</li>
<li style="background-color:#1c87c9;">Blue</li>
<li style="background-color:#ccc;">Gray</li>
</ul>
</body>
</html>baseline
Die Elemente werden so ausgerichtet, dass ihre Text-Baselines auf einer Linie liegen. Dies ist nützlich, wenn Elemente Text mit unterschiedlichen Schriftgrößen enthalten und die Buchstaben auf einer gemeinsamen Linie stehen sollen.
Beispiel der CSS align-items-Eigenschaft mit dem Wert baseline
<!DOCTYPE html>
<html>
<head>
<title>The title of the document</title>
<style>
#example {
width: 220px;
height: 300px;
padding: 0;
border: 1px solid #000;
display: flex;
align-items: baseline;
}
#example li {
flex: 1;
list-style: none;
}
</style>
</head>
<body>
<h2>Align-items: baseline; example</h2>
<ul id="example">
<li style="background-color:#8ebf42;">Green</li>
<li style="background-color:#1c87c9;">Blue</li>
<li style="background-color:#ccc;">Gray</li>
</ul>
</body>
</html>
Werte
| Wert | Beschreibung | Ausprobieren |
|---|---|---|
| stretch | Lässt Elemente so ausdehnen, dass sie den Container füllen. Dies ist der Standardwert dieser Eigenschaft. | Ausprobieren » |
| center | Elemente werden in der Mitte des Containers platziert. | Ausprobieren » |
| flex-start | Elemente werden am Anfang des Containers platziert. | Ausprobieren » |
| flex-end | Elemente werden am Ende des Containers platziert. | Ausprobieren » |
| baseline | Elemente werden an der Baseline des Containers positioniert. | Ausprobieren » |
| initial | Setzt die Eigenschaft auf ihren Standardwert zurück. | Ausprobieren » |
| inherit | Erbt die Eigenschaft vom übergeordneten Element. |
Häufige Fallstricke
stretchhat keine Wirkung, wenn Elemente eine feste Querachsen-Größe haben. Wenn ein Element bereits eineheightbesitzt (in einem Row-Container), kannstretches nicht vergrößern. Entfernen Sie die feste Größe, damit es sich ausdehnen kann.- Ohne Flex/Grid-Container passiert nichts.
align-itemswird ignoriert, solange das übergeordnete Element nichtdisplay: flexoderdisplay: gridhat. - Die Achse kehrt sich mit
flex-direction: columnum. Dann steuertalign-itemsdie horizontale Ausrichtung, nicht die vertikale. - Um nur ein einzelnes Element auszurichten, verwenden Sie
align-selfan diesem Element, anstatt den gesamten Container zu ändern.
Verwandte Eigenschaften
- justify-content — Ausrichtung entlang der Hauptachse.
- align-self —
align-itemsfür ein einzelnes Element überschreiben. - align-content — umgebrochene Zeilen als Gruppe ausrichten.
- flex-direction — festlegen, welche Achse die Hauptachse ist.