Dieser Inhalt wurde automatisch aus dem Englischen übersetzt, und kann Fehler enthalten. Erfahre mehr über dieses Experiment.

View in English Always switch to English

Überblick über die CSS-Box-Ausrichtung

Das CSS-Box-Ausrichtungsmodul spezifiziert CSS-Funktionen, die sich auf die Ausrichtung von Boxen in den verschiedenen CSS-Box-Layout-Modellen beziehen. Das Ziel des Moduls ist die Schaffung einer konsistenten Ausrichtungsmethode für alle CSS-Elemente. Die Eigenschaften der CSS-Box-Ausrichtung bieten vollständige horizontale und vertikale Ausrichtungsfähigkeiten.

Dieser Leitfaden beschreibt die allgemeinen Konzepte, die in diesem Modul enthalten sind. Weitere Leitfäden bieten zusätzliche Informationen zur Box-Ausrichtung in Flexbox, Grid-Layout, Mehrspalten-Layout und Block-, absolut positionierten und Tabellen-Layout. Die Ausrichtung von Text wird durch die Module CSS-Text und CSS-Inline-Layout abgedeckt.

Schlüsselkonzepte und Terminologie

Die Spezifikation beschreibt einige Ausrichtungsbegriffe, um die Diskussion dieser Ausrichtungseigenschaften außerhalb ihrer Implementierung in einer bestimmten Layoutmethode zu erleichtern. Es gibt auch einige Schlüsselkonzepte, die allen Layoutmethoden gemeinsam sind.

Beziehung zu Schreibrichtungen

Die Ausrichtung ist mit den Schreibrichtungen verbunden, da wir bei der Ausrichtung eines Elements nicht die physischen Dimensionen von oben, rechts, unten und links berücksichtigen. Stattdessen beschreiben wir die Ausrichtung anhand des Start- und Endpunktes der jeweiligen Dimension, mit der wir arbeiten. Dies stellt sicher, dass die Ausrichtung auf die gleiche Weise funktioniert, unabhängig von der Schreibrichtung des Dokuments.

Zwei Dimensionen der Ausrichtung

Bei der Verwendung der Box-Ausrichtungs-Eigenschaften richten Sie Inhalte entlang einer von zwei Achsen aus — der Inline-(oder Haupt-)Achse und der Block-(oder Quer-)Achse. Die Inline-Achse ist die Achse, entlang derer Wörter in einem Satz in der verwendeten Schreibrichtung fließen. Für Englisch ist die Inline-Achse zum Beispiel horizontal. Die Block-Achse ist die Achse, entlang der Blocks wie Absatz-Elemente angeordnet werden; sie verläuft quer zur Inline-Achse.

Die Inline-Achse ist die linke/rechte oder horizontale Richtung. Die Block-Achse ist vertikal oder oben/unten.

Bei der Ausrichtung von Elementen entlang der Inline-Achse verwenden Sie die Eigenschaften, die mit justify- beginnen:

Bei der Ausrichtung von Elementen entlang der Block-Achse verwenden Sie die Eigenschaften, die mit align- beginnen:

Flexbox fügt eine zusätzliche Komplikation hinzu, da das Obige gilt, wenn flex-direction auf row eingestellt ist. Die Eigenschaften werden vertauscht, wenn Flexbox auf column eingestellt ist. Daher ist es bei der Arbeit mit Flexbox einfacher, über die Haupt- und Querachse nachzudenken als über Inline und Block. Die justify--Eigenschaften werden immer verwendet, um an der Hauptachse auszurichten, die align--Eigenschaften an der Querachse.

Das Ausrichtungsobjekt

Das Ausrichtungsobjekt ist das Element, das ausgerichtet wird. Für justify-self oder align-self oder wenn diese Werte als Gruppe mit justify-items oder align-items festgelegt werden, ist dies der Randbereich des Elements, auf das diese Eigenschaft angewendet wird. Die Eigenschaften justify-content und align-content unterscheiden sich je nach Layoutmethode.

Der Ausrichtungscontainer

Der Ausrichtungscontainer ist die Box, in die das Objekt ausgerichtet wird. Dies ist typischerweise der umgebende Block des Ausrichtungsobjekts. Ein Ausrichtungscontainer kann ein oder viele Ausrichtungsobjekte enthalten.

Das folgende Bild zeigt einen Ausrichtungscontainer mit zwei Ausrichtungsobjekten darin.

Eine Box, die zwei Rechtecke mit gleicher Breite, aber unterschiedlicher Höhe enthält. Die beiden Rechtecke sind oben ausgerichtet, was bedeutet, dass beide ihre Oberlinien etwa 10px innerhalb der Oberkante der Box haben, in der sie enthalten sind.

Arten der Ausrichtung

Die Spezifikation beschreibt drei verschiedene Arten der Ausrichtung, die mit Schlüsselwortwerten verwendet werden.

Positionale Ausrichtung

Positionale Ausrichtung ist die Position eines Ausrichtungsobjekts in Bezug auf seinen Ausrichtungscontainer. Die Schlüsselwortwerte für die positionale Ausrichtung sind für die positionale Ausrichtung definiert und können als Werte für die Inhaltsausrichtung mit justify-content und align-content sowie für die Selbstausrichtung mit justify-self und align-self verwendet werden.

  • center
  • start
  • end
  • self-start
  • self-end
  • flex-start nur für Flexbox
  • flex-end nur für Flexbox
  • left
  • right

Abgesehen von den physischen Werten left und right, die sich auf physische Attribute des Bildschirms beziehen, sind alle anderen Werte, die <self-position>- und <content-position>-Werte, logische Werte und beziehen sich auf die Schreibrichtung des Inhalts.

Wenn Sie beispielsweise im CSS-Grid-Layout arbeiten und justify-content auf start setzen, werden die Elemente in der Inline-Dimension an den Anfang verschoben, was links sein wird da Sätze im Englischen auf der linken Seite der Seite beginnen. Wenn Sie Arabisch, eine von rechts nach links gehende Sprache, verwenden, würde derselbe Wert start dazu führen, dass die Elemente nach rechts verschoben werden, da Sätze im Arabischen auf der rechten Seite der Seite beginnen.

Es gibt zwei Boxen, jede mit 3 Kindern unterschiedlicher Höhe, aber ähnlicher Breite. Die erste Box hat drei Kinder mit den Buchstaben A, B und C. Diese drei Boxen sind alle nach links ausgerichtet. Die zweite Box hat drei Kinder mit arabischen Buchstaben darin. Diese drei Boxen sind alle nach rechts ausgerichtet.

Beide haben justify-content: start, aber der Ort der beiden Starts ist aufgrund der Schreibrichtung unterschiedlich.

Grundlinienausrichtung

Grundlinienausrichtung ist das Verhältnis der Grundlinien mehrerer Ausrichtungsobjekte innerhalb eines Ausrichtungskontexts. Die Grundlinienausrichtung <baseline-position> Schlüsselwörter werden verwendet, um die Grundlinien von Boxen über eine Gruppe von Ausrichtungsobjekten hinweg auszurichten. Sie können als Werte für die Inhaltsausrichtung mit justify-content und align-content und Selbstausrichtung mit justify-self und align-self verwendet werden.

  • baseline
  • first baseline
  • last baseline

Die Grundlinieninhaltsausrichtung — das Festlegen eines Grundlinienausrichtungswertes für justify-content oder align-content — funktioniert in Layoutmethoden, die Elemente in Reihen anordnen. Die Ausrichtungsobjekte werden zueinander durch Hinzufügen von Auffüllungen innerhalb der Boxen anhand ihrer Grundlinien ausgerichtet.

Die Grundlinienselbstausrichtung verschiebt die Boxen durch das Hinzufügen eines Randbereichs außerhalb der Boxen, um sie anhand der Grundlinien auszurichten. Die Selbstausrichtung wird für einzelne Boxen mit justify-self oder align-self oder für Gruppen von Boxen mit justify-items und align-items durchgeführt.

Verteilte Ausrichtung

Verteilte Ausrichtung definiert die Ausrichtung als Verteilung des Raums unter den Ausrichtungsobjekten. Die verteilten Ausrichtung <content-distribution>-Schlüsselwörter werden mit den Eigenschaften align-content und justify-content verwendet. Diese Schlüsselwörter definieren, was mit dem verfügbaren Raum passiert, nachdem die Ausrichtungsobjekte angezeigt wurden. Die Werte sind wie folgt:

  • stretch
  • space-between
  • space-around
  • space-evenly

Beispielsweise werden im Flex-Layout die Elemente zuerst mit flex-start ausgerichtet. In einem horizontalen von oben nach unten Schreibrichtung, (mit einer Sprache wie Englisch), mit flex-direction auf row gesetzt, beginnen die Elemente ganz links, und der verfügbare Raum nach dem Anzeigen der Elemente wird hinter ihnen platziert.

Drei Rechtecke unterschiedlicher Breite befinden sich in einer Box. Sie sind alle auf der linken Seite der enthaltenen Box ausgerichtet, mit etwa 10px dazwischen und 10px zwischen der linken Seite des ersten Rechtecks und dem Elterncontainer.

Wenn Sie justify-content: space-between auf dem Flex-Container festlegen, wird der verfügbare Raum nun aufgeteilt und zwischen den Elementen platziert.

Drei Rechtecke unterschiedlicher Breite befinden sich in einer Box. Das erste Rechteck ist auf der linken Seite der enthaltenen Box ausgerichtet, das dritte Rechteck ist rechts ausgerichtet, und das mittlere Rechteck ist gleichmäßig zwischen dem ersten und letzten platziert.

Damit diese Schlüsselwörter wirksam werden, ist Raum entlang der Dimension erforderlich, in der Sie die Elemente ausrichten möchten. Ohne Raum gibt es nichts zu verteilen.

Grundlegende Beispiele

Die folgenden Beispiele zeigen, wie einige der Box-Ausrichtungs-Eigenschaften in Grid und Flexbox angewendet werden.

Beispiel für CSS-Grid-Layout-Ausrichtung

In diesem Grid-Layout-Beispiel gibt es zusätzlichen Raum im Grid-Container nach dem Anordnen der Spuren fester Breite auf der Inline-(Haupt-)Achse. Dieser Raum wird mithilfe von justify-content verteilt. Auf der Block-(Quer-)Achse wird die Ausrichtung der Elemente in ihren Grid-Bereichen mit align-items gesteuert. Das erste Element überschreibt den align-items Wert, der auf die Gruppe durch das Setzen von align-self auf center festgelegt ist.

html
<div class="box">
  <div>One</div>
  <div>Two</div>
  <div>Three <br />has <br />extra <br />text</div>
  <div>Four</div>
  <div>Five</div>
  <div>Six</div>
</div>
css
.box {
  display: grid;
  grid-template-columns: 120px 120px 120px;
  align-items: start;
  justify-content: space-between;
}

.box :first-child {
  align-self: center;
}

Flexbox-Ausrichtungsbeispiel

In diesem Beispiel werden drei Flex-Elemente auf der Hauptachse mit justify-content und auf der Querachse mit align-items ausgerichtet. Das erste Element überschreibt den align-items Wert, der auf die Gruppe durch das Setzen von align-self auf center festgelegt ist.

html
<div class="box">
  <div>One</div>
  <div>Two</div>
  <div>Three <br />has <br />extra <br />text</div>
</div>
css
.box {
  display: flex;
  align-items: flex-start;
  justify-content: space-between;
}

.box :first-child {
  align-self: center;
}

Überlauf-Ausrichtung

Die <overflow-position> Schlüsselwörter safe und unsafe definieren das Verhalten, wenn ein Ausrichtungsobjekt größer ist als der Ausrichtungscontainer. Das safe-Schlüsselwort wird die Ausrichtung auf start festlegen, falls eine angegebene Ausrichtung einen Überlauf verursacht, wobei das Ziel darin besteht, "Datenverlust" zu vermeiden, bei dem ein Teil des Elements außerhalb der Grenzen des Ausrichtungscontainers liegt und nicht gescrollt werden kann.

Wenn Sie unsafe angeben, wird die Ausrichtung beachtet, selbst wenn dies zu einem solchen Datenverlust führen würde.

Lücken zwischen Boxen

Die Box-Ausrichtungs-Spezifikation umfasst auch die Eigenschaften gap, row-gap und column-gap. Diese Eigenschaften ermöglichen die Festlegung eines konsistenten Abstands zwischen Elementen in einer Reihe oder Spalte, in jeder Layoutmethode, die Elemente auf diese Weise anordnet.

Die Eigenschaft gap ist eine Kurzform für row-gap und column-gap, mit der wir diese Eigenschaften gleichzeitig festlegen können:

Im folgenden Beispiel verwendet ein Grid-Layout die Kurzform gap, um eine 10px Lücke zwischen den Reihen und eine 2em Lücke zwischen den Spalten festzulegen.

html
<div class="box">
  <div>One</div>
  <div>Two</div>
  <div>Three</div>
  <div>Four</div>
  <div>Five</div>
  <div>Six</div>
</div>
css
.box {
  display: grid;
  grid-template-columns: 1fr 1fr 1fr;
  gap: 10px 2em;
}

.box :first-child {
  align-self: center;
}

Frühe Grid-Implementierungen enthielten gap-Eigenschaften mit dem Präfix grid-. Alle Browser unterstützen die unpräfixierten Eigenschaften, obwohl Sie die folgenden Eigenschaften in einem Code-Basis sehen könnten: grid-row-gap, grid-column-gap, und grid-gap. Die präfixierten Versionen sind Aliase der unpräfixierten.

Beachten Sie, dass andere Dinge die visuelle Lücke erhöhen können, beispielsweise die Verwendung der Raumverteilungsschlüsselwörter oder das Hinzufügen von Rändern zu den Elementen.

Box-Ausrichtung nach Layout-Typ

Da die CSS-Box-Ausrichtungs-Eigenschaften je nach Spezifikation, mit der sie interagieren, unterschiedlich implementiert werden, finden Sie in den folgenden Leitfäden Einzelheiten zur Verwendung der Ausrichtungseigenschaften mit jedem Layout-Typ:

Siehe auch