我建立一个移动应用程序的IOS,使用HTML5。 我使用“-webkit-溢出滚动:触摸”来获得本地惯性滚动,但它是非常错误。 我已经解决了没有呈现内容的问题,直到停止滚动,而是一个持续的错误是这样的:
当我尝试向上和向下滚动,什么都不会发生,但是当我试图水平滚动,内容垂直滚动(离轴90度)。 如果我浏览围绕我的应用程序,并回到页面时,它有时会被固定。 此外,有时也不会在所有的,尽管是完全的内容滚动。
从我GOOGLE了,共识似乎是,苹果是注意到了这个错误,并没有很快修复它的任何时间的打算。 有没有人找到了一个解决方案,使-webkit-溢出滚动才能正常工作?
我也有这个bug奋斗了几个月。 我发现最好的描述是:
https://bugs.webkit.org/show_bug.cgi?id=87391
它说,它发生在当页面有一个iframe,内容从Javascript设置。 我目前的解决办法中的图形食品1.6版是使用iScroll4明确地滚动页面,而不是使用触摸滚动。 因为JavaScript是单线程的,这可能是缓慢的,如果你也进行动画或后台加载内容。
使用节点:我遇到同样的问题-webkit-overflow-scrolling: scroll
,将间歇性地向上/向下滚动只用左/右滚动手势。
下面是我发现可能的原因:
- 本iframe中页面上的任何位置,可见或其他方式( 源 )
-
visibility: hidden
施加到滚动节点的任何父( 源 )
然而,这些情况都不存在于我的web应用程序。 我有一个滚动的<ul>
纯CSS模态对话框,我写它使用了巧妙的特技添加透明底层的内部-的::after
与伪元素position: fixed
。
当我删除了position: fixed
从伪元素,这个问题就走了! 当然,这使我的巧招没用,但得知这个错误可以通过这种情况下被触发这很有趣。
设备:的iOS 5.1.1于2012年的iPad 3(视网膜)
有问题的代码:
/* Underlay */
.dialog::after {
z-index: -1;
position: fixed; /* <--- This was the problem! */
top: 0;
left: 0;
right: 0;
bottom: 0;
background-color: rgba(0,0,0,0.4);
content: "";
}
TL; DR:如果包含元件具有固定的位置伪元素,除去它可以解决您的滚动的问题。
我知道,这个问题是慈祥的老人,但我不得不作出在iOS 5,我的网站的工作不幸的是我无法删除,也没有更换iframe中。 我注意到iframe的存在而引起的问题,只有当它是这是彪顺利滚动元素之前渲染。 附加的iframe到文档后面(与-webkit溢出滚动元件之后:触摸)固定的问题:)