Element: 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 Element Schnittstelle wird auf dem Scroll-Container ausgelöst, wenn der Browser feststellt, dass ein neues Scroll-Snap-Ziel aussteht, d.h. es wird gewählt, wenn die aktuelle Scroll-Geste endet.
Speziell löst dieses Ereignis während einer Scroll-Geste aus, jedes Mal, wenn der Benutzer über potenzielle neue Snap-Ziele fährt. Zum Beispiel könnte der Benutzer langsam scrollen, indem er den Finger auf einem Touchscreen-Gerät zieht, oder die Maustaste auf einer Scroll-Leiste gedrückt hält und die Maus bewegt. scrollsnapchanging kann daher mehrmals für jede Scroll-Geste ausgelöst werden.
Es wird jedoch nicht für alle potenziellen Snap-Ziele ausgelöst, wenn eine Scroll-Geste über mehrere Snap-Ziele fährt. Vielmehr wird es nur für das letzte Ziel ausgelöst, auf dem das Snapping potenziell ruht.
Syntax
Verwenden Sie den Ereignisnamen in Methoden wie addEventListener() oder setzen Sie eine Event-Handler-Eigenschaft.
addEventListener("scrollsnapchanging", (event) => { })
onscrollsnapchanging = (event) => { }
Ereignistyp
Beispiele
>Grundlegende Verwendung
Angenommen, wir haben ein <main> Element, das bedeutenden Inhalt enthält, der Scrollen verursacht:
<main>
<!-- Significant content -->
</main>
Das <main> Element kann in einen Scroll-Container verwandelt werden, der beim Scrollen zu seinen Kindern schnappt, indem eine Kombination der CSS-Eigenschaft scroll-snap-type und andere Eigenschaften verwendet werden. Zum Beispiel:
main {
width: 250px;
height: 450px;
overflow: scroll;
scroll-snap-type: block mandatory;
}
Das folgende JavaScript-Snippet würde das scrollsnapchanging Ereignis auf dem <main> Element auslösen, wenn eines seiner Kinder zu einem ausstehenden Snap-Ziel 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.
scrollingElem.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, auf die zuvor die pending Klasse angewendet wurde, und entfernen sie, sodass nur das aktuellste ausstehende Snap-Ziel gestylt ist.
Spezifikationen
| Specification |
|---|
| CSS Scroll Snap Module Level 2> # scrollsnapchanging> |
Browser-Kompatibilität
Siehe auch
scrollsnapchangeEreignisscrollendEreignisSnapEvent- CSS
scroll-snap-typeEigenschaft - CSS Scroll Snap Modul
- Verwendung von Scroll-Snap-Ereignissen
- Scroll Snap Events auf developer.chrome.com (2024)