2014-06-26 111 views
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; 
     }); 
    } 
}); 
+0

究竟是什么在你提供的代码不能正常工作?它是否将鼠标锁定为滚动,但不会自动滚动? – Padarom

+0

没有看到你的实际代码,我的建议是使用类而不是你的锁定变量。说“.scrollable”,并且只有当滚动事件具有.scrollable状态时才会绑定你的滚动事件,当页面滚动时这些状态将被jquery删除。如果你像Apple那样在一系列的章节中编写它们,那么不需要额外的“命运”变量。希望这对你有意义。 – Godinall

+0

@Padarom我不知道,它根本无法正常工作,它有时会阻止,错误或滞后,我不知道为什么。 – wonderwhy

回答