Oye*_*yed 24 css web-applications
我正在创建一个iPhone Web应用程序,你现在,因为iOS5,能够使用position:fixed; 标题等
虽然它有效但是如果你向上滚动页面的顶部,它会显示通常的灰色区域一段时间,然后你就不能再滚动了
有没有办法阻止这种滚动?我尝试过像溢出这样的东西:隐藏; 但我似乎找不到任何东西.
PS我只想要一件事停止滚动,我有一个名为#container的div,我仍然希望能够滚动.
Jar*_*lin 16
在回顾了几个解决方案之后,我开始创建一个自定义解决方案:
http://jaridmargolin.github.io/bouncefix.js/
bouncefix.add致发光(EL)
应用修复,以便在滚动极端时,给定元素不再导致全身弹性反弹.
bouncefix.remove致发光(EL)
移除所有负责修复全身弹性反弹的侦听器/观察者.
Scrollfix是一个良好的开端,但我发现了几个问题:
它使用与scrollfix类似的方法.当您处于其中一个滚动极值时会发生此问题.在touchstart上,我们会看看我们是处于顶部极端还是底部极端,如果我们位于顶部则添加1px,如果我们位于底部则添加1px.
不幸的是,这个技巧只有在我们能够设置scrollTop值时才有效.例如,如果内容尚不可滚动,则只有1个列表项,整个主体将再次滚动.Bouncefix.js将通过使用事件委派和在任何时候触发touchstart时检查scrollHeight对offsetHeight来处理幕后的所有这些.在没有可滚动内容的情况下,使用e.preventDefault()阻止容器上的所有滚动;
Jia*_*aro 11
什么对我有用:
html, body, .scrollable {
overflow: auto;
-webkit-overflow-scrolling: touch;
}
Run Code Online (Sandbox Code Playgroud)
加(使用jQuery ...)
$(function() {
$(document).on("touchmove", function(evt) { evt.preventDefault() });
$(document).on("touchmove", ".scrollable", function(evt) { evt.stopPropagation() });
});
Run Code Online (Sandbox Code Playgroud)
重要的是evt.stopPropagation()
呼叫使用委托,因为它也被捕获在文档上但在最后一秒被取消.
实际上,这会捕获touchmove
文档上的所有事件,但如果原始事件是从.scrollable
我们冒泡stopPropagation
而不是取消事件.
Ben*_*ton 10
尝试将它放在JS文件的顶部..
document.ontouchmove = function(event){
event.preventDefault();
}
Run Code Online (Sandbox Code Playgroud)
这将阻止您完全滚动页面,因此您将无法在顶部看到"灰色区域".
更新:
这个问题对很多人来说都很痛苦,但这是由bjrn创建的可靠解决方案:
演示: http ://rixman.net/demo/scroll/
这里有关于它的讨论:https://github.com/joelambert/ScrollFix/issues/2
这最初是由ryan在回答我的一个问题时发布的:防止touchmove默认父母但不是孩子.
我希望能帮助一些人.
原始答案:
我实际上正在研究完全相同的问题,我遇到过这个问题:
https://github.com/joelambert/ScrollFix
我已经尝试过了,它几乎完美无缺.如果你将所有代码复制到一个演示中并在iOS上进行操作,除非你抓住黑色条并尝试滚动它,否则你将看不到灰色背景.但是,应该很容易使用Ben提供的代码来防止这种情况发生(preventDefault()).
希望有所帮助(这绝对帮助了我!)将:)