【发布时间】:2014-02-12 00:35:24
【问题描述】:
我为 Android 和 iPhone 编写了一个 JQM Web 应用程序,该应用程序在一个自定义本机容器中运行,该容器附带一堆供应商库,包括一个自定义版本的 iScroll。最近,我们从供应商处升级了库,包括 iScroll。现在,iPhone 用户在某些情况下会看到视觉失真(截图:http://i.stack.imgur.com/mCUyB.png)。滚动后失真会自行纠正。
症状:
- 正在屏幕右侧绘制水平线
- iscroll div 中的元素超出了右侧。 (请注意,div 在左侧有圆形边缘,但在右侧没有。这也会在滚动后自行纠正。
当满足这两个条件时,就会触发失真:
- 下载更大的数据集后,导致更多 DOM 元素附加到 iscroller
- 当用户向后导航时。本质上,当 JQM 页面及其附加元素从隐藏变为可见时。
div iscroll的CSS代码:
element.style {
-webkit-transition: -webkit-transform 0ms;
transition: -webkit-transform 0ms;
-webkit-transform-origin: 0px 0px;
-webkit-transform: translate3d(0px, -131px, 0px) scale(1);
}
更多观察:
- 我怀疑iscroll是因为之前的iscroll版本没有使用-webkit-transform。
- 在 iPhone 上,
-webkit-transform: translate3d是硬件加速的。 - 失真仅在 iPhone 上出现,在 Android 上没有。
不确定我应该提供哪些其他信息。我可以提供 iscroll 的代码,但它是 800 行代码。
这是我在这里的第一篇文章。温柔点。
【问题讨论】:
标签: iphone css animation iscroll webkit-transform