javascript - 检测滚动方向

标签 javascript scroll onscroll

所以我尝试使用 JavaScript on scroll 来调用一个函数。但我想知道我是否可以在不使用 jQuery 的情况下检测滚动的方向。如果没有,那么是否有任何解决方法?

我正在考虑只放置一个“到顶部”按钮,但如果可以的话我想避免这样做。

我现在刚刚尝试使用这段代码,但它没有用:

if document.body.scrollTop <= 0 {
    alert ("scrolling down")
} else {
    alert ("scrolling up")
}

最佳答案

可以通过存储以前的 scrollTop 值并将当前的 scrollTop 值与它进行比较来检测。

JavaScript :

var lastScrollTop = 0;

// element should be replaced with the actual target element on which you have applied scroll, use window in case of no target element.
element.addEventListener("scroll", function(){ // or window.addEventListener("scroll"....
   var st = window.pageYOffset || document.documentElement.scrollTop; // Credits: "https://github.com/qeremy/so/blob/master/so.dom.js#L426"
   if (st > lastScrollTop){
      // downscroll code
   } else {
      // upscroll code
   }
   lastScrollTop = st <= 0 ? 0 : st; // For Mobile or negative scrolling
}, false);

关于javascript - 检测滚动方向,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31223341/

相关文章:

javascript - Scroll-lock/You click->你可以向下滚动

javascript - 更改滚动行为 : Scroll in Increments of 100vh

applescript - 如何使用applescript滚动到窗口顶部?

java - 如何将静态 onScroll 事件值从 CollectionView 返回到调用 ListFragment 或使用类中非静态方法中的值?

javascript - 计算两次javascript之间的时间差

javascript - 如何在 jquery 或 javascript 中选择 id 包含的元素

javascript - jquery 水平动画在 ipad 和平板电脑上失败

header - 我如何在 Blazor 中订阅 onscroll 事件?

reactjs - Material-UI 和 React : Using the Fade component onScroll

javascript - ReactJS:setTimeout() 不工作?