【发布时间】:2014-06-25 07:25:05
【问题描述】:
我正在开发一个网站,当用户使用鼠标滚轮(或滑动垫)向下滚动时,该网站会自动使用 jquery animate 向下滚动到下一个元素。
问题在于,当使用 Mac 或任何其他“平滑滚动”的设备时,如果用户在滑动垫上向下滑动的速度过快,动画结束后,它会再次被调用。
这样做的原因是,当您使用“平滑滚动”的滑动垫滚动时,它不会简单地将 delta (- 40) 传递给站点,而是会传递一大堆通常开始高的 delta,例如 - 100 并在滚动结束时下降到 -1 以给用户一个平滑的滚动完成,就好像页面在冰上并且它正在慢慢恢复摩擦。
起初我尝试将站点限制为仅在 delta 大于 -50 或 50 时才滚动,这在使用“平滑滚动”的设备上效果很好,但对于那些不使用的设备,该函数永远不会被调用,因为只有鼠标发送大约 delta 10。
我的代码设置如下:
if (delta < 0) {
//SCROLL DOWN
scrollDown();
} else if (delta > 0) {
//SCROLL UP
scrollUp();
}
在有人说你不应该劫持按键或鼠标的正常使用之前,谷歌也这样做了,他们和我有同样的问题。我只是想让它变得完美。谢谢!
【问题讨论】:
-
是的,我以前在网站上看到过这种效果。我认为这是一种糟糕的用户体验。
-
是的,这真的取决于它的使用方式。我还有一个关闭功能。
标签: javascript jquery scroll