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.
Die scroll-marker-group CSS Eigenschaft steuert, ob ein Scroll-Container-Element über ein generiertes ::scroll-marker-group Pseudoelement verfügt. Wenn vorhanden, gibt die Eigenschaft auch an, ob die Scroll-Markierungs-Gruppe before oder after den Inhalten des Scroll-Gruppenkonters in der standardmäßigen visuellen und Tabulatorreihenfolge platziert werden soll.
Hinweis:
Um einen Scroll-Markierungs-Gruppen-Container aus einem vorhandenen Element zu erstellen, das eine Gruppe von <a> Elementen enthält, verwenden Sie die Eigenschaft scroll-target-group. Lesen Sie über die Unterschiede im Verhalten zwischen den beiden.
Syntax
/* Single values */
scroll-marker-group: before;
scroll-marker-group: after;
scroll-marker-group: none;
/* Global values */
scroll-marker-group: inherit;
scroll-marker-group: initial;
scroll-marker-group: revert;
scroll-marker-group: revert-layer;
scroll-marker-group: unset;
Werte
after-
Ein
::scroll-marker-groupPseudoelement wird als Geschwister der untergeordneten DOM-Elemente des Scroll-Containers generiert, die ihnen unmittelbar vorausgehen, sowie alle generierten::scroll-button()Pseudoelemente. Es erscheint am Ende der Tabulatorreihenfolge und der Layoutbox-Reihenfolge des Containers (aber nicht in der DOM-Struktur). before-
Ein
::scroll-marker-groupPseudoelement wird als Geschwister der untergeordneten DOM-Elemente des Scroll-Containers generiert, die ihnen unmittelbar vorausgehen, sowie alle generierten::scroll-button()Pseudoelemente. Die Scroll-Markierungs-Gruppe erscheint am Anfang der Tabulatorreihenfolge und der Layoutbox-Reihenfolge des Containers. none-
Auf dem Element wird kein
::scroll-marker-groupPseudoelement generiert. Dies ist der Standardwert.
Hinweis:
Als Best Practice zur Barrierefreiheit sollten Sie die visuelle Anzeigeposition des Scroll-Markierungs-Gruppen-Containers mit der Tabulatorreihenfolge abstimmen. Wenn Sie die Markierungs-Gruppe mit Stilen auf ::scroll-marker-group am Anfang des Inhalts positionieren, setzen Sie sie am Anfang der Tabulatorreihenfolge mit before. Wenn Sie die Gruppe am Ende des Inhalts positionieren, setzen Sie sie am Ende der Tabulatorreihenfolge mit after.
Formale Definition
Wert in der Datenbank nicht gefunden!Formale Syntax
scroll-marker-group =
none |
before |
after
Beispiele
Siehe Erstellung von CSS-Karussells für vollständige Beispiele, die die Eigenschaft scroll-marker-group verwenden.
Platzierung der Scroll-Markierungen
In diesem Beispiel demonstrieren wir die drei Werte der scroll-marker-group Eigenschaft.
HTML
Wir haben eine einfache HTML <ul> Liste mit mehreren <li> Listenelementen.
<ul>
<li>Item 1</li>
<li>Item 2</li>
<li>Item 3</li>
<li>Item 4</li>
<li>Item 5</li>
<li>Item 6</li>
<li>Item 7</li>
<li>Item 8</li>
</ul>
CSS
Wir verwandeln unser <ul> in ein Karussell, indem wir das display auf flex setzen, um eine einzelne, nicht umgebrochene Zeile von <li> Elementen zu erstellen. Die Eigenschaft overflow-x wird 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, wodurch sichergestellt wird, dass Elemente beim Scrollen des Containers immer einrasten, mit einem scroll-snap-type Wert von mandatory.
Wir erstellen einen Scroll-Markierungs-Gruppen-Container mit der Eigenschaft scroll-marker-group und platzieren die Gruppe nach allen Inhalten.
ul {
display: flex;
gap: 4vw;
padding-left: 0;
margin: 32px 0;
overflow-x: auto;
overscroll-behavior-x: contain;
scroll-snap-type: x mandatory;
scroll-marker-group: after;
}
Als nächstes gestalten wir die <li> Elemente, indem wir die flex Eigenschaft verwenden, um sie auf 33% der Breite des Containers zu setzen. Der scroll-snap-align Wert von start lässt die linke Seite des am weitesten links sichtbaren Elements an den linken Rand des Containers schnappen, wenn der Inhalt gescrollt wird.
li {
list-style-type: none;
background-color: #eeeeee;
flex: 0 0 33%;
scroll-snap-align: start;
text-align: center;
line-height: 5;
}
Dann verwenden wir das ::scroll-marker Pseudoelement, um einen quadratischen Marker für jedes Listenelement mit einem roten Rahmen zu erstellen, und wenden Stile auf das ::scroll-marker-group Pseudoelement an, um die Scroll-Markierungen in einer Reihe mit einem Abstand von 0,2em zwischen jedem zu platzieren.
li::scroll-marker {
content: " ";
border: 1px solid red;
height: 1em;
width: 1em;
}
::scroll-marker-group {
display: flex;
gap: 0.2em;
}
Schließlich, um ein gutes Benutzererlebnis zu gewährleisten, gestalten wir den Marker des aktuell gescrollten Elements anders als die anderen, indem wir den Marker mit der :target-current Pseudoklasse anvisieren.
::scroll-marker:target-current {
background: red;
}
Ergebnis
Beachten Sie die Platzierung des Scroll-Markierungs-Gruppen-Containers. Achten Sie darauf, wie sich die Tastatur-Tabs-Reihenfolge bei before im Vergleich zu after unterscheidet, und beachten Sie, wie die Gruppe verschwindet, wenn der Wert auf none gesetzt ist.
Spezifikationen
| Specification |
|---|
| CSS Overflow Module Level 5> # scroll-marker-group-property> |