Défiler jusqu'à un élément en JavaScript

JavaScript, défiler jusqu'à un élément : options scrollIntoView | We.Inc

Testez chaque option de scrollIntoView dans une zone interactive, corrigez les titres masqués sous un header sticky avec scroll-margin-top, et copiez le code de défilement fluide en JavaScript et en CSS pur.

Défiler jusqu'à un élément en JavaScript

Appelez element.scrollIntoView({ behavior: 'smooth', block: 'start' }) pour amener un élément dans la vue. block détermine où il arrive verticalement : start, center, end ou nearest. Si un header sticky recouvre la cible, donnez-lui en CSS un scroll-margin-top égal à la hauteur du header au lieu de calculer des décalages en JavaScript.

Options de scrollIntoView

Il existe trois façons d'amener la page jusqu'à un élément : scrollIntoView sur l'élément, scrollTo avec une position en pixels, et un simple lien vers un id. Le bac à sable montre l'effet de chaque valeur de block et comment scroll-margin-top garde un titre dégagé d'une barre fixe, puis les exemples couvrent le code nécessaire pour les menus, les erreurs de formulaire et les listes façon messagerie.

Questions fréquentes

Comment défiler jusqu'à un élément avec un décalage pour un header fixe ?

Ajoutez scroll-margin-top à la cible, par exemple h2 { scroll-margin-top: 80px }. La spécification CSS scroll snap demande aux navigateurs de respecter cette marge pour scrollIntoView et pour les liens vers des #id, même sans aucun snapping.

Comment rendre le défilement fluide ?

Passez behavior: 'smooth' à scrollIntoView ou scrollTo, ou définissez scroll-behavior: smooth sur l'élément html pour que chaque défilement programmé et chaque lien interne soient animés. scroll-behavior n'a aucun effet sur le défilement fait par l'utilisateur avec une molette ou au toucher.

Quelle est la différence entre scrollIntoView et scrollTo ?

scrollIntoView part d'un élément et calcule la position pour vous. window.scrollTo({ top, behavior }) se déplace vers une position exacte en pixels, et scrollBy se déplace d'une quantité relative. Utilisez scrollTo quand vous avez déjà un nombre, par exemple pour revenir à une position enregistrée.

Comment remonter en haut de la page ?

window.scrollTo({ top: 0, behavior: 'smooth' }). Pour un panneau défilable, appelez la même méthode sur l'élément du panneau au lieu de window.

Pourquoi scrollIntoView ne fait-il rien ?

Les causes courantes sont un appel avant que l'élément n'existe (lancez-le après le rendu, par exemple dans un effet React), un élément en display: none, ou l'option nearest avec un élément déjà entièrement visible.

Choisir une valeur de block

Le faire sans JavaScript

Code pour défiler jusqu'à un élément

Défilement fluide vers une section

Récupère l'élément par son id et amène son bord supérieur en haut de la vue.

Décalage pour header sticky en CSS

Une seule règle corrige le chevauchement pour les défilements scriptés et pour les liens qui se terminent par #id. La media query supprime l'animation pour les personnes qui préfèrent moins de mouvement.

Amener le premier champ invalide dans la vue

center garde le champ et son libellé au milieu de l'écran ; le focus y amène aussi les utilisateurs au clavier.

Défiler uniquement à l'intérieur d'un panneau

Utilise la position de l'élément dans le panneau, donc la page autour ne bouge pas.

React : défiler jusqu'à une ref

La ref pointe vers le nœud DOM une fois rendu, l'appel se fait donc dans un gestionnaire de clic ou un effet.

Bac à sable scrollIntoView

Cette zone a sa propre barre sticky. Choisissez une ligne et des options, puis faites défiler. La zone applique le même calcul d'alignement avec scrollTo, donc le reste de la page ne bouge pas.

Ligne cible : {n}

scroll-margin-top : {n}px

Défiler

Revenir en haut de la zone

Barre sticky, 40px de haut

Ligne {n}

Zone de défilement de démo

Code pour votre page

Commencer gratuitement · Sans carte bancaire

Voir aussi: Guides

Produit

Pour qui

Fonctionnalités

Ressources

Entreprise

Plan du site