scroll-snap-stop
Die scroll-snap-stop
-CSS-Eigenschaft definiert, ob der Scroll-Container "mögliche Snap-Positionen" überspringen darf oder nicht.
Probieren Sie es aus
Syntax
/* Keyword values */
scroll-snap-stop: normal;
scroll-snap-stop: always;
/* Global values */
scroll-snap-stop: inherit;
scroll-snap-stop: initial;
scroll-snap-stop: revert;
scroll-snap-stop: revert-layer;
scroll-snap-stop: unset;
Werte
Formale Definition
Anfangswert | normal |
---|---|
Anwendbar auf | alle Elemente |
Vererbt | Nein |
Berechneter Wert | wie angegeben |
Animationstyp | diskret |
Formaler Syntax
scroll-snap-stop =
normal |
always
Beispiele
Unterschiedliche Snap-Stopps festlegen
Das folgende Beispiel zeigt den Kontrast zwischen den Werten always
und normal
von scroll-snap-stop
. Der Unterschied zwischen den beiden scroll-snap-stop
-Werten ist deutlicher, wenn die Eigenschaft scroll-snap-type
auf mandatory
gesetzt ist, was in diesem Beispiel verwendet wird.
HTML
<p>scroll-snap-stop: always (X Mandatory)</p>
<div class="x mandatory-scroll-snapping always-stop">
<div>1</div>
<div>2</div>
<div>3</div>
<div>4</div>
<div>5</div>
</div>
<p>scroll-snap-stop: always (X Mandatory) on odd child elements</p>
<div class="x mandatory-scroll-snapping always-stop-odd">
<div>1</div>
<div>2</div>
<div>3</div>
<div>4</div>
<div>5</div>
</div>
<p>scroll-snap-stop: always (X Mandatory) on even child elements</p>
<div class="x mandatory-scroll-snapping always-stop-even">
<div>1</div>
<div>2</div>
<div>3</div>
<div>4</div>
<div>5</div>
</div>
<p>scroll-snap-stop: normal (X Mandatory)</p>
<div class="x mandatory-scroll-snapping normal-stop">
<div>1</div>
<div>2</div>
<div>3</div>
<div>4</div>
<div>5</div>
</div>
<p>scroll-snap-stop: always (Y Mandatory)</p>
<div class="y mandatory-scroll-snapping always-stop">
<div>1</div>
<div>2</div>
<div>3</div>
<div>4</div>
<div>5</div>
</div>
<p>scroll-snap-stop: normal (Y Mandatory)</p>
<div class="y mandatory-scroll-snapping normal-stop">
<div>1</div>
<div>2</div>
<div>3</div>
<div>4</div>
<div>5</div>
</div>
CSS
/* setting up mandatory scroll-snap on parent */
.x.mandatory-scroll-snapping {
scroll-snap-type: x mandatory;
}
.y.mandatory-scroll-snapping {
scroll-snap-type: y mandatory;
}
/* defining scroll-snap alignment on children */
div > div {
scroll-snap-align: center;
}
/* defining scroll-snap stop on children */
.always-stop > div {
scroll-snap-stop: always;
}
.always-stop-odd > div:nth-of-type(odd) {
scroll-snap-stop: always;
}
.always-stop-even > div:nth-of-type(even) {
scroll-snap-stop: always;
}
.normal-stop > div {
scroll-snap-stop: normal;
}
Ergebnis
Scrollen Sie von links nach rechts und von oben nach unten in den X- und Y-Kästchen unten. In den X- und Y-Kästchen, in denen die Eigenschaft scroll-snap-stop
auf always
gesetzt ist, wird das Scrollen gezwungen, an der Snap-Position anzuhalten, auch wenn Sie schnell scrollen. In den Kästchen, in denen die Eigenschaft scroll-snap-stop
auf normal
gesetzt ist, werden die Snap-Punkte hingegen übersprungen, wenn Sie schnell scrollen.
Bei Bedarf können Sie gezielt festlegen, bei welchen Elementen im Scroll-Container immer
angehalten werden soll. Dies wird im folgenden Beispiel gezeigt, indem ungerade und gerade Elemente angesprochen werden; Sie können je nach Bedarf eine andere Strategie wählen. Im folgenden Beispiel "überspringt" das Scrollen keine ungeraden und geraden Elemente in den zweiten und dritten Kästchen.
Spezifikationen
Specification |
---|
CSS Scroll Snap Module Level 1 # scroll-snap-stop |
Browser-Kompatibilität
BCD tables only load in the browser