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 gibt die Höhe der Spalten in einem CSS-Multi-Column-Layout an.

Die columns Kurzschreibweise kann verwendet werden, um die Werte der Eigenschaften column-height, column-count und column-width in einer einzigen Deklaration festzulegen.

Syntax

css
/* Keyword */
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

auto

Der Anfangswert. Wenn der Inhaltscontainer eine festgelegte Höhe hat, wachsen die Inhaltsspalten auf diese Höhe und laufen zur Seite über, wenn der Inhalt nicht in den Container passt. Hat der Inhaltscontainer keine festgelegte Höhe, wird der Inhalt gleichmäßig zwischen den im Container 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 Multi-Column-Layout fest. Dies ist nützlich, um die Spaltenhöhe für eine bessere Lesbarkeit einzuschränken, wenn mehrere Spalten mit den Eigenschaften column-count oder column-width eingerichtet werden.

Ohne column-height, wenn die Höhe des mehrspaltigen Inhalts die Höhe des Viewports übersteigt, müssen Leser bis zum Ende einer Spalte scrollen und dann zurück nach oben zur nächsten Spalte. Eine mögliche Lösung wäre, eine feste Höhe für den Inhaltscontainer zu setzen, jedoch laufen dann überschüssige Spalten zur Seite über, und Leser müssen in der Zeilenrichtung scrollen, um den gesamten Inhalt zu lesen.

Die Eigenschaft column-height ermöglicht zusammen mit column-wrap, eine spezifische Höhe für die Spalten festzulegen und sie auf eine neue Reihe von Spalten umzubrechen, wenn die Containerkante 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 festgelegten Spaltenhöhen, in mehrere Reihen umgebrochen zu werden. Wenn column-height gleich auto ist, löst sich column-wrap: auto in nowrap auf, wodurch die Spalten horizontal überlaufen dürfen, falls eine feste Containerhöhe gesetzt ist. Aufgrund dieses Standardverhaltens müssen Sie die Eigenschaft column-wrap im Allgemeinen nicht explizit festlegen.

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 demonstriert die grundlegende Verwendung der column-height-Eigenschaft, um ein umbrochenes Mehrspaltenlayout zu erstellen.

HTML

Wir fügen ein Gedicht von Dr. Seuss ein, indem wir ein <ol> mit 28 <li>s verwenden, 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, was bedeutet, dass der Container so viele Spalten wie möglich enthalten wird, wobei jede mindestens 150px breit sein muss. Die Eigenschaft gap von 2em setzt einen horizontalen Abstand zwischen den Spalten und einen vertikalen Abstand zwischen den Reihen der Spalten. Wir setzen dann die column-height auf 2em, wodurch sich der Standardwert auto der Eigenschaft column-wrap zu wrap auflöst, um umgebrochene Spaltenreihen zu erzeugen.

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

Ergebnis

Scroll-verriegelte Spalten

Dieses Beispiel kombiniert ein umgebrochenes Mehrspaltenlayout mit CSS-Scroll-Locking und schafft eine benutzerfreundliche Erfahrung, bei der jede Scroll-Aktion eine neue Spaltenreihe sauber innerhalb der vollen Höhe des Viewports einrastet, um komfortabeles Lesen zu ermöglichen.

HTML

Das HTML, das mehrere Absätze mit Inhalten von den MDN-Seiten zu HTML, CSS und JavaScript enthält, wurde zur Übersichtlichkeit ausgeblendet.

CSS

Wir beginnen, indem wir die Eigenschaft column-width auf das <body>-Element setzen, um die bevorzugte Breite für die Spalten zu definieren. Ein gap von 3em 2em resultiert in einem Abstand von 3em zwischen den Reihen und 2em zwischen den Spalten. Die Eigenschaft column-rule fügt eine Linie in die Mitte des Abstands zwischen den Spalten ein. Die column-height von 95vh macht die Spalten fast so hoch wie den Viewport.

Wir setzen explizit column-wrap auf wrap als Erinnerung an das angewendete Umbruchverhalten. Wir hätten den Wert auf auto setzen oder die Eigenschaft ganz weglassen können, da column-wrap standardmäßig zu wrap auflöst, wenn die 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;
}

Anschließend setzen wir die column-span-Eigenschaft des <h1>-Elements auf all, damit die Überschrift über alle Spalten reicht, und setzen die margin-top-Eigenschaft des ersten <p> auf 0, sodass es mit der oberen Kante der Spalten übereinstimmt.

css
h1 {
  column-span: all;
}

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

Schließlich fügen wir Scroll-Locking hinzu, indem wir die Eigenschaft scroll-snap-type auf y mandatory am <html>-Element setzen und scroll-snap-align auf start bei den ::column Pseudo-Elementen, die jede erzeugte Spalte repräsentieren. Dadurch rastet der Inhalt beim Scrollen an der oberen Kante einer neuen Spalte ein.

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

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

Ergebnis

Versuchen Sie, den Inhalt zu scrollen. Beachten Sie, wie jede neue Spaltenreihe den Viewport ausfüllt und wie der Inhalt mit jedem Scrollen sauber an der oberen Kante einer neuen Reihe einrastet.

column-height und column-count Spielwiese

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

HTML und JavaScript

Das HTML ist das gleiche wie im vorherigen Beispiel, mit der Ergänzung eines Formulars, das zwei <input type="range">-Elemente enthält, die die Werte für column-count und column-height über JavaScript aktualisieren. Das HTML und JavaScript sind aus Platzgründen ausgeblendet.

CSS

Wir geben die Werte für column-rule und gap wie im vorherigen Beispiel an. Wir geben keine column-width an; stattdessen erstellen wir ein Mehrspaltenlayout mit der Eigenschaft column-count, wobei die Anzahl der Spalten und die Höhe der Spaltenreihen interaktiv mit JavaScript festgelegt werden. Scroll-Locking 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