Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/79.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript “检测滑动垫”;“平滑卷轴”;_Javascript_Jquery_Scroll - Fatal编程技术网

Javascript “检测滑动垫”;“平滑卷轴”;

Javascript “检测滑动垫”;“平滑卷轴”;,javascript,jquery,scroll,Javascript,Jquery,Scroll,我在一个网站上工作,当用户使用鼠标滚轮(或滑动垫)向下滚动时,该网站会自动使用jqueryanimate向下滚动到下一个元素 问题是,当使用Mac或任何其他“平滑滚动”的设备时,如果用户在滑动垫上滑动过快,动画完成后,它会再次被调用 原因是,当你使用“平滑滚动”的滑动垫滚动时,它不会简单地将delta(-40)传递给站点,取而代之的是,它会通过一系列的增量,这些增量通常从-100开始,在滚动结束时下降到-1,给用户一个平滑的滚动结束,就像页面在冰上一样,它正在慢慢恢复摩擦 起初,我尝试将站点限制

我在一个网站上工作,当用户使用鼠标滚轮(或滑动垫)向下滚动时,该网站会自动使用jqueryanimate向下滚动到下一个元素

问题是,当使用Mac或任何其他“平滑滚动”的设备时,如果用户在滑动垫上滑动过快,动画完成后,它会再次被调用

原因是,当你使用“平滑滚动”的滑动垫滚动时,它不会简单地将delta(-40)传递给站点,取而代之的是,它会通过一系列的增量,这些增量通常从-100开始,在滚动结束时下降到-1,给用户一个平滑的滚动结束,就像页面在冰上一样,它正在慢慢恢复摩擦

起初,我尝试将站点限制为仅在delta大于-50或50时滚动,这在使用“平滑滚动”的设备上非常有效,但对于那些不使用“平滑滚动”的设备,该功能永远不会被调用,因为鼠标只发送大约delta 10

我的代码设置如下:

if (delta < 0) {
    //SCROLL DOWN
    scrollDown();
} else if (delta > 0) {
    //SCROLL UP
    scrollUp();
}
if(增量<0){
//向下滚动
向下滚动();
}否则如果(增量>0){
//向上滚动
向上滚动();
}
在有人说你不应该劫持按键或鼠标的正常使用之前,谷歌也这么做了,他们和我有同样的问题。我只是想让它变得完美。谢谢


对于任何遇到这种情况的人,我决定走另一条路


这太依赖于硬件,据我所知,没有办法判断。

是的,我以前在网站上见过这种效果。我认为这是一个糟糕的用户体验。是的,这取决于它是如何使用的。我还有一个关闭功能。