::scroll-marker-group

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 ::scroll-marker-group CSS Pseudoelement wird innerhalb eines Scroll-Containers erzeugt und enthält alle ::scroll-marker Pseudoelemente, die an Nachfahren des Scroll-Containers erzeugt werden.

Syntax

css
::scroll-marker-group {
  /* ... */
}

Beschreibung

Das ::scroll-marker-group Pseudoelement eines Scroll-Containers repräsentiert eine Scroll Marker Gruppe. Dies ist ein Container, der automatisch alle ::scroll-marker Pseudoelemente enthält, die an sich selbst oder seinen Nachfahren erzeugt werden. Dies ermöglicht es, sie als Gruppe zu positionieren und zu layouten, und wird typischerweise verwendet, wenn man ein CSS-Karussell erstellt, um einen Scroll-Positionsindikator bereitzustellen. Die einzelnen Scroll Marker können verwendet werden, um zu den zugehörigen Inhaltselementen zu navigieren.

Der Scroll-Container muss seine scroll-marker-group Eigenschaft auf einen Wert ungleich none setzen, damit das ::scroll-marker-group Pseudoelement erzeugt wird. Der scroll-marker-group Wert bestimmt, wo die Scroll Marker Gruppe in der Tabulatorreihenfolge und der Layoutbox-Reihenfolge des Karussells erscheint (aber nicht in der DOM-Struktur) — before platziert sie am Anfang, während after sie am Ende platziert.

Es ist eine bewährte Praxis, die visuelle Renderposition der Scroll Marker Gruppe mit der Tabulatorreihenfolge abzugleichen. Wenn Sie die Gruppe am Anfang des Inhalts positionieren, platzieren Sie sie am Anfang der Tabulatorreihenfolge mit before. Wenn Sie die Gruppe am Ende des Inhalts positionieren, platzieren Sie sie am Ende der Tabulatorreihenfolge mit after.

Hinsichtlich der Barrierefreiheit werden die Scroll Marker Gruppe und die enthaltenen Scroll Marker mit tablist/tab Semantik gerendert. Wenn Sie mit der Tab-Taste zur Gruppe navigieren, verhält sie sich wie ein einzelnes Element (d.h. ein weiterer Druck auf die Tab-Taste bewegt sich über die Gruppe hinaus zum nächsten Element), und Sie können mit den linken und rechten (oder oberen und unteren) Pfeiltasten zwischen den verschiedenen Scroll Markern wechseln.

Beispiele

Siehe Erstellung von CSS-Karussells für weitere Beispiele, die das ::scroll-marker Pseudoelement verwenden.

Erstellung von Karussell-Scroll-Markern

Dieses Demo ist ein Karussell mit einzelnen Seiten, wobei jedes Element die komplette Seite einnimmt. Wir haben Scroll Marker hinzugefügt, damit der Benutzer mit einem Klick auf einen Marker zu einer beliebigen Seite navigieren kann.

HTML

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

html

CSS

Wir verwandeln unser <ul> zuerst in ein Karussell, indem wir das display auf flex setzen, um eine einzelne, nicht umbrechende Zeile von <li> Elementen zu erzeugen. Die overflow-x Eigenschaft ist auf auto gesetzt, was bedeutet, dass, wenn die Elemente ihren Container auf der x-Achse überlaufen, der Inhalt horizontal scrollt. Wir wandeln dann das <ul> in einen Scroll-Snap-Container um, wobei sichergestellt wird, dass Elemente immer an ihrem Platz einrasten, wenn der Container mit einem scroll-snap-type Wert von mandatory gescrollt wird.

css

Als nächstes stylen wir die <li> Elemente, indem wir die flex Eigenschaft verwenden, um sie auf 100% der Breite des Containers zu setzen. Der scroll-snap-align Wert von start bewirkt, dass die linke Seite des links am weitesten sichtbaren Elements bei gescrolltem Inhalt an der linken Kante des Containers einrastet.

css

Als nächstes wird die scroll-marker-group Eigenschaft der Liste auf after gesetzt, sodass das ::scroll-marker-group Pseudoelement nach dem DOM-Inhalt der Liste in der Tabulatorreihenfolge und der Layoutbox-Reihenfolge angeordnet wird; das bedeutet, dass es nach den Scroll-Schaltflächen kommt:

css

Als nächstes wird das ::scroll-marker-group Pseudoelement der Liste mit Flexbox layoutiert, mit einem justify-content Wert von center und einem gap von 20px, sodass seine Kinder (die ::scroll-marker Pseudoelemente) innerhalb der ::scroll-marker-group zentriert sind, mit einem Abstand zwischen jedem.

css

Als nächstes werden die Scroll Marker selbst gestylt. Das Aussehen jedes einzelnen wird durch das Setzen von width, height, background-color, border und border-radius gehandhabt, aber wir müssen auch einen Wert für die content Eigenschaft setzen, der nicht none ist, damit sie tatsächlich erzeugt werden.

css

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

Zuletzt wird die :target-current Pseudoklasse verwendet, um auszuwählen, welcher Scroll Marker der aktuell sichtbaren "Seite" entspricht, und hebt hervor, 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

Ergebnis

Positionierung der Scroll Marker Gruppe mit Anker-Positionierung

Dieses Beispiel erweitert das vorherige und demonstriert die Verwendung der CSS Anker-Positionierung, um die Scroll Marker Gruppe relativ zum Karussell zu positionieren.

CSS

Das ::scroll-marker-group Pseudoelement der Liste wird relativ zum Karussell mit CSS Anker-Positionierung positioniert, indem der Gruppe ein Wert für position-anchor gegeben wird, der mit dem anchor-name des <ul> übereinstimmt. Wir positionieren dann die Gruppe relativ zum Scroll-Container in Blockrichtung, indem wir einen top Wert setzen, der eine anchor() Funktion enthält. Wir fügen auch einen justify-self Wert von anchor-center hinzu, der die Gruppe in Inline-Richtung zum Zentrum des Scroll-Containers ausrichtet.

css

Ergebnis

Spezifikationen

Specification
CSS Overflow Module Level 5
# scroll-marker-group-pseudo

Browser-Kompatibilität

Siehe auch