Dieser Inhalt wurde automatisch aus dem Englischen übersetzt, und kann Fehler enthalten. Erfahre mehr über dieses Experiment.

View in English Always switch to English

Erstellen von CSS-Karussells

Das CSS-Überlaufmodul definiert Funktionen, die es ermöglichen, flexible und zugängliche, reine CSS-Karussells mit browsergenerierten und vom Entwickler gestalteten Scroll-Schaltflächen und Scroll-Markierungen zu erstellen. Dieser Leitfaden erklärt, wie man ein Karussell mit diesen Funktionen erstellt.

Karussell-Konzepte

Karussells sind ein gängiges Merkmal im Web. Sie nehmen in der Regel die Form eines scrollbaren Inhaltsbereichs an, der mehrere Elemente enthält, wie z. B. Präsentationsfolien, Anzeigen, Schlagzeilen oder wichtige Produkteigenschaften.

Benutzer können durch Klicken oder Aktivieren von Navigationsschaltflächen oder durch Wischen durch die Elemente navigieren. Die Navigation umfasst in der Regel:

Scroll-Schaltflächen

Im Allgemeinen "Vorherige" und "Nächste" Schaltflächen oder Links.

Scroll-Markierungen

Eine Serie von Schaltflächen- oder Link-Symbolen, die jeweils ein oder mehrere Elemente darstellen, je nachdem, wie viele Elemente an jeder Scroll-Position innerhalb des Karussells angezeigt werden.

Ein Karussell mit einem Inhaltsbereich in der Mitte, vorherige und nächste Schaltflächen links und rechts und Scroll-Markierungen unten

Ein Hauptmerkmal von Karussells ist die Paginierung — die Elemente wirken wie separate Inhaltsteile, zwischen denen gewechselt wird, anstatt einen durchgängigen Inhaltsabschnitt zu bilden. Man könnte ein Element nach dem anderen oder mehrere Elemente auf jeder Karussell-"Seite" anzeigen. Wenn mehrere Elemente sichtbar sind, könnte bei jedem Druck auf die "Nächste"- oder "Vorherige"-Schaltfläche eine völlig neue Gruppe von Elementen angezeigt werden. Alternativ könnte man ein einzelnes neues Element an einem Ende der Liste hinzufügen, während das Element am anderen Ende aus dem Sichtfeld verschoben wird.

Karussells können ziemlich empfindlich und schwierig mit JavaScript zu implementieren sein. Sie erfordern Skripte, um Scroll-Markierungen mit den Elementen zu verknüpfen, die sie darstellen, während die Scroll-Schaltflächen kontinuierlich aktualisiert werden müssen, um korrekt zu funktionieren. Wenn Karussells mit JavaScript erstellt werden, muss die Zugänglichkeit des Karussells und der zugehörigen Steuerungen hinzugefügt werden.

Glücklicherweise können wir zugängliche Karussells mit zugehörigen Steuerungen ohne die Verwendung von JavaScript erstellen, indem wir die Funktionen des CSS-Karussells verwenden.

CSS-Karussell-Funktionen

Die CSS-Karussell-Funktionen bieten Pseudo-Elemente und Pseudo-Klassen, die es ermöglichen, Karussells ausschließlich mit CSS und HTML zu erstellen, wobei der Browser den größten Teil der Scroll- und Linkverweise auf eine zugängliche, flexible und konsistente Weise übernimmt. Diese Funktionen sind wie folgt:

::scroll-button()

Innerhalb eines Scroll-Containers generiert, repräsentieren diese Pseudo-Elemente Scroll-Schaltflächen, die den Container in eine angegebene Richtung scrollen.

::scroll-marker-group

Innerhalb eines Scroll-Containers generiert; wird verwendet, um Scroll-Markierungen zu sammeln und anzuordnen.

::scroll-marker

Innerhalb der Kinder eines Scroll-Container-Vorfahren oder innerhalb der Spalten eines Scroll-Containers generiert, um deren Scroll-Markierungen darzustellen. Diese können ausgewählt werden, um den Container zu ihren zugehörigen Kinderelementen oder Spalten zu scrollen, und werden innerhalb der ::scroll-marker-group des Scroll-Containers zum Layout-Zweck gesammelt.

:target-current

Diese Pseudo-Klasse kann verwendet werden, um die derzeit aktive Scroll-Markierung auszuwählen. Sie kann verwendet werden, um einen Hervorhebungsstil für die derzeit aktive Markierung bereitzustellen, was für die Benutzbarkeit und Zugänglichkeit wichtig ist.

::column

Dieses Pseudo-Element repräsentiert die einzelnen Spalten, die generiert werden, wenn ein Container auf die Anzeige seines Inhalts in mehreren Spalten über das CSS-Mehrspalten-Layout eingestellt ist. Es kann in Verbindung mit ::scroll-marker verwendet werden, um für jede Spalte eine Scroll-Markierung zu erzeugen.

Karussell mit einzelnen Seiten

Unser erstes Beispiel ist ein Karussell mit einzelnen Seiten, wobei jedes Element die ganze Seite einnimmt. Wir haben Scroll-Markierungen als untere Navigation und Scroll-Schaltflächen an den Seiten der Seite, die es dem Benutzer ermöglichen, zu den nächsten und vorherigen Seiten zu navigieren.

Wir werden flexbox verwenden, um das Karussell zu gestalten, Scroll-Snapping, um eine klare Paginierung zu erzwingen, und Anchor-Positionierung, um die Scroll-Schaltflächen zu positionieren und Scroll-Markierungen relativ zum Karussell zu positionieren.

Das HTML besteht aus einem Überschriftselement und einer ungeordneten Liste, wobei jedes Listenelement einige Beispielinhalte enthält:

html
<h1>CSS carousel single item per page</h1>
<ul>
  <li>
    <h2>Page 1</h2>
  </li>
  <li>
    <h2>Page 2</h2>
  </li>
  <li>
    <h2>Page 3</h2>
  </li>
  <li>
    <h2>Page 4</h2>
  </li>
</ul>

Karussell-Layout mit Flexbox

Wir verwenden flexbox, um eine einzelne Reihe von Elementen zu erstellen; die <ul> ist der Flex-Container, und die <li>-Kindlistenelemente werden horizontal angezeigt, wobei jedes Element die volle Breite des Karussells einnimmt.

Die ungeordnete Liste wird so gestaltet, dass sie die volle Breite des Ansichtsfensters mit einer Breite width von 100vw einnimmt; sie erhält auch eine height von 300px und etwas padding. Wir verwenden dann Flexbox, um die Liste zu layouten — ein display-Wert von flex wird gesetzt, damit die Kinderlistenelemente in einer Reihe angezeigt werden (aufgrund des Standardwerts flex-direction von row), mit einem gap von 4vw zwischen ihnen.

css
ul {
  width: 100vw;
  height: 300px;
  padding: 20px;
  display: flex;
  gap: 4vw;
}

Jetzt ist es an der Zeit, die Listenelemente zu stylen. Die ersten Deklarationen bieten rudimentäres Styling. Die wichtige Deklaration ist der flex-Wert von 0 0 100%, der jedes Element dazu zwingt, so breit wie der Container (die <ul>) zu sein. Infolgedessen wird der Inhalt seinen Container überlaufen, und das Ansichtsfenster wird horizontal scrollen.

css
li {
  list-style-type: none;
  background-color: #eeeeee;
  border: 1px solid #dddddd;
  padding: 20px;

  flex: 0 0 100%;
}

li:nth-child(even) {
  background-color: cyan;
}

Zudem erhält jedes gerade Listenelement über :nth-child() eine andere Hintergrundfarbe, sodass der Scrolleffekt leichter zu erkennen ist.

Festlegen des Scroll-Snappings auf der Liste

In diesem Abschnitt werden wir einen Überlaufwert auf der <ul> setzen, um sie in einen Scroll-Container zu verwandeln, und dann CSS-Scroll-Snapping anwenden, um die Liste dazu zu bringen, beim Scrollen des Inhalts in die Mitte jedes Listenelements zu schnappen.

Ein overflow-x-Wert von scroll wird auf die <ul> gesetzt, sodass ihr Inhalt horizontal innerhalb der Liste scrollen kann, anstatt dass das gesamte Ansichtsfenster scrollt. Dann wird CSS-Scroll-Snap verwendet, um zu jeder "Seite" zu schnappen — ein scroll-snap-type-Wert von x mandatory wird gesetzt, um die Liste zu einem Scroll-Snap-Container zu machen. Das x-Schlüsselwort bewirkt, dass die Snap-Ziele des Containers horizontal geschnappt werden, während das mandatory-Schlüsselwort bedeutet, dass der Container immer zu einem Snap-Ziel am Ende einer Scroll-Aktion schnappen wird.

css
ul {
  overflow-x: scroll;
  scroll-snap-type: x mandatory;
}

Als nächstes wird auf den Listenelementen ein scroll-snap-align-Wert von center gesetzt, sodass die Liste, wenn sie gescrollt wird, in die Mitte jedes Listenelements schnappen kann.

css
li {
  scroll-snap-align: center;
}

Der bisher gezeigte Code wird wie folgt gerendert:

Versuchen Sie, die Liste zu scrollen, indem Sie wischen oder die Bildlaufleiste verwenden, um den Scroll-Snap-Effekt zu sehen. Egal wo Sie Ihre Scroll-Bewegung beenden, ein Element wird immer an seinen Platz "schnappen".

Hinweis: CSS-Scroll-Snapping ist nicht zwingend erforderlich, um die CSS-Karussell-Funktionen zu nutzen. Allerdings funktionieren Karussells mit Scroll-Snapping viel besser. Ohne Scroll-Snapping werden die Scroll-Schaltflächen und Markierungen wahrscheinlich nicht sauber zwischen den Seiten navigieren, und das Ergebnis wird mangelhaft sein.

Erstellen von Scroll-Schaltflächen

In diesem Abschnitt fügen wir dem Demo "Vorherige" und "Nächste" Scroll-Schaltflächen hinzu, um ein Werkzeug zur Navigation zwischen den Karussellseiten bereitzustellen. Dies wird mit dem ::scroll-button() Pseudo-Element erreicht.

Die ::scroll-button()-Pseudo-Elemente generieren Schaltflächen innerhalb eines Scroll-Containers nur dann, wenn ihre content-Eigenschaften auf einen anderen Wert als none gesetzt sind. Jedes ::scroll-button() repräsentiert eine Scroll-Schaltfläche, deren Scroll-Richtung durch das Argument des Selektors definiert wird. Sie können bis zu vier Scroll-Schaltflächen pro Scroll-Container generieren, die jeweils den Inhalt des Containers in Richtung des Anfangs- oder Endes der Block- oder Inline-Achse scrollen.

Sie können auch ein Argument von * angeben, um alle ::scroll-button()-Pseudo-Elemente mit Stilen zu versehen.

Zuerst werden alle Scroll-Schaltflächen mit einigen grundlegenden Stilen sowie Stilen basierend auf verschiedenen Zuständen angesprochen. Es ist wichtig, :focus-Stile für Tastaturnutzer zu setzen. Zudem, da Scroll-Schaltflächen automatisch auf disabled gesetzt werden, wenn kein weiteres Scrollen in diese Richtung möglich ist, verwenden wir die :disabled-Pseudo-Klasse, um diesen Zustand anzusprechen.

css
ul::scroll-button(*) {
  border: 0;
  font-size: 2rem;
  background: none;
  color: black;
  opacity: 0.7;
  cursor: pointer;
}

ul::scroll-button(*):hover,
ul::scroll-button(*):focus {
  opacity: 1;
}

ul::scroll-button(*):active {
  translate: 1px 1px;
}

ul::scroll-button(*):disabled {
  opacity: 0.2;
  cursor: unset;
}

Hinweis: Wir setzen auch einen cursor-Wert von pointer auf die Scroll-Schaltflächen, um deutlicher zu machen, dass sie interagiert werden können (eine Verbesserung sowohl für den allgemeinen UX als auch für die kognitive Zugänglichkeit), und setzen ihn zurück, wenn die Scroll-Schaltflächen auf :disabled stehen.

Als nächstes wird über die content-Eigenschaft ein passendes Icon auf die linke und rechte Scroll-Schaltfläche gesetzt, was auch dazu führt, dass die Scroll-Schaltflächen generiert werden:

css
ul::scroll-button(left) {
  content: "◄";
}

ul::scroll-button(right) {
  content: "►";
}

Hinweis: Die Scroll-Schaltflächen erhalten automatisch einen geeigneten zugänglichen Namen, sodass sie von unterstützenden Technologien korrekt angekündigt werden. Zum Beispiel haben die oben genannten Schaltflächen eine implizite role von button und ihre zugänglichen Namen sind "scroll left" und "scroll right".

Positionierung von Scroll-Schaltflächen

Wir haben die Scroll-Schaltflächen erstellt. Jetzt werden wir sie relativ zum Karussell positionieren, indem wir CSS-Anker-Positionierung verwenden.

Zuerst wird ein Referenz-anchor-name auf die Liste gesetzt. Als nächstes hat jede Scroll-Schaltfläche ihre position auf absolute gesetzt, und ihre position-anchor-Eigenschaft auf denselben Referenznamen, der auf der Liste definiert wurde, um die beiden miteinander zu verbinden.

css
ul {
  anchor-name: --my-carousel;
}

ul::scroll-button(*) {
  position: absolute;
  position-anchor: --my-carousel;
}

Um jede Scroll-Schaltfläche tatsächlich zu positionieren, setzen wir Werte auf ihre Einrückungseigenschaften. Wir verwenden anchor()-Funktionen, um die angegebenen Seiten der Schaltflächen relativ zu den Seiten des Karussells zu positionieren. In jedem Fall wird die calc()-Funktion verwendet, um einen gewissen Abstand zwischen dem Schaltflächenrand und dem Karussellrand hinzuzufügen. Beispielsweise wird der rechte Rand der linken Scroll-Schaltfläche 70 Pixel rechts vom linken Rand des Karussells positioniert.

css
ul::scroll-button(left) {
  right: calc(anchor(left) - 70px);
  bottom: calc(anchor(top) + 13px);
}

ul::scroll-button(right) {
  left: calc(anchor(right) - 70px);
  bottom: calc(anchor(top) + 13px);
}

Indem wir den Code für die Scroll-Schaltflächen hinzufügen, erhalten wir folgendes Ergebnis:

Versuchen Sie, die "Vorherige" und "Nächste" Scroll-Schaltflächen zu drücken, um zu sehen, wie die Seiten gescrollt werden, wobei das Scroll-Snapping-Verhalten respektiert wird. Beachten Sie auch, wie die "Vorherige"-Schaltfläche automatisch deaktiviert wird, wenn die Liste bis zum Anfang des Inhalts gescrollt ist, während die "Nächste"-Schaltfläche automatisch deaktiviert wird, wenn die Liste bis zum Ende des Inhalts gescrollt ist.

Erstellen von Scroll-Markierungen

Scroll-Markierungen sind eine Gruppe von Schaltflächen, von denen jede das Karussell zu einer Position scrollt, die mit einer der Inhaltsseiten zusammenhängt. Sie bieten ein zusätzliches Navigationswerkzeug, das auch Ihren Fortschritt durch die Karussellseiten anzeigt.

In diesem Abschnitt werden wir Scroll-Markierungen zu dem Karussell hinzufügen, was drei Hauptfunktionen umfasst:

  • Die scroll-marker-group-Eigenschaft wird auf das Scroll-Container-Element gesetzt. Sie muss auf einen Wert ungleich none gesetzt werden, damit das ::scroll-marker-group-Pseudo-Element generiert wird; ihr Wert gibt an, wo die Scroll-Markierungsgruppe in der Tabulator- und Layout-Box-Reihenfolge des Karussells (aber nicht in der DOM-Struktur) erscheint — before setzt sie an den Anfang, vor die Scroll-Schaltflächen, während after sie ans Ende setzt.
  • Das ::scroll-marker-group-Pseudo-Element existiert innerhalb eines Scroll-Containers und wird verwendet, um Scroll-Markierungen als Gruppe zusammenzufassen, zu enthalten und anzuordnen.
  • ::scroll-marker Pseudo-Elemente existieren innerhalb der Kinder und ::column-Fragmente eines Scroll-Container-Vorfahren und repräsentieren deren Scroll-Markierungen. Diese sind innerhalb der ::scroll-marker-group des Vorfahrens zum Layout-Zweck gesammelt.

Zunächst wird die scroll-marker-group-Eigenschaft der Liste auf after gesetzt, sodass das ::scroll-marker-group-Pseudo-Element nach dem DOM-Inhalt der Liste in der Fokus- und Layout-Box-Reihenfolge platziert wird; das bedeutet, es kommt nach den Scroll-Schaltflächen:

css
ul {
  scroll-marker-group: after;
}

Hinweis: Alternativ kann ein Scroll-Markierungsgruppenbehälter von einem vorhandenen Element, das eine Gruppe von <a>-Elementen enthält, mit scroll-target-group erstellt werden.

Als nächstes wird das ::scroll-marker-group-Pseudo-Element der Liste relativ zum Karussell unter Verwendung der CSS-Anker-Positionierung positioniert, ähnlich wie bei den Scroll-Schaltflächen, außer dass es horizontal zentriert auf dem Karussell mit einem justify-self-Wert von anchor-center ist. Die Gruppe wird mit Flexbox layoutet, mit einem justify-content-Wert von center und einem gap von 20px, sodass ihre Kinder (die ::scroll-marker-Pseudo-Elemente) zentriert innerhalb der ::scroll-marker-group mit einem Abstand zwischen jedem sind.

css
ul::scroll-marker-group {
  position: absolute;
  position-anchor: --my-carousel;
  top: calc(anchor(bottom) - 70px);
  justify-self: anchor-center;

  display: flex;
  justify-content: center;
  gap: 20px;
}

Als nächstes behandeln wir das Aussehen und die Anmutung der Scroll-Markierungen selbst; sie können wie jeder andere generierte Inhalt gestylt werden. Es ist wichtig zu beachten, dass wir einen Wert ungleich none für die content-Eigenschaft setzen müssen, damit die Scroll-Markierungen tatsächlich generiert werden. Wir setzen auch einige rudimentäre Stile, um die Markierungen als umrandete Kreise erscheinen zu lassen:

css
li::scroll-marker {
  content: "";
  width: 16px;
  height: 16px;
  background-color: transparent;
  border: 2px solid black;
  border-radius: 50%;
}

Hinweis: Generierte Inhalte sind standardmäßig inline; wir können width und height auf unsere Scroll-Markierungen anwenden, weil sie als Flex-Elemente layoutet werden.

Schließlich verwenden wir für diesen Abschnitt die :target-current-Pseudo-Klasse, um die Scroll-Markierung auszuwählen, die der derzeit sichtbaren "Seite" entspricht, und so hervorzuheben, wie weit der Benutzer durch den Inhalt gescrollt hat. In diesem Fall setzen wir die background-color auf black, sodass sie als ausgefüllter Kreis gestylt ist.

css
li::scroll-marker:target-current {
  background-color: black;
}

Hinweis: Wenn ein Scroll-Markierungsgruppenbehälter auf einem Scroll-Container mit der scroll-marker-group-Eigenschaft erstellt wird, wird der Scroll-Container mit tablist/tab-Semantik gerendert. Sie können mit der Tastatur zu ihm navigieren und dann mit den Cursor-Tasten zwischen den verschiedenen "Seiten" wechseln, was auch den Zustand der zugehörigen Scroll-Markierungen und Scroll-Schaltflächen wie erwartet ändert. Die Scroll-Markierungen können auch wie erwartet zwischen einem Tabulatoren normal gewechselt werden.

Finale Ergebnis des Karussells mit Einzelseiten

Der gesamte obige Code kombiniert sich zu folgendem Ergebnis:

Seit dem vorherigen Live-Beispiel wurden die Scroll-Markierungen hinzugefügt — versuchen Sie, diese zu drücken, um direkt zu jeder Seite zu springen. Beachten Sie, wie die aktuelle Markierung hervorgehoben wird, sodass Sie sehen können, wo Sie sich in der Paginierung befinden. Versuchen Sie auch, zur Scroll-Markierungsgruppe zu tabben und dann die Cursor-Tasten zu verwenden, um durch jede Seite zu wechseln.

Sie können auch zwischen den Seiten navigieren, indem Sie nach links und rechts wischen, die Bildlaufleiste ziehen oder die Scroll-Schaltflächen drücken.

Responsives Karussell: mehrere Elemente pro Seite

Das zweite Beispiel ist ein Karussell mit mehreren Elementen pro Seite, das ebenfalls Scroll-Schaltflächen und Scroll-Markierungen enthält, um durch die Seiten zu navigieren. Dieses Beispiel ist ebenfalls responsiv — je nach Ansichtsfensterbreite erscheinen unterschiedlich viele Elemente auf jeder Seite.

Dieses Beispiel ist dem Karussell mit Einzelseiten sehr ähnlich, außer dass anstelle der Flexbox für das Layout CSS-Mehrspalten-Layout und das ::column-Pseudo-Element verwendet werden, um beliebige Spalten zu erstellen, die die volle Breite des Karussells umfassen und mehrere Elemente enthalten können.

Mit diesem Ansatz können wir sicherstellen, dass bei Vergrößerung oder Verkleinerung des Ansichtsfensters, während die Elementgröße konstant bleibt, niemals ein unvollständiges Element außerhalb des Scrollport angezeigt wird. In diesem Fall werden die Scroll-Markierungen auf den Scroll-Container-Fragmenten, pro Spalte, anstelle der Kinder, pro Element, erstellt.

Das HTML ist dem des vorherigen Beispiels sehr ähnlich, außer dass es deutlich mehr Listenelemente gibt und da mehrere Elemente gleichzeitig sichtbar sein werden, bezeichnen wir sie als Elemente statt Seiten:

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

Dieses Beispiel hat auch sehr ähnliche CSS, mit Ausnahme der Regeln, die in den folgenden Abschnitten erklärt werden.

Karussell-Layout mit Spalten

In diesem Beispiel verwenden wir anstelle der Flexbox CSS-Mehrspalten-Layout, um die Karussell-Elemente zu layouten. Der columns-Wert von 1 zwingt jede Spalte, die volle Breite des Containers einzunehmen, wobei die Inhalte eine Spalte nach der anderen anzeigen. Auch ein text-align-Wert von center wird angewendet, um die Inhalte mittig in der Liste auszurichten.

css
ul {
  width: 100vw;
  height: 300px;
  padding: 10px;

  overflow-x: scroll;
  scroll-snap-type: x mandatory;

  columns: 1;
  text-align: center;
}

Wir bieten rudimentäres Box-Styling für die Listenelemente an und wenden dann Layout-Stile an, um mehrere Elemente in die einzelne Inhalts-Spalte einzufügen, abhängig von der Breite des Ansichtsfensters. Die Anzahl ändert sich dynamisch, wenn die Liste breiter oder schmaler wird.

css
li {
  list-style-type: none;

  display: inline-block;
  height: 100%;
  width: 200px;

  background-color: #eeeeee;
  border: 1px solid #dddddd;
  padding: 20px;
  margin: 0 10px;

  text-align: left;
}

li:nth-child(even) {
  background-color: cyan;
}

Die entscheidenden Layout-Eigenschaften sind wie folgt:

  • Ein display-Wert von inline-block wurde gesetzt, um die Listenelemente nebeneinander zu platzieren und die Liste horizontal scrollen zu lassen.
  • Eine absolute width von 200px wurde auf sie gesetzt, um ihre Größensteuerung zu ermöglichen, sodass eine oder mehrere in eine Spalte passen, die beim Ändern der Breite des Ansichtsfensters wächst und schrumpft.
  • Ein text-align-Wert von left wird auf sie gesetzt, um das text-align: center, das auf den übergeordneten Container gesetzt wurde, zu überschreiben, damit der Elementinhalt linksbündig ausgerichtet wird.

Die scroll-snap-align-Eigenschaft ist jetzt auf den ::column-Pseudo-Elementen gesetzt, die die Inhalts-Spalten darstellen, die durch die columns-Eigenschaft erzeugt werden — anstelle der Listenelemente. Wir möchten zu jeder vollständigen Spalte schnappen und nicht zu jedem einzelnen Listenelement, sodass bei jeder Scroll-Aktion alle neuen Elemente angezeigt werden.

css
ul::column {
  scroll-snap-align: center;
}

Spalten-Scroll-Markierungen

Das CSS zum Erstellen der Scroll-Markierungen in diesem Beispiel ist nahezu identisch mit dem im vorherigen Beispiel, außer dass die Selektoren unterschiedlich sind — die Scroll-Markierungen werden an den generierten ::column-Pseudo-Elementen statt an den Listenelementen erstellt. Beachten Sie, dass wir hier zwei Pseudo-Elemente einfügen, um Scroll-Markierungen an den generierten Spalten zu erzeugen.

css
ul::column::scroll-marker {
  content: "";
  width: 16px;
  height: 16px;
  background-color: transparent;
  border: 2px solid black;
  border-radius: 10px;
}

ul::column::scroll-marker:target-current {
  background-color: black;
}

Finale Ergebnis des responsiven Karussells

Das responsive Karussell wird wie folgt dargestellt:

Versuchen Sie, zwischen den verschiedenen Seiten zu navigieren, indem Sie nach links und rechts wischen, die Bildlaufleiste verwenden, die Scroll-Schaltflächen drücken und die Scroll-Markierungen drücken. Die Funktionalität ist ähnlich wie beim Einzelseiten-Flexbox-Beispiel, außer dass jetzt mehrere Listenelemente in jeder navigierten Position sind; die Scroll-Markierungen sind an Spalten-Fragmenten, die potenziell mehrere Elemente enthalten, anstelle an jedem einzelnen Element eingestellt.

Versuchen Sie auch, die Bildschirmbreite zu ändern und Sie werden sehen, dass sich die Anzahl der Listenelemente, die in die Liste passen, ändern — und damit auch die Anzahl der erzeugten Spalten. Da sich die Anzahl der Spalten ändert, aktualisiert sich die Anzahl der Scroll-Markierungen dynamisch, sodass jede Spalte in der Scroll-Markierungsgruppe dargestellt wird.

Siehe auch