是的,我知道。这个问题之前已经被问过一千次了。感谢你们所有人,我终于找到了一个解决方案,最终在 更新到 iOS 8 后 - 似乎没有任何效果!
iOS7 中最适合我的是什么
Css
html, body, .scrollable {
overflow: auto;
-webkit-overflow-scrolling: touch;
}
jQuery
$(function() {
$(document).on("touchmove", function(evt) { evt.preventDefault() });
$(document).on("touchmove", ".scrollable", function(evt) { evt.stopPropagation() });
});
我尝试过的其他解决方案:
全部在这里:iPhone Web App - 停止正文滚动 https://stackoverflow.com/questions/8488447/iphone-web-app-stop-body-scrolling
和这里:iOS Safari – 如何禁用过度滚动但允许可滚动 div 正常滚动? https://stackoverflow.com/questions/10238084/ios-safari-how-to-disable-overscroll-but-allow-scrollable-divs-to-scroll-norma
和这里:禁用 iOS 过度滚动但允许正文滚动 https://stackoverflow.com/questions/10546857/disable-ios-overscroll-but-allow-body-scrolling
和更多 ...
那么,有谁知道iOS8兼容禁用body越界滚动的方法/ 反弹效果(除了应用于phonegap项目的本机解决方案之外)?
所以这个问题也困扰了我很多年,我终于找到了解决方案!
在 iOS8 之前,Safari 没有子像素渲染。现在有了子像素渲染,报告的元素高度以子像素小数形式给出,滚动高度是实际渲染的整数高度。如果您以百分比指定大小,则可能会导致高度比应有的小一小部分像素。
而不是测试
if (elem[0].scrollHeight > height) {
e.stopPropagation();
}
对此进行测试将为您提供匹配的四舍五入数字。
if (elem[0].scrollHeight > Math.ceil(height)) {
e.stopPropagation();
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)