在Chrome中使用“橡皮筋”滚动问题

时间:2014-02-08 22:30:15

标签: javascript jquery html css scroll

在我的网页上,我有一个元素$('。detailViewHandle')根据窗口的滚动位置调整其位置。由于弹性滚动(我也称之为'橡皮筋'滚动),我遇到了问题;如果用户非常快速地滚动超出页面的限制,则元素的定位将被抛弃。我试图通过检查以下条件来说明用户何时滚动超过页面的限制:

$(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);
  }
});

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

我也无法设置溢出:隐藏为body和html(我在其他响应中看到过)因为我要求溢出对于页面的一部分是可见的。

1 个答案:

答案 0 :(得分:1)

它最终变得非常简单。事实证明滚动有一些滞后,因此scrollTop可能会从150跳到0.这使我的div在页面上的错误位置。通过设置条件以响应当scrollTop>> 0时,我能够解决问题。

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