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 ein ::scroll-marker-group Pseudoelement generiert und, falls ja, ob es sofort before oder after den Inhalten des Containers in der Standard-Ansichts- und Tabulator-Reihenfolge platziert wird.

Syntax

css
/* 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-group Pseudoelement wird als Geschwisterelement der kindlichen DOM-Elemente des Scroll Containers generiert, unmittelbar vor ihnen und allen generierten ::scroll-button() Pseudoelementen. Es erscheint am Ende der Tabulatorreihenfolge des Containers und in der Layout-Box-Reihenfolge (aber nicht in der DOM-Struktur).

before

Ein ::scroll-marker-group Pseudoelement wird als Geschwisterelement der kindlichen DOM-Elemente des Scroll Containers generiert, unmittelbar vor ihnen und allen generierten ::scroll-button() Pseudoelementen. Die Scroll-Marker-Gruppe erscheint am Anfang der Tabulatorreihenfolge des Containers und in der Layout-Box-Reihenfolge.

none

Kein ::scroll-marker-group Pseudoelement wird auf dem Element generiert. Dies ist der Standardwert.

Hinweis: Es ist eine bewährte Praxis, die visuelle Darstellungsposition der Scroll-Marker-Gruppe mit der Tabulatorreihenfolge abzugleichen. Wenn Sie die Marker-Gruppe mit auf ::scroll-marker-group angewandten Stilen an den Anfang des Inhalts positionieren, setzen Sie sie mit before an den Anfang der Tabulatorreihenfolge. Wenn Sie die Gruppe am Ende des Inhalts positionieren, setzen Sie sie mit after an das Ende der Tabulatorreihenfolge.

Formale Definition

Wert in der Datenbank nicht gefunden!

Formale Syntax

scroll-marker-group = 
none |
before |
after

Beispiele

Siehe Erstellen von CSS-Karussells für vollständige Beispiele, die die scroll-marker-group Eigenschaft verwenden.

Platzierung der Scroll-Marker

In diesem Beispiel demonstrieren wir die drei Werte der scroll-marker-group Eigenschaft.

HTML

Wir haben eine grundlegende HTML <ul> Liste mit mehreren <li> Listenelementen.

html
<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 und eine einzelne, nicht umbrechende Reihe von <li> Elementen erstellen. Die overflow-x Eigenschaft ist auf auto gesetzt, was bedeutet, dass, wenn die Elemente ihren Container auf der x-Achse überlaufen, die Inhalte horizontal scrollen. Wir wandeln dann das <ul> in einen scroll-snap container um, um sicherzustellen, dass Elemente immer einrasten, wenn der Container mit einem scroll-snap-type Wert von mandatory gescrollt wird.

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

css
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 33% der Breite des Containers zu machen. Der scroll-snap-align Wert von start sorgt dafür, dass die linke Seite des am weitesten links sichtbaren Elements an den linken Rand des Containers schnappt, wenn der Inhalt gescrollt wird.

css
li {
  list-style-type: none;
  background-color: #eee;
  flex: 0 0 33%;
  scroll-snap-align: start;
  text-align: center;
  line-height: 5;
}

Wir verwenden dann das ::scroll-marker Pseudoelement, um für jedes Listenelement einen quadratischen Marker mit rotem Rand zu erstellen, und wenden Stile auf das ::scroll-marker-group Pseudoelement an, um die Scroll-Marker in einer Reihe mit einem Abstand von 0.2em dazwischen anzuordnen.

css
li::scroll-marker {
  content: " ";
  border: 1px solid red;
  height: 1em;
  width: 1em;
}

::scroll-marker-group {
  display: flex;
  gap: 0.2em;
}

Schließlich, um eine gute Benutzererfahrung 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.

css
::scroll-marker:target-current {
  background: red;
}

Ergebnis

Beachten Sie die Platzierung der Scroll-Marker-Gruppe. Achten Sie darauf, wie sich die Tabulatorreihenfolge mit before gegenüber 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

Browser-Kompatibilität

Siehe auch