【发布时间】:2014-12-14 01:50:25
【问题描述】:
我希望实现像 Google Inbox landing page 这样的滚动功能:
值得注意的是,无论您滚动滚轮的速度或次数,它都将计为“一”并进入下一步。这似乎说起来容易做起来难,因为没有办法取消“滚动”事件。有一种方法可以取消 DOMMouseScroll 和 mousewheel 事件,但是这样做很棘手:
问题是取消这些事件的方式如下使用return preventFn(ev):
var preventFn = function (ev) {
ev.returnValue = false;
return false;
};
但是,这样做会导致 scrollTop() 操作中断。但是没有它,滚动事件也会通过并弄乱它。
使用超时(参见小提琴),我可以通过一个相当错误的实现做得更好。它工作正常,但有一个主要错误是,如果用户在 scrollTop() 动画发生时滚动,一切都会永久中断。
我该如何纠正这个问题,让它像 Google 一样出色? (最好没有超时。在 Google 页面中,从第 3 步到第 4 步……我什至感觉不到任何超时,当我的鼠标滚轮开始移动时,它似乎立即滚动。所以这似乎是可能的)
【问题讨论】:
标签: javascript jquery angularjs scroll