【发布时间】:2018-08-01 12:22:05
【问题描述】:
我正在使用此代码滚动:
if (window.addEventListener) {
window.addEventListener('DOMMouseScroll', wheel, false);
}
window.onmousewheel = document.onmousewheel = wheel;
function wheel(event) {
var delta = 0;
if (event.wheelDelta) {
(delta = event.wheelDelta / 120);
} else if (event.detail) {
(delta = -event.detail / 3);
}
handle(delta);
if (event.preventDefault) {
(event.preventDefault());
}
event.returnValue = false;
}
function handle(delta) {
var time = 800;
var distance = 300;
$('html, body').stop().animate({
scrollTop: $(window).scrollTop() - (distance * delta)
}, time);
}
一切正常,但是当用户尝试多次滚动时出现的小步骤有点烦人。
我无法使用一些自定义滚动条来避免这个问题,因为我正在使用 paroller 来产生相同的效果。
有没有办法阻止用户再次滚动直到动画结束?
【问题讨论】:
-
在动画之前在您的可滚动元素上设置
overflow-y: hidden,并在动画完成后恢复为自动。 -
@marekful 哇,就这么简单?现在好多了。谢谢。顺便说一句,我是新来的。如何将您的答案标记为有用的?
标签: javascript jquery scroll jquery-animate