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

View in English Always switch to English

column-height CSS property

Experimentell: Dies ist eine experimentelle Technologie
Überprüfen Sie die Browser-Kompatibilitätstabelle sorgfältig vor der Verwendung auf produktiven Webseiten.

Die column-height-CSS-Eigenschaft legt die Höhe der Spalten in einem mehrspaltigen CSS-Layout fest.

Syntax

css
/* Keyword value */
column-height: auto;

/* <length> value */
column-height: 300px;
column-height: 25em;
column-height: 70vh;

/* Global values */
column-height: inherit;
column-height: initial;
column-height: revert;
column-height: revert-layer;
column-height: unset;

Werte

Diese Eigenschaft wird mit einem einzelnen Wert aus der folgenden Liste angegeben:

auto

Der Anfangswert. Wenn für den Inhaltscontainer eine Höhe festgelegt ist, wachsen die Inhaltsspalten bis zu dieser Höhe. Passt der Inhalt nicht in den Container, ragen weitere Spalten seitlich darüber hinaus. Ist für den Inhaltscontainer keine Höhe festgelegt, wird der Inhalt gleichmäßig auf die im Container erzeugten Spalten verteilt.

<length>

Die Höhe der Spalten. Der Wert darf nicht negativ sein.

Beschreibung

Die Eigenschaft column-height legt die Höhe der Spalten in einem mehrspaltigen Layout fest. Damit lässt sich die Spaltenhöhe zugunsten der Lesbarkeit begrenzen, wenn mit der Eigenschaft column-count oder column-width mehrere Spalten eingerichtet werden.

Ohne column-height müssen Leser bis zum Ende einer Spalte hinunterscrollen und anschließend wieder zum Anfang der nächsten Spalte hinaufscrollen, wenn der mehrspaltige Inhalt höher als der Viewport ist. Eine mögliche Lösung wäre, dem Inhaltscontainer eine feste Höhe zu geben. Zusätzliche Spalten ragen dann jedoch seitlich über den Container hinaus, sodass Leser in Inline-Richtung scrollen müssen, um den gesamten Inhalt zu lesen.

Mit der Eigenschaft column-height können Sie zusammen mit column-wrap eine bestimmte Spaltenhöhe festlegen und die Spalten in eine neue Spaltenreihe umbrechen lassen, sobald der Rand des Containers erreicht ist.

Der Standardwert von column-wrap ist auto. Wenn column-height auf einen <length>-Wert gesetzt ist, wird daraus wrap; dadurch können die Spalten mit fester Höhe auf mehrere Reihen verteilt werden. Wenn column-height den Wert auto hat, wird column-wrap: auto zu nowrap. Bei einer festgelegten Containerhöhe können die Spalten dadurch horizontal über den Container hinausragen. Aufgrund dieses Standardverhaltens müssen Sie die Eigenschaft column-wrap in der Regel nicht ausdrücklich festlegen.

Die Eigenschaft column-height kann zusammen mit column-count und column-width auch über die Kurzschreibweise columns festgelegt werden.

Formale Definition

Anfangswertauto
Anwendbar aufBlockcontainer außer Tabellen umgebende Boxen
VererbtNein
Berechneter Wertauto if specified as auto, otherwise for <length> the absolute value specified
Animationstypby computed value type

Formale Syntax

column-height = 
auto |
<length [0,∞]>

Beispiele

Grundlegende Verwendung

Dieses Beispiel zeigt, wie mit der Eigenschaft column-height ein mehrspaltiges Layout mit Spaltenumbruch erstellt wird.

HTML

Wir verwenden ein Gedicht von Dr. Seuss in einem <ol> mit 28 <li>-Elementen. Darauf folgt der Name des Autors in einem <p>-Element.

html
<ol>
  <li>One fish</li>
  <li>Two fish</li>
  <li>Red fish</li>
  <li>Blue fish</li>
  ...
</ol>
<p>-- Dr. Seuss</p>

CSS

Wir machen das <ol>-Element zu einem mehrspaltigen Container, indem wir die Eigenschaft column-width auf 150px setzen. So enthält der Container möglichst viele Spalten, die jeweils mindestens 150px breit sind. Die Eigenschaft gap mit dem Wert 2em legt sowohl einen horizontalen Abstand zwischen den Spalten als auch einen vertikalen Abstand zwischen den Spaltenreihen fest. Anschließend setzen wir column-height auf 2em. Dadurch wird der Standardwert auto der Eigenschaft column-wrap zu wrap, und die Spalten werden auf mehrere Reihen verteilt.

css
ol {
  column-width: 150px;
  gap: 2em;
  column-height: 3em;
}

Ergebnis

Spalten mit Scroll-Snapping

Dieses Beispiel kombiniert ein mehrspaltiges Layout mit Spaltenumbruch und CSS Scroll-Snapping. Bei jedem Scrollvorgang rastet eine neue Spaltenreihe innerhalb der gesamten Viewport-Höhe ein, sodass der Inhalt bequem gelesen werden kann.

HTML

Das HTML enthält mehrere Textabsätze von den MDN-Startseiten für HTML, CSS und JavaScript. Der Kürze halber ist es ausgeblendet.

CSS

Zunächst legen wir mit column-width für das <body>-Element die bevorzugte Spaltenbreite fest. Ein gap-Wert von 3em 2em erzeugt einen Abstand von 3em zwischen den Reihen und von 2em zwischen den Spalten. column-rule fügt in der Mitte des Abstands zwischen den Spalten eine Linie hinzu. Mit column-height: 95vh sind die Spalten fast so hoch wie der Viewport.

Wir setzen column-wrap ausdrücklich auf wrap, um auf das Umbruchverhalten hinzuweisen. Wir hätten auch auto verwenden oder die Eigenschaft ganz weglassen können, da column-wrap standardmäßig zu wrap wird, wenn column-height auf einen <length>-Wert gesetzt ist.

css
body {
  column-width: 150px;
  column-rule: 2px solid red;
  gap: 3em 2em;
  padding: 0 2em;
  column-height: 95vh;
  column-wrap: wrap;
}

Als Nächstes setzen wir die Eigenschaft column-span des Elements <h1> auf all, damit sich die Überschrift über alle Spalten erstreckt. Außerdem setzen wir margin-top für das erste <p>-Element auf 0, damit es auf derselben Höhe wie der obere Rand der Spalten beginnt.

css
h1 {
  column-span: all;
}

p:first-of-type {
  margin-top: 0;
}

Zuletzt fügen wir Scroll-Snapping hinzu: Wir setzen scroll-snap-type für das <html>-Element auf y mandatory und scroll-snap-align für die ::column-Pseudoelemente, die die einzelnen erzeugten Spalten darstellen, auf start. Dadurch rastet der Inhalt bei jedem Scrollvorgang am oberen Rand einer neuen Spalte ein.

css
html {
  scroll-snap-type: y mandatory;
}

::column {
  scroll-snap-align: start;
}

Ergebnis

Scrollen Sie durch den Inhalt. Beachten Sie, wie jede neue Spaltenreihe den Viewport ausfüllt und der Inhalt bei jedem Scrollvorgang am oberen Rand einer neuen Reihe einrastet.

Experimentierfeld für column-height und column-count

Dieses Beispiel baut auf dem vorherigen auf und ergänzt zwei Schieberegler, mit denen Sie die Anzahl und die Höhe der Spalten im mehrspaltigen Layout anpassen können.

HTML und JavaScript

Das HTML entspricht dem vorherigen Beispiel. Zusätzlich enthält es ein Formular mit zwei <input="range">-Elementen, die die Werte für column-count und column-height über JavaScript aktualisieren. Das HTML und JavaScript sind der Kürze halber ausgeblendet.

CSS

Wir legen für column-rule und gap dieselben Werte wie im vorherigen Beispiel fest. Eine column-width geben wir nicht an. Stattdessen erstellen wir mit der Eigenschaft column-count ein mehrspaltiges Layout und legen die Anzahl der Spalten und die Höhe der Spaltenreihen interaktiv über JavaScript fest. Scroll-Snapping ist in diesem Beispiel nicht enthalten.

css
body {
  column-count: 3;
  column-height: 20em;
  column-rule: 2px solid red;
  gap: 3em 2em;
  padding: 0 2em;
}

Ergebnis

Ändern Sie die Anzahl der Spalten und die Spaltenhöhe, um die Wirkung dieser Eigenschaften zu sehen.

Spezifikationen

Spezifikation
CSS Multi-column Layout Module Level 2
# propdef-column-height

Browser-Kompatibilität

Siehe auch