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 CSS-Eigenschaft column-height legt die Höhe der Spalten in einem CSS-Mehrspaltenlayout 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 als einzelner Wert aus der folgenden Liste angegeben:

auto

Der Anfangswert. Wenn der Inhaltscontainer eine festgelegte Höhe hat, wachsen die Inhaltsspalten bis zu dieser Höhe und laufen seitlich über, falls der Inhalt nicht in den Container passt. Wenn der Inhaltscontainer keine festgelegte Höhe hat, wird der Inhalt gleichmäßig zwischen den innerhalb des Containers erzeugten Spalten verteilt.

<length>

Die Höhe der Spalten. Muss nicht negativ sein.

Beschreibung

Die Eigenschaft column-height legt die Höhe der Spalten in einem Mehrspaltenlayout fest. Dies ist nützlich, um die Spaltenhöhe für eine bessere Lesbarkeit zu begrenzen, wenn mehrere Spalten mit der Eigenschaft column-count oder column-width festgelegt werden.

Ohne column-height müssen Lesende, wenn die Höhe des Mehrspalteninhalts die Höhe des Viewports überschreitet, bis zum Ende einer Spalte nach unten und dann wieder zum Anfang der nächsten Spalte nach oben scrollen. Eine mögliche Lösung wäre, für den Inhaltscontainer eine feste Höhe festzulegen. Überschüssige Spalten würden dann jedoch seitlich überlaufen, und Lesende müssten in Inline-Richtung scrollen, um den gesamten Inhalt zu lesen.

Die Eigenschaft column-height ermöglicht es Ihnen zusammen mit column-wrap, eine bestimmte Höhe für die Spalten festzulegen und sie in eine neue Spaltenzeile umzubrechen, wenn der Rand des Containers erreicht wird.

Der Standardwert von column-wrap ist auto, was zu wrap aufgelöst wird, wenn column-height auf einen <length>-Wert gesetzt ist; wrap ermöglicht es den Spalten mit fester Höhe, in mehrere Zeilen umzubrechen. Wenn column-height gleich auto ist, wird column-wrap: auto zu nowrap aufgelöst, wodurch die Spalten horizontal überlaufen können, wenn eine feste Containerhöhe festgelegt ist. Aufgrund dieses Standardverhaltens müssen Sie die Eigenschaft column-wrap im Allgemeinen nicht explizit festlegen.

Die Eigenschaft column-height kann zusammen mit den Eigenschaften column-count und column-width auch mithilfe der 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 die grundlegende Verwendung der Eigenschaft column-height, um ein umgebrochenes Mehrspaltenlayout zu erstellen.

HTML

Wir fügen ein Gedicht von Dr. Seuss mithilfe eines <ol> mit 28 <li>-Elementen ein, gefolgt vom Namen des Autors in einem <p>.

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 definieren das <ol> als Mehrspaltencontainer, indem wir die Eigenschaft column-width auf 150px setzen. Das bedeutet, dass der Container so viele Spalten wie möglich enthält, wobei jede mindestens 150px breit ist. Die Eigenschaft gap mit dem Wert 2em legt einen horizontalen Abstand zwischen Spalten und einen vertikalen Abstand zwischen Spaltenzeilen fest. Anschließend setzen wir column-height auf 2em, wodurch der Standardwert auto der Eigenschaft column-wrap zu wrap aufgelöst wird, um umgebrochene Spaltenzeilen zu erstellen.

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

Ergebnis

Per Scroll-Snapping ausgerichtete Spalten

Dieses Beispiel kombiniert ein umgebrochenes Mehrspaltenlayout mit CSS Scroll Snapping und erstellt eine nutzbare Erfahrung, bei der jede Scroll-Aktion eine neue Spaltenzeile sauber innerhalb der gesamten Höhe des Viewports einrastet, um angenehmes Lesen zu ermöglichen.

HTML

Das HTML, das mehrere Absätze mit Inhalten von den MDN-Startseiten für HTML, CSS und JavaScript enthält, wurde aus Gründen der Kürze ausgeblendet.

CSS

Wir beginnen damit, column-width für das Element <body> festzulegen, um die bevorzugte Breite der Spalten zu definieren. Ein gap von 3em 2em führt zu einem Abstand von 3em zwischen Zeilen und 2em zwischen Spalten. column-rule fügt in der Mitte des Abstands zwischen den Spalten eine Linie hinzu. Die column-height von 95vh macht die Spalten nahezu so hoch wie den Viewport.

Wir setzen column-wrap explizit auf wrap, um an das angewendete Umbruchverhalten zu erinnern. Wir hätten den Wert auf auto setzen oder die Eigenschaft vollständig weglassen können, da column-wrap standardmäßig zu wrap aufgelöst 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 die Überschrift alle Spalten überspannt, und setzen die Eigenschaft margin-top des ersten <p> auf 0, damit sie an der Oberkante der Spalten ausgerichtet ist.

css
h1 {
  column-span: all;
}

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

Abschließend fügen wir Scroll Snapping hinzu, indem wir scroll-snap-type für das Element <html> auf y mandatory und scroll-snap-align für die Pseudoelemente ::column, die jede erzeugte Spalte repräsentieren, auf start setzen. Dadurch rastet der Inhalt bei jedem Scrollen am oberen Rand einer neuen Spalte ein.

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

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

Ergebnis

Versuchen Sie, durch den Inhalt zu scrollen. Beachten Sie, wie jede neue Spaltenzeile den Viewport ausfüllt und wie der Inhalt bei jedem Scrollen sauber am Anfang einer neuen Zeile einrastet.

Spielwiese für column-height und column-count

Dieses Beispiel baut auf dem vorherigen auf und enthält zwei Bereichsregler, mit denen Sie die Spaltenanzahl und die Spaltenhöhe des Mehrspaltenlayouts anpassen können.

HTML und JavaScript

Das HTML ist dasselbe wie im vorherigen Beispiel, ergänzt um ein Formular mit zwei <input="range">-Elementen, die die Werte von column-count und column-height über JavaScript aktualisieren. Das HTML und JavaScript wurden aus Gründen der Kürze ausgeblendet.

CSS

Wir geben column-rule und gap mit denselben Werten wie im vorherigen Beispiel an. Wir geben keine column-width an; stattdessen erstellen wir mit der Eigenschaft column-count ein Mehrspaltenlayout und legen die Anzahl der Spalten sowie die Höhe der Spaltenzeilen 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

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

Spezifikationen

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

Browser-Kompatibilität

Siehe auch