我为 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 行代码。
这是我在此的头一篇博文。要温柔。