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
/* 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
| Anfangswert | auto |
|---|---|
| Anwendbar auf | Blockcontainer außer Tabellen umgebende Boxen |
| Vererbt | Nein |
| Berechneter Wert | auto if specified as auto, otherwise for <length> the absolute value specified |
| Animationstyp | by 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>.
<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.
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.
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.
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.
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.
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
column-countcolumn-width- Kurzschreibweise
columns column-wrap- CSS-Mehrspaltenlayout-Modul