我只想在Safari(OSX Lion)中调整弹性滚动/弹跳效果.
我找到了overflow: hidden在css中为body 设置的解决方案,但正如预期的那样它只会禁用滚动条,所以如果网站比屏幕"更长",你将无法滚动!
欢迎任何解决方案或提示!谢谢!
我用iOS和Android的jQueryMobile创建了一个网站.
我不希望文档本身滚动.相反,只有一个区域(一个<div>元素)应该是可滚动的(通过css属性overflow-y:scroll).
所以我通过以下方式禁用文档滚动:
$(document).bind("touchstart", function(e){
e.preventDefault();
});
$(document).bind("touchmove", function(e){
e.preventDefault();
});
Run Code Online (Sandbox Code Playgroud)
但是,无论是否overflow:scroll设置,这也将禁用文档中所有其他元素的滚动.
我怎么解决这个问题?
我正在寻找一种方法来阻止Chrome和Safari中OS X上发生的弹性滚动.
如果您不明白我的意思,那么当您在页面位于顶部时向上滚动,或在页面位于底部时向下滚动,并且在页面后面显示灰色背景.
有一个单页应用程序的CSS解决方案,您只需添加overflow:hidden到html或body
但是,我需要能够滚动.
我已经提出了一个使用Javascript(JQuery)的解决方案,但它仅用于滚动传递到顶部,并且仅适用于chrome.此外,它在Safari中有点儿麻烦.
$(window).on('scroll', function(e){
scrollAmount = $(this).scrollTop();
if(scrollAmount < 1){
$(this).scrollTop(1);
}
});
Run Code Online (Sandbox Code Playgroud)
所以这只是检查用户滚动低于1意味着他们尝试向上滚动通过页面结束的位置.我试过0但是没用.我一直无法找到一种方法来检查用户滚动是否通过页面底部.
那么有什么想法?
编辑:
$(window).on('scroll', function(e){
scrollAmount = $(this).scrollTop();
if(scrollAmount < 1){
$(this).scrollTop(1);
}
if(scrollAmount > $(document).height() - $(window).height()){
$(this).scrollTop($(window).height());
}
});
Run Code Online (Sandbox Code Playgroud)
现在我已经添加了一个检查,如果我们滚动浏览页面的底部.这种方法不起作用,它非常不合理地弹跳.