scroll-snap-stop
Baseline Widely available
This feature is well established and works across many devices and browser versions. It’s been available across browsers since Juli 2022.
Die scroll-snap-stop CSS Eigenschaft definiert, ob es dem Scroll-Container erlaubt ist, mögliche Snap-Positionen zu "überspringen".
Probieren Sie es aus
scroll-snap-stop: normal; scroll-snap-stop: always; <section class="default-example" id="default-example"> <p class="explanation"> The effect of this property can be noticed on devices with a touchpad. Try to scroll through all items with a single swing. Value <b class="keyword">'normal'</b> should pass through all pages, while <b class="keyword">'always'</b> will stop at the second page. </p> <div class="snap-container"> <div>1</div> <div id="example-element">2</div> <div>3</div> </div> <div class="info">Scroll »</div> </section> .default-example { flex-direction: column; } .explanation { margin-top: 0; } .keyword { color: darkorange; } .default-example .info { width: 100%; padding: 0.5em 0; font-size: 90%; } .snap-container { text-align: left; width: 250px; height: 250px; overflow-x: scroll; display: flex; box-sizing: border-box; border: 1px solid black; scroll-snap-type: x mandatory; } .snap-container > div { flex: 0 0 250px; width: 250px; background-color: rebeccapurple; color: white; font-size: 30px; display: flex; align-items: center; justify-content: center; scroll-snap-align: start; } .snap-container > div:nth-child(even) { background-color: white; color: rebeccapurple; } 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 |
Formale Syntax
scroll-snap-stop =
normal |
always
Beispiele
>Unterschiedliche Snap-Stopps setzen
Das folgende Beispiel zeigt den Unterschied zwischen den Werten always und normal von scroll-snap-stop. Der Unterschied zwischen den beiden scroll-snap-stop Werten wird 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 zu stoppen, selbst wenn Sie schnell scrollen. In den Kästchen, in denen die Eigenschaft scroll-snap-stop auf normal gesetzt ist, werden die Snap-Positionen übersprungen, wenn Sie schnell scrollen.
Falls erforderlich, können Sie selektiv die Elemente auswählen, an denen in einem Scroll-Container immer angehalten wird. Dies wird im untenstehenden Beispiel verdeutlicht, indem ungerade und gerade Elemente gezielt angesprochen werden; Sie können eine andere Strategie wählen, die auf Ihren Anforderungen basiert. Im Beispiel unten wird das Scrollen nicht an ungeraden und geraden Elementen im zweiten und dritten Kästchen "übersprungen".
Spezifikationen
| Specification |
|---|
| CSS Scroll Snap Module Level 1> # scroll-snap-stop> |