Dieser Inhalt wurde automatisch aus dem Englischen übersetzt, und kann Fehler enthalten. Erfahre mehr über dieses Experiment.

View in English Always switch to English

Element: scrollsnapchange-Ereignis

Eingeschränkt verfügbar

Diese Funktion ist nicht Baseline, da sie in einigen der am weitesten verbreiteten Browser nicht funktioniert.

Want more browser support for this feature? Tell us why.

Experimentell: Dies ist eine experimentelle Technologie
Überprüfen Sie die Browser-Kompatibilitätstabelle sorgfältig vor der Verwendung auf produktiven Webseiten.

Das scrollsnapchange-Ereignis der Element-Schnittstelle wird am Scroll-Container ausgelöst, wenn am Ende eines Scrollvorgangs ein neues Scroll-Snap-Ziel ausgewählt wurde – unmittelbar bevor das zugehörige scrollend-Ereignis ausgelöst wird.

Ein Scrollvorgang endet, wenn die nutzende Person das Scrollen innerhalb eines Scroll-Containers abschließt – beispielsweise per Touch-Geste oder durch Ziehen des Mauszeigers über eine Scrollleiste – und die Geste beendet.

Syntax

Verwenden Sie den Ereignisnamen in addEventListener():

js
addEventListener("scrollsnapchange", (event) => { })

Alternativ können Sie ihn der Event-Handler-Eigenschaft der Schnittstelle zuweisen:

js
onscrollsnapchange = (event) => { }

Ereignistyp

Ein SnapEvent, das vom allgemeinen Typ Event erbt.

Beispiele

Grundlegende Verwendung

Angenommen, ein <main>-Element enthält so viel Inhalt, dass darin gescrollt werden muss:

html
<main>
  <!-- Significant content -->
</main>

Das <main>-Element lässt sich mithilfe der CSS-Eigenschaft scroll-snap-type und weiterer Eigenschaften in einen Scroll-Container umwandeln, der beim Scrollen an seinen Kindelementen einrastet. Zum Beispiel:

css
main {
  width: 250px;
  height: 450px;
  overflow: scroll;
  scroll-snap-type: block mandatory;
}

Der folgende JavaScript-Code bewirkt, dass das scrollsnapchange-Ereignis auf dem <main>-Element ausgelöst wird, wenn eines seiner Kindelemente zum neu ausgewählten Snap-Ziel wird. In der Handler-Funktion weisen wir dem Kindelement, auf das die Eigenschaft SnapEvent.snapTargetBlock verweist, die Klasse selected zu. Damit lässt es sich beim Auslösen des Ereignisses als ausgewählt darstellen, beispielsweise durch eine Animation.

js
const scrollingElem = document.querySelector("main");

scrollingElem.addEventListener("scrollsnapchange", (event) => {
  event.snapTargetBlock.classList.add("selected");
});

Spezifikationen

Spezifikation
CSS Scroll Snap Module Level 2
# scrollsnapchange

Browser-Kompatibilität

Siehe auch