0
我在空闲时间一直在想这个问题,但找不到合适的解决方案。我想要做这样的Apple页面:http://www.apple.com/iphone-5s/。当检测到鼠标滚动时,滚动到下一个元素,在滚动scrollTop时阻止滚动,然后如果滚动相反方向,则再次滚动。我用几百种方法重写了我的代码,但没有一个按预期工作。滚动浏览页面
这是我试过的代码之一,但它也不起作用。它还必须确定下一个和上一个位置,这些位置由未定义的变量destiny
表示。
var locked = false;
$('body').bind('mousewheel', function(e){
//prevent page fom scrolling
if (locked) { return false; };
if(e.originalEvent.wheelDelta < 0) {
//scroll down
$("html, body").animate({ scrollTop: destiny }, function() {
locked = false;
});
}else {
//scroll up
$("html, body").animate({ scrollTop: destiny }, function() {
locked = false;
});
}
});
究竟是什么在你提供的代码不能正常工作?它是否将鼠标锁定为滚动,但不会自动滚动? – Padarom
没有看到你的实际代码,我的建议是使用类而不是你的锁定变量。说“.scrollable”,并且只有当滚动事件具有.scrollable状态时才会绑定你的滚动事件,当页面滚动时这些状态将被jquery删除。如果你像Apple那样在一系列的章节中编写它们,那么不需要额外的“命运”变量。希望这对你有意义。 – Godinall
@Padarom我不知道,它根本无法正常工作,它有时会阻止,错误或滞后,我不知道为什么。 – wonderwhy