scroll-target-group CSS property
Eingeschränkt verfügbar
Diese Funktion ist nicht Baseline, da sie in einigen der am weitesten verbreiteten Browser nicht funktioniert.
Experimentell: Dies ist eine experimentelle Technologie
Überprüfen Sie die Browser-Kompatibilitätstabelle sorgfältig vor der Verwendung auf produktiven Webseiten.
Die scroll-target-group CSS Eigenschaft legt fest, ob ein Element ein Scroll-Markierungsgruppen-Container ist.
Syntax
/* Keyword values */
scroll-target-group: none;
scroll-target-group: auto;
/* Global values */
scroll-target-group: inherit;
scroll-target-group: initial;
scroll-target-group: revert;
scroll-target-group: revert-layer;
scroll-target-group: unset;
Die scroll-target-group Eigenschaft wird als einer der folgenden Schlüsselwortwerte spezifiziert:
Werte
Beschreibung
Wenn Sie scroll-target-group: auto auf ein Element setzen, wird es als Scroll-Markierungsgruppen-Container bezeichnet. Dies gruppiert eine Reihe von Navigationselementen, die es Benutzern ermöglichen, zwischen Elementen auf einer Seite zu navigieren (wie Karussell-Elementen oder Artikelsektionen) und hervorzuheben, welches Element derzeit im Blickfeld ist.
Alle <a>-Elemente mit Fragment-Identifikatoren innerhalb des Containers werden automatisch als Scroll-Markierungen festgelegt. Das Ankerelement, dessen Scroll-Ziel sich derzeit im Blickfeld befindet, kann über die :target-current Pseudoklasse gestylt werden.
Unterschiede zwischen scroll-target-group und scroll-marker-group
Scroll-Markierungsgruppen-Container, die mit scroll-target-group erstellt wurden, verhalten sich in sehr ähnlicher Weise zu denen, die mit der scroll-marker-group Eigenschaft erstellt wurden, mit einigen Unterschieden:
- Bei
scroll-target-groupmüssen Sie Ihr eigenes Markup erstellen, um den Scroll-Markierungsgruppen-Container und die Scroll-Markierungen darzustellen, währendscroll-marker-groupautomatisch eine Reihe von Pseudo-Elementen erstellt, um den Container (::scroll-marker-group) und die Markierungen (eine oder mehrere Instanzen von::scroll-marker) darzustellen. Diese haben automatisch die erwarteten Navigationszuordnungen mit dem scroll container, auf dem sie erzeugt werden. Die Verwendung vonscroll-marker-groupbietet eine schnellere Einrichtung, da Sie Ihr eigenes Markup nicht verwenden müssen. Das Erstellen Ihres eigenen Markups und das Festlegen als Scroll-Markierungsgruppen-Container überscroll-target-groupbietet jedoch mehr Kontrolle und Flexibilität. - Links, die über
scroll-target-groupals Scroll-Markierungen gekennzeichnet sind, haben kein spezielles Navigationsverhalten, während Markierungen, die überscroll-marker-grouperzeugt werden, automatischtablist/tabSemantik zugewiesen bekommen, was bedeutet, dass sie sich wie ein einzelnes Element in der Tab-Reihenfolge verhalten und Benutzer zwischen Scroll-Markierungen mit den Pfeiltasten wechseln können. Auch hier bietetscroll-marker-groupnützliches Standardverhalten, aber Sie haben die Flexibilität, alternative Semantik und Verhalten für Markierungen anzugeben, die mitscroll-target-groupfestgelegt wurden.
Formale Definition
| Anfangswert | none |
|---|---|
| Anwendbar auf | alle Elemente |
| Vererbt | Nein |
| Berechneter Wert | wie angegeben |
| Animationstyp | diskret |
Formale Syntax
scroll-target-group =
none |
auto
Beispiele
>Grundlegende Verwendung von scroll-target-group
Dieses Beispiel zeigt eine Seite mit einem Inhaltsverzeichnis, das auf verschiedene Abschnitte verlinkt.
HTML
Unser Markup enthält eine Reihe von <section>-Elementen mit Inhalten und ein Inhaltsverzeichnis, das mit einer geordneten Liste (<ol>/<li>) und <a>-Elementen erstellt wurde.
<nav id="toc">
<ol>
<li><a href="#intro">Introduction</a></li>
<li><a href="#ch1">Chapter 1</a></li>
<li><a href="#ch2">Chapter 2</a></li>
<li><a href="#ch3">Chapter 3</a></li>
<li><a href="#ch4">Chapter 4</a></li>
</ol>
</nav>
<section id="intro" class="chapter">
<h1>Prose of the century</h1>
<p>
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nulla luctus
aliquam dolor, eu lacinia lorem placerat vulputate. Duis felis orci,
pulvinar id metus ut, rutrum luctus orci. Cras porttitor imperdiet nunc, at
ultricies tellus laoreet sit amet.
</p>
</section>
<section id="ch1" class="chapter">
<h2>Chapter 1</h2>
<!-- ... -->
</section>
<section id="ch2" class="chapter">
<h2>Chapter 2</h2>
<!-- ... -->
</section>
<!-- ... -->
CSS
Wir haben den größten Teil des Stylings zur Klarheit ausgeblendet. Am wichtigsten für dieses Beispiel ist, dass wir scroll-target-group: auto auf das <ol> gesetzt haben, um es in einen Scroll-Markierungsgruppen-Container zu verwandeln und den Algorithmus des Browsers zur Berechnung, welches <a>-Element gerade :target-current ist (das heißt, welches Linkziel sich derzeit im Blickfeld befindet), auszulösen. Dann stylen wir die :target-current Pseudoklasse mit einer red color, damit sie klar hervortritt.
ol {
scroll-target-group: auto;
}
:target-current {
color: red;
}
Ergebnis
Versuchen Sie, durch Aktivieren der Links und durch Scrollen zu navigieren. Sie werden sehen, dass sich in jedem Fall die rote Hervorhebung zwischen den Links bewegt, um den Abschnitt anzuzeigen, der derzeit gezeigt wird.
CSS-Karussell mit scroll-target-group Scroll-Markierungen
Dieses Beispiel zeigt, wie man CSS-Karussell Scroll-Markierungen unter Verwendung von scroll-target-group erstellt. Der Code für dieses Beispiel ähnelt unserem Karussell mit Einzelseiten Beispiel; wir werden nur die Unterschiede unten erklären.
HTML
Das Markup hat IDs, die auf den Listenelementen festgelegt sind, die jede Seite definieren, und eine geordnete Liste hinzugefügt, die wir mit CSS in einen Scroll-Markierungsgruppen-Container verwandeln.
<h1>CSS carousel single item per page</h1>
<ul>
<li id="page1">
<h2>Page 1</h2>
</li>
<li id="page2">
<h2>Page 2</h2>
</li>
<li id="page3">
<h2>Page 3</h2>
</li>
<li id="page4">
<h2>Page 4</h2>
</li>
</ul>
<ol>
<li><a href="#page1">1</a></li>
<li><a href="#page2">2</a></li>
<li><a href="#page3">3</a></li>
<li><a href="#page4">4</a></li>
</ol>
CSS
Wir erstellen den Scroll-Markierungsgruppen-Container und die Scroll-Markierungen, indem wir scroll-target-group auf dem <ol> Elemnt festlegen. Der Rest des Codes zum Stylen dieser ist sehr ähnlich, außer dass wir Elemente unserer eigenen Wahl (<ol> und <a>) anstelle der ::scroll-marker-group und ::scroll-marker Pseudo-Elemente anvisieren.
Wir vervollständigen den Code, indem wir einige Stile für die :target-current, a:hover und a:focus Zustände setzen, um anzuzeigen, welche Seite derzeit angezeigt wird und welche Links gehovered/gefocused werden.
ol {
position: absolute;
position-anchor: --my-carousel;
top: calc(anchor(bottom) - 90px);
justify-self: anchor-center;
display: flex;
justify-content: center;
gap: 20px;
list-style-type: none;
padding: 0;
scroll-target-group: auto;
}
ol a {
width: 28px;
height: 28px;
display: inline-block;
text-align: center;
text-decoration: none;
padding-top: 4px;
color: black;
background-color: transparent;
border: 2px solid black;
border-radius: 50%;
}
ol a:hover,
ol a:focus,
:target-current {
background-color: black;
color: white;
}
Ergebnis
Versuchen Sie, auf eine von drei Arten zu navigieren: durch Aktivieren der Scroll-Marker-Links, durch horizontales Scrollen oder durch Drücken der Scroll-Tasten auf beiden Seiten. Sie werden sehen, dass sich in jedem Fall die Hervorhebung zwischen den Links bewegt, um den Abschnitt anzuzeigen, der derzeit gezeigt wird.
Spezifikationen
| Spezifikation |
|---|
| CSS Overflow Module Level 5> # scroll-target-group> |
Browser-Kompatibilität
Siehe auch
scroll-marker-group::scroll-marker-groupund::scroll-markerPseudo-Elemente:target-current,:target-before, und:target-afterPseudo-Klassen- Erstellen von CSS-Karussells
- CSS-Overflow Modul