我正在寻找一种方法来防止 Chrome 和 Safari 中 OS X 上发生的弹性滚动。
如果你不明白我的意思,那就是当页面位于顶部时向上滚动,或当页面位于底部时向下滚动,并且页面后面会显示灰色背景。
对于单页应用程序有一个 css 解决方案,您只需添加overflow:hidden
to the html
or body
但是,我需要能够滚动。
我想出了一个使用 Javascript (JQuery) 的解决方案,但它仅适用于滚动到顶部,并且仅适用于 chrome。另外,它在 Safari 中也有点问题。
$(window).on('scroll', function(e){
scrollAmount = $(this).scrollTop();
if(scrollAmount < 1){
$(this).scrollTop(1);
}
});
所以这只是检查用户滚动到 1 以下,这意味着他们尝试向上滚动到页面结束的位置。我尝试了 0 但没有成功。
我无法找到一种方法来检查用户滚动是否经过页面底部。
那么有什么想法吗?
Edit:
$(window).on('scroll', function(e){
scrollAmount = $(this).scrollTop();
if(scrollAmount < 1){
$(this).scrollTop(1);
}
if(scrollAmount > $(document).height() - $(window).height()){
$(this).scrollTop($(window).height());
}
});
现在我添加了一个检查,检查我们是否滚动到页面底部。但这种方法不起作用,它的弹跳非常不优雅。
当你快速向上滚动到顶部时,弹性浏览器会导致滚动顶部变为负值。使用 st
$(window).on('scroll',function(){
var dh = $(document).height(),
wh = $(window).height(),
st = $(window).scrollTop();
if (st <= 0) {
$(this).scrollTop(0);
} else if (st + wh >= dh) {
$(this).scrollTop(dh);
}
});
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)