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
/* 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
| 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 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>.
<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.
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.
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.
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.
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.
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-widthcolumnsKurzschreibweisecolumn-wrap- CSS-Mehrspalten-Layout Modul