方法一:使用变量记录上次滚动位置
window.addEventListener('scroll', function() { const currentScroll = window.pageYOffset || document.documentElement.scrollTop; if (currentScroll > lastScrollTop) { // 向下滚动 console.log('向下滚动'); } else if (currentScroll < lastScrollTop) { // 向上滚动 console.log('向上滚动'); } lastScrollTop = currentScroll <= 0 ? 0 : currentScroll; }, false);
方法二:使用更精确的 delta 值判断
window.addEventListener('scroll', function() { const currentScrollPosition = window.pageYOffset; const scrollDelta = currentScrollPosition - lastScrollPosition; if (scrollDelta > 0) { console.log('向下滚动', scrollDelta); } else if (scrollDelta < 0) { console.log('向上滚动', scrollDelta); } lastScrollPosition = currentScrollPosition; });
方法三:使用 requestAnimationFrame 优化性能
let ticking = false; window.addEventListener('scroll', function() { lastKnownScrollPosition = window.scrollY; if (!ticking) { window.requestAnimationFrame(function() { const current = lastKnownScrollPosition; const direction = current > (lastKnownScrollPosition || 0) ? 'down' : 'up'; console.log(direction); ticking = false; }); ticking = true; } });
拓展:JS获取页面滚动距离
1,element.scrollTop
获取或设置一个元素的内容垂直滚动的像素数。
// 获得滚动的像素数 const intElemScrollTop = element.scrollTop; // 设置滚动的距离 element.scrollTop = intValue;
2,window.scrollY 和 window.pageYOffset
返回文档在垂直方向已滚动的像素值。但 window.pageYOffset
兼容性更好。
window.pageYOffset === window.scrollY; // true
3,获取页面滚动距离
最兼容性的写法:
const useScrollTop = () => { return window.pageYOffset || document.documentElement.scrollTop || document.body.scrollTop || 0; }
这也是 skrollr 库使用的写法。
到此这篇关于JavaScript判断页面滚动方向的三种方法的文章就介绍到这了,更多相关JS判断页面滚动方向内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!
来源链接:https://www.jb51.net/javascript/340041qic.htm
© 版权声明
本站所有资源来自于网络,仅供学习与参考,请勿用于商业用途,否则产生的一切后果将由您(转载者)自己承担!
如有侵犯您的版权,请及时联系3500663466#qq.com(#换@),我们将第一时间删除本站数据。
如有侵犯您的版权,请及时联系3500663466#qq.com(#换@),我们将第一时间删除本站数据。
THE END
暂无评论内容