JQuery .scroll - 如何检索向下滚动或向上滚动页面的距离?

Big*_*Dog 4 jquery scroll css-position

我的网页顶部有一个位置固定导航.导航还有一个下拉菜单,向下滑动并保持向下,直到再次单击它.

我想要实现的是,如果子菜单打开,并且用户决定稍微向下滚动页面,则子菜单将自动关闭.

我现在拥有的是:

$(document).scroll(function() {

$(".subMenu").slideUp(300);

 });
Run Code Online (Sandbox Code Playgroud)

但是这种方法很敏感,并且用最轻微的滚动来关闭下拉.

理想情况下,我可以在我向上或向下滚动300px后重新启动菜单,以便有某种"缓冲"空间.

Gac*_*cha 7

您可以使用jquery $(window).scrollTop()来确定当前位置.我创建了一个简单的例子来演示它.

var lastFixPos = 0;
var threshold = 200;

$(window).on('scroll', function(){
  var diff = Math.abs($(window).scrollTop() - lastFixPos);
  if(diff > threshold){
    alert('Do something');
    lastFixPos = $(window).scrollTop();
  }
});
Run Code Online (Sandbox Code Playgroud)

您可以threshold在采取措施之前更改增加/减少灵敏度.