Maison> interface Web> js tutoriel> le corps du texte

Comment utiliser JavaScript pour obtenir l'effet de défilement et de masquage de la barre de navigation fixe en haut de la page Web ?

WBOY
Libérer: 2023-10-16 08:58:41
original
856 Les gens l'ont consulté

如何使用 JavaScript 实现网页顶部固定导航栏的滚动隐藏效果?

Comment utiliser JavaScript pour obtenir l'effet de défilement et de masquage de la barre de navigation fixe en haut de la page Web ?

À l’ère d’Internet d’aujourd’hui, la conception Web se concentre souvent sur l’expérience utilisateur et l’intégrité des fonctions des pages. La barre de navigation Web constitue le pont entre les utilisateurs et le site Web. Elle est donc généralement placée en haut de la page pour permettre aux utilisateurs de trouver rapidement les informations dont ils ont besoin. Cependant, lorsque les utilisateurs naviguent sur le Web, garder la barre de navigation affichée en haut pendant une longue période peut occuper de l'espace sur la page et gêner les utilisateurs. Par conséquent, afin d'améliorer l'expérience utilisateur, nous pouvons utiliser JavaScript pour implémenter l'effet de défilement et de masquage de la barre de navigation fixe en haut de la page Web.

La façon d'obtenir cet effet est d'écouter les événements de défilement et de juger de l'affichage et du masquage de la barre de navigation en fonction de la direction de défilement et de la distance de défilement. Voici l'exemple de code :

// 获取导航栏元素 const navBar = document.querySelector('.navbar'); // 定义初始滚动位置 let lastScrollTop = 0; // 定义初始导航栏高度 const navBarHeight = navBar.offsetHeight; // 监听滚动事件 window.addEventListener('scroll', function() { // 获取当前滚动位置 const scrollTop = window.pageYOffset || document.documentElement.scrollTop; // 判断滚动方向 if (scrollTop > lastScrollTop) { // 向下滚动,隐藏导航栏 navBar.style.transform = `translateY(-${navBarHeight}px)`; } else if (scrollTop < lastScrollTop) { // 向上滚动,显示导航栏 navBar.style.transform = 'translateY(0)'; } // 更新滚动位置 lastScrollTop = scrollTop; });
Copier après la connexion

Le code ci-dessus obtient d'abord l'élément de barre de navigation avec le nom de classe.navbarviadocument.querySelector('.navbar'). Ensuite, nous définissons une variablelastScrollToppour stocker la dernière position de défilement, et utilisonsnavBar.offsetHeightpour obtenir la hauteur de la barre de navigation.document.querySelector('.navbar')获取了具有.navbar类名的导航栏元素。接下来,我们定义了一个变量lastScrollTop用于存储上次滚动的位置,并且使用navBar.offsetHeight获取了导航栏的高度。

然后,我们通过window.addEventListener('scroll', function() { ... })来监听滚动事件。在滚动事件的回调函数中,我们首先获取当前的滚动位置scrollTop。接下来,通过判断当前滚动位置和上次滚动位置的大小关系,我们可以确定滚动的方向。

如果当前滚动位置大于上次滚动位置,则表示用户向下滚动,我们将导航栏向上隐藏。需要注意的是,我们通过设置navBar.style.transformtranslateY属性来实现导航栏的移动,将导航栏的高度(navBarHeight)作为位移参考,以保证导航栏完全隐藏。

相反,如果当前滚动位置小于上次滚动位置,则表示用户向上滚动,我们将导航栏重新显示。

最后,我们需要更新滚动位置lastScrollTop

Ensuite, nous écoutons faire défiler les événements via window.addEventListener('scroll', function() { ... }). Dans la fonction de rappel de l'événement scroll, nous obtenons d'abord la position actuelle du défilement scrollTop. Ensuite, en jugeant la relation de taille entre la position actuelle de défilement et la dernière position de défilement, nous pouvons déterminer la direction du défilement.

Si la position de défilement actuelle est supérieure à la dernière position de défilement, cela signifie que l'utilisateur fait défiler vers le bas et que nous masquons la barre de navigation vers le haut. Il convient de noter que nous déplaçons la barre de navigation en définissant la propriété translateYde navBar.style.transformet modifions la hauteur de la barre de navigation ( navBarHeight code >) comme référence de déplacement pour garantir que la barre de navigation est complètement masquée. Au contraire, si la position de défilement actuelle est inférieure à la dernière position de défilement, cela signifie que l'utilisateur a fait défiler vers le haut et nous réafficherons la barre de navigation. Enfin, nous devons mettre à jour la position de défilement lastScrollToppour comparaison lors du prochain événement de défilement. Avec l'exemple de code ci-dessus, nous pouvons obtenir l'effet de défilement et de masquage de la barre de navigation fixe en haut de la page Web, améliorant ainsi l'expérience de navigation de l'utilisateur. Bien entendu, en fonction des besoins réels, nous pouvons apporter quelques ajustements et améliorations au style et à l'effet de la barre de navigation pour obtenir de meilleurs effets d'interaction utilisateur.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!