【问题标题】:Issue with scrolling in iOS 5 using -webkit-overflow-scrolling使用 -webkit-overflow-scrolling 在 iOS 5 中滚动的问题
【发布时间】:2011-12-21 00:47:43
【问题描述】:

我有一个固定高度的 HTML 页面,div 应该是可滚动的(只能垂直滚动)。在 iOS 5 中,这可以通过以下方式实现:

overflow-y: auto;
-webkit-overflow-scrolling: touch;

div 包含一个包含大约 10 个项目的无序列表。

滚动有效,但有时它只有在我的手指对角线甚至水平滑动时才会滚动,而不是垂直滑动。

我想知道是否有人遇到过这个问题。我不想认为这是 iOS5 中的一个错误,但我无法弄清楚我做错了什么,因为大部分时间它都可以正常工作。

【问题讨论】:

标签: ios5 mobile scroll overflow


【解决方案1】:

我遇到了完全相同的问题。这个问题原来是由我的网站用来跟踪历史更改和加载脚本的两个零大小 iframe 引起的。删除这些解决了这个问题。我向苹果提交了一个错误,等待他们的回复。

检查您的页面上是否有任何 iframe,它们可能是原因。

【讨论】:

  • 你从苹果那里听说过什么吗?或者您是否找到了除删除 iframe 之外的另一种解决方法?我在尝试让 -webkit-overflow-scrolling 与 vaadin 一起工作时遇到了这个问题。
  • 碰到这个问题,看到类似的问题:stackoverflow.com/questions/10718296/… 在纵向和横向之间翻转似乎可以解决问题。虽然不知道原因(我的页面上没有 iframe)。
  • 翻转、3d 变换和 iframe 移除对我没有任何作用。开始赏金
  • 在我花了几个晚上解决这个错误之后,删除不可见的iframe 解决了这个问题。先生,你真棒。
【解决方案2】:

您需要将此 css 设置放入您的 css 文件 - 您使用 content_css 配置变量加载的文件:

body {
    -webkit-transform: translate3d(0, 0, 0);
}

另一种选择是直接从tinymce初始化的代码中设置css:

$(tinymce.activeEditor.getBody()).css('-webkit-transform', translate3d(0, 0, 0));

【讨论】:

    【解决方案3】:

    我找到了一个 hacky 解决方案,但它需要 javascript...

    我在通过 ajax 加载可滚动节点并用 js 附加它们时偶然发现了这个问题。

    我发现用 js 重置 -webkit-overflow-scrolling 属性节省了一天

    JS代码:

    var myDiv = $('.myDiv');
    myDiv.css('-webkit-overflow-scrolling','auto');
    function fn(){
        myDiv.css('-webkit-overflow-scrolling','touch');
    }
    setTimeout(fn,500);
    

    我们不得不调用setTimeout 方法真的很糟糕,但这是我能想到的唯一方法......

    编辑:注意display:none

    Webkit overflow scrolling touch CSS bug on iPad

    【讨论】:

    • 谢谢!这很 hacky,但就我而言,这首先是一个 iOS 错误。
    【解决方案4】:

    我在 iOS 5.1.1 中遇到了同样的问题,结果证明是由于 ::after 伪元素和 position: fixed 位于包含显示“错误滚动轴”行为的可滚动列表的元素上. Details here.

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-03-14
      • 1970-01-01
      • 2012-12-17
      • 2012-08-31
      • 2018-03-21
      • 2012-04-05
      相关资源
      最近更新 更多