IOS -webkit-溢出滚动的错误轴滚动,或者根本没有(IOS -webkit-overflow

2019-07-31 09:47发布

我建立一个移动应用程序的IOS,使用HTML5。 我使用“-webkit-溢出滚动:触摸”来获得本地惯性滚动,但它是非常错误。 我已经解决了没有呈现内容的问题,直到停止滚动,而是一个持续的错误是这样的:

当我尝试向上和向下滚动,什么都不会发生,但是当我试图水平滚动,内容垂直滚动(离轴90度)。 如果我浏览围绕我的应用程序,并回到页面时,它有时会被固定。 此外,有时也不会在所有的,尽管是完全的内容滚动。

从我GOOGLE了,共识似乎是,苹果是注意到了这个错误,并没有很快修复它的任何时间的打算。 有没有人找到了一个解决方案,使-webkit-溢出滚动才能正常工作?

Answer 1:

我也有这个bug奋斗了几个月。 我发现最好的描述是:

https://bugs.webkit.org/show_bug.cgi?id=87391

它说,它发生在当页面有一个iframe,内容从Javascript设置。 我目前的解决办法中的图形食品1.6版是使用iScroll4明确地滚动页面,而不是使用触摸滚动。 因为JavaScript是单线程的,这可能是缓慢的,如果你也进行动画或后台加载内容。



Answer 2:

使用节点:我遇到同样的问题-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:如果包含元件具有固定的位置伪元素,除去它可以解决您的滚动的问题。



Answer 3:

我知道,这个问题是慈祥的老人,但我不得不作出在iOS 5,我的网站的工作不幸的是我无法删除,也没有更换iframe中。 我注意到iframe的存在而引起的问题,只有当它是这是彪顺利滚动元素之前渲染。 附加的iframe到文档后面(与-webkit溢出滚动元件之后:触摸)固定的问题:)



文章来源: IOS -webkit-overflow-scrolling scrolls on wrong axis, or not at all