我不想让我的网站内容在用户点击页面边缘时四处晃动,我只想让它停下来。
我看到的无处不在的javascript解决方案是:
$(document).bind(
'touchmove',
function(e) {
e.preventDefault();
}
);
但是这完全阻止了滚动。有没有办法只去除弹跳。最好是用CSS或 meta标记,而不是JS,但是任何有效的方法都可以。
我不想让我的网站内容在用户点击页面边缘时四处晃动,我只想让它停下来。
我看到的无处不在的javascript解决方案是:
$(document).bind(
'touchmove',
function(e) {
e.preventDefault();
}
);
但是这完全阻止了滚动。有没有办法只去除弹跳。最好是用CSS或 meta标记,而不是JS,但是任何有效的方法都可以。
8条答案
按热度按时间okxuctiv1#
我必须补充另一个答案。我的第一个方法应该工作,但是,有一个iOS的错误,它仍然bumbs整个页面,即使eidostoppropagation.
mikeyUX找到了一个解决方法:https://stackoverflow.com/a/16898264/2978727我想知道为什么他只是得到几个点击这个伟大的想法...
下面是我在案例中使用他的方法的方式:
xa9qqrwz2#
通过防止文档的默认行为来禁用退回:
通过防止触摸达到文档级别(您将阻止滚动)来允许滚动:
注意这两者之间的区别:
StopPropagation应该是你在这里的选择!这里有一个非常好的解释:http://davidwalsh.name/javascript-events
编辑:同样的问题,同样的解决方案:在iOS 5上移动和滚动
Edit 2:修复了在方法后添加括号的变量名称中的排印错误
kupeojn63#
如果应用于桌面浏览器,不需要任何JavaScript代码,只需几行CSS代码:
6ioyuze24#
我尝试了很多不同的方法,我发现在这里stackoverflow,但iNoBounce是真正为我工作的东西:https://github.com/lazd/iNoBounce
我只是把它包含在我的索引中。html:
cgvd09ve5#
This library是我的场景的解决方案。简单的使用方法只是包括库和初始化在你想要的像这些;
如果你只想防止在一个元素而不是整个页面上反弹,你可以这样做:
hgb9j2n66#
找到了一个对我有效的代码,我相信它也会对你有效。
解决方案如下所示:http://apdevblog.com/optimizing-webkit-overflow-scrolling/
基本上,你需要有这样的js代码:
然后,使用class=“scrollable”创建可滚动的div。
3df52oht7#
在尝试了这些建议并阅读了几篇文章之后,我的解决方法是使用CSS属性〈overflow-x:隐藏;〉在有问题的元素/容器上。
kq0g1dla8#
iOS16开始支持css的过卷行为。如果你的目标是〉iOS16的设备(包括它的WKWebview),防止过卷反弹,解决方案很简单
添加以下CSS
在iOS 16及更高版本中测试。