Cette page a été traduite à partir de l'anglais par la communauté. Vous pouvez contribuer en rejoignant la communauté francophone sur MDN Web Docs.

View in English Always switch to English

Element : évènement scrollsnapchange

Disponibilité limitée

Cette fonctionnalité n'est pas Compatible car elle ne fonctionne pas dans certains des navigateurs les plus utilisés.

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

Expérimental: Il s'agit d'une technologie expérimentale.
Vérifiez attentivement le tableau de compatibilité des navigateurs avant de l'utiliser en production.

L'évènement scrollsnapchange de l'interface Element est déclenché sur le conteneur de défilement à la fin d'une opération de défilement lorsqu'une nouvelle cible d'alignement de défilement a été sélectionnée, juste avant que l'évènement correspondant scrollend ne se déclenche.

Une opération de défilement se termine lorsque l'utilisateur·ice a fini·e de faire défiler un conteneur de défilement — par exemple en utilisant un geste tactile ou en faisant glisser le pointeur de la souris sur une barre de défilement — et relâche le geste.

Syntaxe

Utilisez le nom de l'évènement dans des méthodes comme addEventListener(), ou définissez une propriété de gestionnaire d'évènement.

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

onscrollsnapchange = (event) => { }

Type d'évènement

Un objet SnapEvent, qui hérite du type générique Event.

Exemples

Utilisation simple

Supposons que nous ayons un élément HTML <main> contenant un contenu important qui provoque son défilement :

html
<main>
  <!-- Contenu important -->
</main>

L'élément <main> peut être transformé en conteneur de défilement qui s'aligne sur ses enfants lorsqu'on le fait défiler en utilisant une combinaison de la propriété CSS scroll-snap-type et d'autres propriétés. Par exemple :

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

Le fragment JavaScript suivant provoque le déclenchement de l'évènement scrollsnapchange sur l'élément <main> lorsqu'un de ses enfants devient une nouvelle cible d'alignement sélectionnée. Dans la fonction de gestion, nous appliquons une classe selected à l'enfant référencé par la propriété SnapEvent.snapTargetBlock, qui peut être utilisée pour la mise en forme afin qu'il semble avoir été sélectionné (par exemple, avec une animation) lorsque l'évènement se déclenche.

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

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

Spécifications

Spécification
CSS Scroll Snap Module Level 2
# scrollsnapchange

Compatibilité des navigateurs

Voir aussi