Box-Ausrichtung in Flexbox
Das Box-Ausrichtungsmodul beschreibt, wie Ausrichtung in verschiedenen Layout-Methoden funktioniert. In diesem Leitfaden untersuchen wir, wie die Box-Ausrichtung im Kontext von Flexbox funktioniert. Da dieser Leitfaden darauf abzielt, Dinge zu erklären, die spezifisch für Flexbox und Box-Ausrichtung sind, sollte er in Verbindung mit dem Box-Ausrichtungsüberblick gelesen werden, der die gemeinsamen Merkmale der Box-Ausrichtung über Layout-Methoden hinweg beschreibt.
Einfaches Beispiel
In diesem Flexbox-Beispiel werden drei Flex-Elemente auf der Hauptachse mit justify-content
und auf der Querachse mit align-items
ausgerichtet. Das erste Element überschreibt die align-items
-Werte, die auf die Gruppe angewendet wurden, indem es align-self
auf center
setzt.
<div class="box">
<div>One</div>
<div>Two</div>
<div>Three <br />has <br />extra <br />text</div>
</div>
.box {
display: flex;
align-items: flex-start;
justify-content: space-between;
border: 2px dotted rgb(96 139 168);
}
.box :first-child {
align-self: center;
}
Die Achsen und die Flex-Direction
Flexbox respektiert den Schreibmodus des Dokuments. Wenn Sie also in Englisch arbeiten und justify-content
auf flex-end
setzen, werden die Elemente am Ende des Flex-Containers ausgerichtet. Wenn Sie mit flex-direction
auf row
eingestellt arbeiten, erfolgt diese Ausrichtung in der Inline-Richtung.
Jedoch können Sie in Flexbox die Hauptachse ändern, indem Sie flex-direction
auf column
setzen. In diesem Fall wird justify-content
die Elemente in der Blockrichtung ausrichten. Daher ist es am einfachsten, über die Haupt- und Querachse in Flexbox wie folgt nachzudenken:
- Die Hauptachse = Richtung, die durch
flex-direction
gesetzt wird = Ausrichtung überjustify-content
- Die Querachse = verläuft über die Hauptachse = Ausrichtung über
align-content
,align-self
/align-items
Ausrichtung der Hauptachse
Ausrichtung der Querachse
Es gibt kein justify-self in Flexbox
Auf der Hauptachse behandelt Flexbox die Flex-Elemente als eine Gruppe. Der Platzbedarf für die Anordnung der Elemente wird berechnet, und der verbleibende Raum steht dann zur Verteilung zur Verfügung. Die Eigenschaft justify-content
steuert, wie dieser verbleibende Raum genutzt wird. Setzen Sie justify-content: flex-end
und der zusätzliche Raum wird vor den Elementen platziert, justify-content: space-around
und der Raum wird beiderseits des Elements in dieser Dimension platziert, etc.
Das bedeutet, dass eine justify-self
Eigenschaft in Flexbox keinen Sinn macht, da wir es immer mit der Bewegung der gesamten Gruppe von Elementen zu tun haben.
Auf der Querachse macht align-self
Sinn, da wir möglicherweise zusätzlichen Platz im Flex-Container in dieser Dimension haben, in dem ein einzelnes Element zum Start und Ende bewegt werden kann.
Ausrichtung und automatische Abstände
Es gibt einen spezifischen Anwendungsfall in Flexbox, bei dem wir möglicherweise denken, dass eine justify-self
Eigenschaft das ist, was wir brauchen, und zwar wenn wir eine Reihe von Flex-Elementen aufteilen wollen, vielleicht um ein Aufteilungsmuster für die Navigation zu erstellen. Für diesen Anwendungsfall können wir einen auto
-Rand verwenden. Ein auf auto
gesetzter Rand wird den gesamten verfügbaren Raum in seiner Dimension auffangen. So funktioniert das Zentrieren eines Blocks mit automatischen Rändern. Indem der linke und rechte Rand auf auto
gesetzt werden, versuchen beide Seiten des Blocks, den gesamten verfügbaren Raum einzunehmen und schieben so die Box in die Mitte.
Indem wir einen margin
von auto
auf ein Element in einer Gruppe von Flex-Elementen setzen, die alle zum Start ausgerichtet sind, können wir eine geteilte Navigation erstellen. Dies funktioniert gut mit Flexbox und den Ausrichtungseigenschaften. Sobald kein Platz mehr für den automatischen Rand verfügbar ist, verhält sich das Element wie alle anderen Flex-Elemente und schrumpft, um zu versuchen, in den Raum zu passen.
<div class="box">
<div>One</div>
<div>Two</div>
<div>Three</div>
<div class="push">Four</div>
<div>Five</div>
</div>
.box {
display: flex;
border: 2px dotted rgb(96 139 168);
}
.push {
margin-left: auto;
}
Die gap
Eigenschaften
Erstellen von festen Abständen zwischen Elementen
Auf der Hauptachse erstellt die Eigenschaft column-gap
feste Abstände zwischen benachbarten Elementen.
Auf der Querachse erstellt die Eigenschaft row-gap
Abstände zwischen benachbarten Flex-Linien, daher muss flex-wrap
auch auf wrap
gesetzt werden, damit dies Wirkung zeigt.
<div class="box">
<div>One</div>
<div>Two</div>
<div>Three</div>
<div>Four</div>
<div>Five</div>
<div>Six</div>
</div>
.box {
width: 450px;
display: flex;
flex-wrap: wrap;
row-gap: 10px;
column-gap: 2em;
border: 2px dotted rgb(96 139 168);
}
.box > * {
flex: 1;
}