Window: scrollsnapchanging-Ereignis
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.
Das scrollsnapchanging
-Ereignis der Window
-Schnittstelle wird auf dem window
ausgelöst, wenn der Browser feststellt, dass ein neues Ziel für den Scroll-Snap in Vorbereitung ist, d. h., es wird ausgewählt, wenn die aktuelle Scroll-Geste endet.
Dieses Ereignis funktioniert in ähnlicher Weise wie das scrollsnapchanging
-Ereignis der Element
-Schnittstelle, außer dass das gesamte HTML-Dokument als Scroll-Snap-Container festgelegt sein muss (d. h. scroll-snap-type
ist auf dem <html>
-Element gesetzt).
Syntax
Verwenden Sie den Ereignisnamen in Methoden wie addEventListener()
oder setzen Sie eine Eigenschaft für den Ereignishandler.
addEventListener("scrollsnapchanging", (event) => {});
onscrollsnapchanging = (event) => {};
Ereignistyp
Beispiele
Grundlegende Verwendung
Angenommen, wir haben ein <main>
-Element, das signifikanten Inhalt enthält, der zum Scrollen führt:
<main>
<!-- Significant content -->
</main>
Das <main>
-Element kann mit einer Kombination von CSS-Eigenschaften in einen Scroll-Container verwandelt werden, zum Beispiel:
main {
width: 250px;
height: 450px;
overflow: scroll;
}
Wir können dann das Verhalten des Scroll-Snap auf dem scrollenden Inhalt implementieren, indem wir die Eigenschaft scroll-snap-type
auf dem <html>
-Element angeben:
html {
scroll-snap-type: block mandatory;
}
Das folgende JavaScript-Snippet bewirkt, dass das scrollsnapchanging
-Ereignis auf dem HTML-Dokument ausgelöst wird, wenn ein Kind des <main>
-Elements ein Ziel für den Snap wird. In der Handler-Funktion setzen wir eine pending
-Klasse auf das Kind, das durch die snapTargetBlock
-Eigenschaft referenziert wird, die verwendet werden könnte, um es anders zu stylen, wenn das Ereignis ausgelöst wird.
window.addEventListener("scrollsnapchanging", (event) => {
// remove previously-set "pending" classes
const pendingElems = document.querySelectorAll(".pending");
pendingElems.forEach((elem) => {
elem.classList.remove("pending");
});
// Set current pending snap target class to "pending"
event.snapTargetBlock.classList.add("pending");
});
Zu Beginn der Funktion wählen wir alle Elemente aus, die zuvor die pending
-Klasse angewendet hatten, und entfernen sie, so dass nur das neueste Ziel für den Snap gestylt wird.
Spezifikationen
Specification |
---|
CSS Scroll Snap Module Level 2 # scrollsnapchanging |
Browser-Kompatibilität
BCD tables only load in the browser
Siehe auch
scrollsnapchange
Ereignisscrollend
EreignisSnapEvent
- CSS
scroll-snap-type
-Eigenschaft - CSS scroll snap module
- Verwendung von Scroll-Snap-Ereignissen
- Scroll Snap Events auf developer.chrome.com (2024)