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 CSS-Mehrspalten-Layout fest.

Die columns Kurzschreibweise kann verwendet werden, um die Werte für 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

Diese Eigenschaft wird als ein 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 überfließen zur Seite, wenn der Inhalt nicht in den Container passt. Wenn der Inhaltscontainer keine festgelegte Höhe hat, wird der Inhalt gleichmäßig zwischen den im Container erzeugten Spalten verteilt.

<length>

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

Beschreibung

Die column-height Eigenschaft setzt die Höhe der Spalten in einem Mehrspalten-Layout. Dies ist nützlich, um die Spaltenhöhe aus Lesbarkeitsgründen zu begrenzen, wenn mehrere Spalten mit den Eigenschaften column-count oder column-width festgelegt werden.

Ohne column-height, wenn die Höhe des Mehrspalteninhalts die Ansichtshöhe überschreitet, müssten die Leser bis zum Ende einer Spalte nach unten scrollen und dann zurück zum Anfang der nächsten Spalte. Eine mögliche Lösung wäre, eine feste Höhe auf den Inhaltscontainer festzulegen. In diesem Fall würden jedoch überschüssige Spalten zur Seite überlaufen und die Leser müssten in die Inline-Richtung scrollen, um den gesamten Inhalt zu lesen.

Die column-height Eigenschaft ermöglicht es, zusammen mit column-wrap, eine spezifische Höhe für die Spalten festzulegen und sie auf eine neue Reihe von Spalten zu umbrechen, wenn der Container-Rand erreicht ist.

Der Standardwert von column-wrap ist auto, was zu wrap wird, wenn column-height auf einen <length> Wert gesetzt ist; wrap ermöglicht es den Spalten mit fester Höhe, auf mehrere Reihen zu umbrechen. Wenn column-height gleich auto ist, löst sich column-wrap: auto in nowrap auf, was es den Spalten ermöglicht, horizontal zu überlaufen, wenn eine feste Container-Höhe gesetzt ist. Aufgrund dieses Standardverhaltens müssen Sie normalerweise die column-wrap Eigenschaft 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 zeigt die grundlegende Verwendung der column-height Eigenschaft, um ein umbrochenes Mehrspalten-Layout zu erstellen.

HTML

Wir fügen ein Gedicht von Dr. Seuss mit einem <ol> ein, das 28 <li>s enthält, gefolgt von dem 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 einen Mehrspalten-Container, indem wir die column-width Eigenschaft auf 150px setzen, was bedeutet, dass der Container so viele Spalten wie möglich enthält, wobei jede mindestens 150px breit ist. Die gap Eigenschaft von 2em setzt einen horizontalen Abstand zwischen den Spalten und einen vertikalen Abstand zwischen den Reihen von Spalten. Wir setzen dann die column-height auf 2em, wodurch sich der Standardwert auto der column-wrap Eigenschaft in wrap auflöst, um umgebrochene Reihen von Spalten zu erstellen.

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

Ergebnis

Scrollgeschnappte Spalten

Dieses Beispiel kombiniert ein umbrochenes Mehrspalten-Layout mit CSS-Scroll-Snapping, um eine benutzbare Erfahrung zu schaffen, bei der jede Scroll-Aktion eine neue Spaltenreihe ordentlich innerhalb der vollen Höhe des Viewports für ein bequemes Lesen einrastet.

HTML

Das HTML, das mehrere Absätze mit Inhalten von den MDN HTML-, CSS- und JavaScript-Startseiten enthält, wurde der Kürze halber versteckt.

CSS

Wir beginnen mit der Einstellung von column-width auf dem <body> Element, um die bevorzugte Breite für die Spalten zu definieren. Ein gap von 3em 2em ergibt einen 3em Abstand zwischen den Reihen und einen 2em Abstand zwischen den Spalten. Die column-rule fügt eine Linie in der Mitte des Abstands zwischen den Spalten hinzu. Die column-height von 95vh macht die Spalten fast so hoch wie der Viewport.

Wir setzen column-wrap explizit auf wrap als Erinnerung an das angewendete Umbruchverhalten. Wir könnten den Wert auf auto setzen oder die Eigenschaft ganz weglassen, 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 column-span Eigenschaft für das <h1> Element auf all, um die Überschrift über alle Spalten zu spannen, und setzen die margin-top Eigenschaft des ersten <p> auf 0, damit es mit dem oberen Rand der Spalten übereinstimmt.

css
h1 {
  column-span: all;
}

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

Schließlich fügen wir Scroll-Snapping hinzu, indem wir scroll-snap-type auf y mandatory auf dem <html> Element setzen und scroll-snap-align auf start auf den ::column Pseudoelementen, die jede erzeugte Spalte darstellen. Dies bewirkt, dass der Inhalt jedes Mal, wenn er gescrollt wird, zum oberen Rand einer neuen Spalte springt.

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

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

Ergebnis

Probieren Sie aus, den Inhalt zu scrollen. Beachten Sie, wie jede neue Spaltenreihe den Viewport füllt und wie der Inhalt mit jedem Scroll sauber zum oberen Rand einer neuen Reihe einrastet.

column-height und column-count Spielwiese

Dieses Beispiel baut auf dem vorherigen auf, indem es zwei Bereichsregler enthält, die es Ihnen ermöglichen, die Spaltenanzahl und die Spaltenhöhe des Mehrspalten-Layouts anzupassen.

HTML und JavaScript

Das HTML ist dasselbe wie im vorherigen Beispiel, mit dem Zusatz eines Formulars, das zwei <input="range"> Elemente enthält, die die Werte für column-count und column-height mithilfe von JavaScript aktualisieren. Das HTML und JavaScript sind der Kürze halber versteckt.

CSS

Wir spezifizieren die column-rule und gap mit denselben Werten wie im vorherigen Beispiel. Wir spezifizieren keine column-width; stattdessen erstellen wir ein Mehrspalten-Layout mit der column-count Eigenschaft, indem wir die Anzahl der Spalten und die Höhe der Spaltenzeilen interaktiv mithilfe von JavaScript festlegen. 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