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 gibt die Höhe der Spalten in einem CSS-Mehrspaltenlayout an.
Die Kurzform-Eigenschaft columns kann verwendet werden, um die Werte der Eigenschaften column-height, column-count und column-width in einer einzigen Deklaration festzulegen.
Syntax
/* 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 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, wenn der Inhalt nicht in den Container passt. Wenn der Inhaltscontainer keine festgelegte Höhe hat, wird der Inhalt gleichmäßig auf die 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 Viewport-Höhe überschreitet, bis zum Ende einer Spalte nach unten und dann wieder bis zum Anfang der nächsten Spalte nach oben scrollen. Eine mögliche Lösung wäre, eine feste Höhe für den Inhaltscontainer 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.
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 demonstriert die grundlegende Verwendung der Eigenschaft column-height, um ein umbrochenes Mehrspaltenlayout zu erstellen.
HTML
Wir fügen ein Gedicht von Dr. Seuss mithilfe eines <ol> mit 28 <li>s 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 <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 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 umbrochene Spaltenzeilen zu erstellen.
ol {
column-width: 150px;
gap: 2em;
column-height: 3em;
}
Ergebnis
Scroll-Snap-Spalten
Dieses Beispiel kombiniert ein umbrochenes Mehrspaltenlayout mit CSS Scroll Snap und erzeugt eine nutzbare Erfahrung, bei der jede Scroll-Aktion eine neue Spaltenzeile sauber innerhalb der gesamten Viewport-Höhe einrastet, um ein angenehmes Lesen zu ermöglichen.
HTML
Das HTML, das mehrere Inhaltsabsätze von den MDN-Startseiten für HTML, CSS und JavaScript enthält, wurde der Kürze halber ausgeblendet.
CSS
Wir beginnen mit dem Setzen von column-width auf dem Element <body>, um die bevorzugte Breite für die Spalten zu definieren. Ein gap von 3em 2em führt zu einem Abstand von 3em zwischen Zeilen und von 2em zwischen Spalten. column-rule fügt in der Mitte des Abstands zwischen den Spalten eine Linie hinzu. Die column-height von 95vh bewirkt, dass die Spalten fast so hoch wie der Viewport sind.
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 ganz 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 mit dem oberen Rand der Spalten ausgerichtet ist.
h1 {
column-span: all;
}
p:first-of-type {
margin-top: 0;
}
Schließlich fügen wir Scroll Snap hinzu, indem wir scroll-snap-type auf dem Element <html> auf y mandatory setzen und scroll-snap-align auf den ::column-Pseudoelementen, die jede erzeugte Spalte darstellen, 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 oberen Rand 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 entspricht dem vorherigen Beispiel, ergänzt um ein Formular mit zwei Elementen <input="range">, die die Werte für column-count und column-height über JavaScript aktualisieren. Das HTML und JavaScript wurden der Kürze halber ausgeblendet.
CSS
Wir geben column-rule und gap mit denselben Werten wie im vorherigen Beispiel an. Wir legen kein column-width fest; stattdessen erstellen wir mit der Eigenschaft column-count ein Mehrspaltenlayout und setzen die Anzahl der Spalten sowie die Höhe der Spaltenzeilen interaktiv mit JavaScript. Scroll Snap 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- Kurzform
columns column-wrap- Modul CSS-Mehrspaltenlayout