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

Limited availability

This feature is not Baseline because it does not work in some of the most widely-used browsers.

Experimentell: Dies ist eine experimentelle Technologie
Überprüfen Sie die Browser-Kompatibilitätstabelle sorgfältig vor der Verwendung auf produktiven Webseiten.

Das ::column CSS Pseudo-Element repräsentiert die einzelnen Spalten, die generiert werden, wenn ein Container so eingestellt ist, dass sein Inhalt über mehrere Spalten hinweg angezeigt wird, mithilfe des CSS-Mehrspaltenlayouts. Das ::column Pseudo-Element ermöglicht das Anwenden von Stilen, die das Layout nicht beeinflussen, auf diese erzeugten Fragmente.

Syntax

css
::column {
  /* ... */
}

Beschreibung

Wenn das CSS-Mehrspaltenlayout verwendet wird, um den Inhalt eines Containers in mehreren Spalten anzuzeigen (zum Beispiel mit der column-count-Eigenschaft), werden ::column-Pseudo-Elemente generiert, um jede einzelne Spalte zu enthalten.

Das ::column-Pseudo-Element akzeptiert nur "scroll snap"-Eigenschaften, die auf Elemente in einem Scroll-Container angewendet werden, einschließlich scroll-margin, scroll-snap-align und scroll-snap-stop.

Das ::column-Pseudo-Element kann ein ::scroll-marker-Pseudo-Element haben. Andere Pseudo-Elemente wie ::before und ::after werden auf ::column nicht generiert. Das Anwenden von ::column::scroll-marker erstellt einen Marker für jede Spalte des ursprünglichen Scroll-Containers, wobei die ::scroll-marker-Pseudo-Elemente vom Ursprungselement des ::column-Pseudo-Elements erben und nicht vom ::column selbst.

Dies ist nützlich für CSS-Karussells::column kann verwendet werden, um ::scroll-marker-Pseudo-Elemente für jede Spalte zu generieren und sie als Snap-Ziele mit CSS-Scroll-Snap zu setzen.

Während die Stilisierung, die auf ::column angewendet werden kann, sehr begrenzt ist, könnte sie in Zukunft erweitert werden. Alle zukünftig unterstützten Eigenschaften und Werte werden auf solche beschränkt sein, die das Layout nicht beeinflussen.

Beispiele

Scrollendes Spalten-Layout

Dieses Demo erstellt einen responsiven Container, der jede "Seite" des Inhalts an Ort und Stelle einrastet. Es verwendet die columns-Eigenschaft und das ::column Pseudo-Element, um Inhaltsspalten zu erstellen, die die gesamte Breite ihres übergeordneten Scroll-Containers überspannen, die horizontal gescrollt werden können. Jede Spalte enthält ein oder mehrere Listenelemente, die je nach Ansichtshöhe in ihrer Anzahl variieren können.

HTML

Das HTML besteht aus einer ungeordneten Liste, wobei jedes Listenelement etwas Beispielinhalt enthält:

html
<ul>
...
  <li>
    <h2>Item 1</h2>
  </li>
...
</ul>

CSS

Der Liste wird eine feste height und eine width von 100vw gegeben, um sie über die gesamte Breite des Ansichtsfensters zu spannen. Ein overflow-x-Wert von scroll wird dann eingestellt, damit der Inhalt horizontal gescrollt wird, und CSS-Scroll-Snap wird verwendet, um zu jedem Element oder "Seite" zu springen — ein scroll-snap-type-Wert von x mandatory wird verwendet, um die Liste zu einem Scroll-Snap-Container zu machen. Schließlich wird ein columns-Wert von 1 gesetzt, um die Listeninhalte als eine einzige Spalte darzustellen. Ein text-align-Wert von center wird ebenfalls angewendet, um den Inhalt in der Mitte der Liste auszurichten.

css

Die Listenelemente werden dann gestylt:

  • Ein display-Wert von inline-block wird gesetzt, um die Listenelemente nebeneinander zu platzieren und die Liste horizontal scrollbar zu machen.
  • Eine feste width und height wurde darauf gesetzt.
  • Ein text-align-Wert von left wird darauf gesetzt, um das text-align: center auf dem übergeordneten Container zu überschreiben, sodass der Elementinhalt linksbündig ausgerichtet wird.
  • Jedem zweitplatzierten Listenelement wird eine andere Hintergrundfarbe über :nth-child() gegeben, damit der Scrolling-Effekt leichter zu sehen ist.
css

Die scroll-snap-align-Eigenschaft wird auf die ::column Pseudo-Elemente gesetzt — die die durch die columns-Eigenschaft erzeugten Inhaltsspalten darstellen — damit beim Scrollen eine Spalte in der Mitte des Scroll-Containers einrastet.

css

Ergebnis

Spaltenbasiertes Karussell mit Scroll-Markierungen

Ausgehend vom vorherigen Beispiel erstellen wir Scroll-Markierungen, um die direkte Navigation zu verschiedenen Spalten zu ermöglichen, indem wir eine scroll-marker-group auf den Container und eine ::scroll-marker auf jedes ::column Pseudo-Element anwenden. Das HTML bleibt unverändert.

CSS

Wir erstellen eine Scroll-Markierungsgruppe mit der scroll-marker-group-Eigenschaft und platzieren die Gruppe nach allen Inhalten:

css

Dann wenden wir Stile auf das ::scroll-marker-group Pseudo-Element an, um die Scroll-Markierungen in der Mitte der Zeile mit einem 0.4em Abstand zwischen ihnen anzuordnen:

css

Schließlich verwenden wir das ::scroll-marker-Pseudo-Element, um einen runden, transparenten Marker für jedes Listenelement mit einem schwarzen Rand zu erstellen, und stylen dann den Marker des derzeit gescrollten Elements anders als die anderen, indem wir den Marker mit der :target-current Pseudo-Klasse anvisieren:

css

Ergebnis

Versuchen Sie, die Scroll-Markierungen zu drücken, um direkt zu jeder Seite zu springen. Beachten Sie, wie der aktuelle Marker hervorgehoben wird, sodass Sie sehen können, wo Sie in der Paginierung sind. Versuchen Sie auch, zur Scroll-Markierungsgruppe zu tabben und dann mit den Pfeiltasten durch jede Seite zu navigieren.

Siehe Erstellen von CSS-Karussells für weitere Karussell-Beispiele.

Spezifikationen

Specification
CSS Multi-column Layout Module Level 2
# column-pseudo

Browser-Kompatibilität

Siehe auch