2014-02-08 84 views
0

在我的网页上,我有一个元素$('。detailViewHandle'),它根据窗口的滚动位置调整其位置。由于弹性滚动(我也看到称为“橡皮筋”滚动),我遇到了问题;如果用户滚动速度超出页面限制,元素的位置就会被抛弃。我试图解释为当用户滚动了页面的限制通过检查以下条件:Chrome中的“橡皮筋”滚动问题

$(window).scrollTop() > 0 

$(window).scrollTop() + $(window).height() < $(document).height() 

下面是完整的代码:

$(window).scroll(function(){ 
    var offset = 332; 
    var scrollTop = $(window).scrollTop(); 
    var scrollBottom = $(window).scrollTop() + $(window).height(); 
    if(scrollTop > 0 && scrollBottom < $(document).height()){ 
     $('.detailViewHandle').css('top', $(window).height()-$(window).scrollTop()-$('.projectOverviewPhoto').height()+$('.detailViewHandle').height()/2-offset); 
    } 
}); 

有没有办法完全禁用弹性滚动Chrome上的OSX?我似乎没有在Firefox的这个问题。

我也不能设置溢出:隐藏的身体和HTML(我已经看到在其他答案),因为我要求溢出是可见的部分页面。

回答

1

它最终是一个相当简单的修复。事实证明,滚动有一些滞后现象,所以scrollTop可能会从150跳到0,从而导致div在页面上的位置不正确。通过设置条件来响应scrollTop> = 0时,我能够解决这个问题。

if(scrollTop >= 0 && scrollBottom <= $(document).height()){