align-items
Baseline
Widely available
*
This feature is well established and works across many devices and browser versions. It’s been available across browsers since September 2015.
* Some parts of this feature may have varying levels of support.
Die CSS align-items-Eigenschaft legt den Wert von align-self für alle direkten Kinder als Gruppe fest. In Flexbox steuert sie die Ausrichtung der Elemente auf der Querachse. Im Grid-Layout kontrolliert sie die Ausrichtung der Elemente auf der Blockachse innerhalb ihrer Grid-Bereiche.
Das interaktive Beispiel unten verwendet Grid-Layout, um einige der Werte dieser Eigenschaft zu demonstrieren.
Probieren Sie es aus
align-items: stretch;
align-items: center;
align-items: start;
align-items: end;
<section class="default-example" id="default-example">
<div class="example-container">
<div class="transition-all" id="example-element">
<div>One</div>
<div>Two</div>
<div>Three</div>
</div>
</div>
</section>
#example-element {
border: 1px solid #c5c5c5;
display: grid;
width: 200px;
grid-template-columns: 1fr 1fr;
grid-auto-rows: 80px;
grid-gap: 10px;
}
#example-element > div {
background-color: rgb(0 0 255 / 0.2);
border: 3px solid blue;
}
Syntax
/* Basic keywords */
align-items: normal;
align-items: stretch;
/* Positional alignment */
/* align-items does not take left and right values */
align-items: center;
align-items: start;
align-items: end;
align-items: flex-start;
align-items: flex-end;
align-items: self-start;
align-items: self-end;
align-items: anchor-center;
/* Baseline alignment */
align-items: baseline;
align-items: first baseline;
align-items: last baseline;
/* Overflow alignment (for positional alignment only) */
align-items: safe center;
align-items: unsafe center;
/* Global values */
align-items: inherit;
align-items: initial;
align-items: revert;
align-items: revert-layer;
align-items: unset;
Werte
normal-
Die Wirkung dieses Schlüsselworts hängt vom Layout-Modus ab, in dem wir uns befinden:
- In absolut positionierten Layouts verhält sich das Schlüsselwort wie
startbei ersetzten absolut positionierten Boxen und wiestretchbei allen anderen absolut positionierten Boxen. - In der statischen Position von absolut positionierten Layouts verhält sich das Schlüsselwort wie
stretch. - Für Flex-Elemente verhält sich das Schlüsselwort wie
stretch. - Für Grid-Elemente führt dieses Schlüsselwort zu einem Verhalten, das dem von
stretchähnlich ist, außer bei Boxen mit einem Seitenverhältnis oder einer intrinsischen Größe, wo es sich wiestartverhält. - Die Eigenschaft gilt nicht für Block-Level-Boxen und Tabellenzellen.
- In absolut positionierten Layouts verhält sich das Schlüsselwort wie
center-
Die Randboxen der Flex-Elemente werden auf der Querachse innerhalb der Zeile zentriert. Wenn die Quergröße eines Elements größer als der Flex-Container ist, läuft es in beide Richtungen gleichmäßig über.
start-
Die Elemente werden bündig zueinander in Richtung der Startkante des Ausrichtungscontainers auf der entsprechenden Achse gepackt.
end-
Die Elemente werden bündig zueinander in Richtung der Endkante des Ausrichtungscontainers auf der entsprechenden Achse gepackt.
self-start-
Die Elemente werden bündig an der Kante der Startseite des Ausrichtungscontainers des Elements auf der entsprechenden Achse gepackt.
self-end-
Die Elemente werden bündig an der Kante der Endseite des Ausrichtungscontainers des Elements auf der entsprechenden Achse gepackt.
baseline,first baseline,last baseline-
Alle Flex-Elemente sind so ausgerichtet, dass ihre Flex-Container-Baselines übereinstimmen. Das Element mit dem größten Abstand zwischen seiner Quer-Start-Randkante und seiner Baseline wird mit der Quer-Start-Kante der Zeile bündig ausgerichtet.
stretch-
Wenn die Quergröße des Elements
autoist, wird die verwendete Größe auf die notwendige Länge festgelegt, um den Container so gut wie möglich auszufüllen, unter Berücksichtigung der Breiten- und Höhenbeschränkungen des Elements. Wenn das Element nicht automatisch dimensioniert ist, fällt dieser Wert aufflex-startzurück, und aufself-startoderself-end, wenn dasalign-contentdes Containersfirst baseline(oderbaseline) oderlast baselineist. anchor-center-
Bei ankerpositionierten Elementen werden die Elemente zur Mitte des zugehörigen Ankerelements in Blockrichtung ausgerichtet. Siehe Zentrieren auf dem Anker mit
anchor-center. safe-
Wird zusammen mit einem Ausrichtungs-Schlüsselwort verwendet. Wenn das gewählte Schlüsselwort bedeutet, dass das Element den Ausrichtungscontainer überläuft und dadurch Datenverlust verursacht, wird das Element stattdessen so ausgerichtet, als ob der Ausrichtungsmodus
startwäre. unsafe-
Wird zusammen mit einem Ausrichtungs-Schlüsselwort verwendet. Unabhängig von der relativen Größe des Elements und des Ausrichtungscontainers und ob ein Überlauf, der Datenverlust verursacht, auftreten könnte, wird der gegebene Ausrichtungswert eingehalten.
Es gibt auch zwei Werte, die für Flexbox definiert wurden, da sie auf Konzepten der Flexmodellachsen basieren und auch in Grid-Layouts funktionieren:
flex-start-
Wird nur im Flex-Layout verwendet, richtet die Flex-Elemente bündig an der Haupt-Start- oder Quer-Start-Seite des Flex-Containers aus. Wenn außerhalb eines Flex-Formatierungskontexts verwendet, verhält sich dieser Wert wie
start. flex-end-
Wird nur im Flex-Layout verwendet, richtet die Flex-Elemente bündig an der Haupt-End- oder Quer-End-Seite des Flex-Containers aus. Wenn außerhalb eines Flex-Formatierungskontexts verwendet, verhält sich dieser Wert wie
end.
Formale Definition
| Anfangswert | normal |
|---|---|
| Anwendbar auf | alle Elemente |
| Vererbt | Nein |
| Berechneter Wert | wie angegeben |
| Animationstyp | diskret |
Formale Syntax
align-items =
normal |
stretch |
<baseline-position> |
<overflow-position>? <self-position> |
anchor-center
<baseline-position> =
[ first | last ]? &&
baseline
<overflow-position> =
unsafe |
safe
<self-position> =
center |
start |
end |
self-start |
self-end |
flex-start |
flex-end
Beispiele
In diesem Beispiel haben wir einen Container mit sechs Kindern. Ein <select> Dropdown-Menü ermöglicht das Umschalten des display des Containers zwischen grid und flex. Ein zweites Menü ermöglicht die Änderung des Wertes der align-items-Eigenschaft des Containers.
CSS
Wir gestalten den Container und die Elemente in einer Weise, die sicherstellt, dass wir zwei Zeilen oder Reihen von Elementen haben. Wir haben .flex und .grid Klassen definiert, die mit JavaScript auf den Container angewendet werden. Sie legen den display-Wert des Containers fest und ändern seine Hintergrund- und Rahmenfarben, was einen zusätzlichen Indikator dafür bietet, dass das Layout geändert wurde. Die sechs Flex-Elemente haben jeweils eine andere Hintergrundfarbe, wobei das 4. Element zwei Zeilen lang ist und das 6. Element eine vergrößerte Schriftart hat.
.flex,
.grid {
height: 200px;
width: 500px;
align-items: initial; /* Change the value in the live sample */
border: solid 5px transparent;
gap: 3px;
}
.flex {
display: flex;
flex-wrap: wrap;
background-color: #8c8c9f;
border-color: magenta;
}
.grid {
display: grid;
grid-template-columns: repeat(auto-fill, 100px);
background-color: #9f8c8c;
border-color: slateblue;
}
#item1 {
background-color: #8cffa0;
min-height: 30px;
}
#item2 {
background-color: #a0c8ff;
min-height: 50px;
}
#item3 {
background-color: #ffa08c;
min-height: 40px;
}
#item4 {
background-color: #ffff8c;
min-height: 60px;
}
#item5 {
background-color: #ff8cff;
min-height: 70px;
}
#item6 {
background-color: #8cffff;
min-height: 50px;
font-size: 30px;
}
HTML
Wir fügen einen Container-<div> mit sechs verschachtelten <div>-Kindern ein. Der HTML-Code für das Formular und das JavaScript, das die Klasse des Containers ändert, wurde der Kürze halber ausgeblendet.
<div id="container" class="flex">
<div id="item1">1</div>
<div id="item2">2</div>
<div id="item3">3</div>
<div id="item4">4<br />line 2</div>
<div id="item5">5</div>
<div id="item6">6</div>
</div>
Ergebnis
Spezifikationen
| Specification |
|---|
| CSS Box Alignment Module Level 3> # align-items-property> |
| CSS Flexible Box Layout Module Level 1> # align-items-property> |