Webkit渲染元素的怪癖与“position:fixed”和“-webkit-backface-visibility:hidden;”?

时间:2012-07-04 10:32:03

标签: css ipad google-chrome webkit mobile-safari

最近我在Webkit中遇到了渲染问题,我怀疑它是Webkit引擎的一个错误。但我没有足够的信心这么说。所以我想在这里问一下你的想法。

我用纯文本描述案例有点困难,所以我在这里准备了一个片段: http://jsfiddle.net/2eQXa/1/

首先,您可以看到带有红色边框的黄色背景。这不是< body>的背景。标签但是< div> id为“背景”,宽度和高度均为100%。默认情况下,它链接到“backdrop-no-problem”类。还有一个包含一些图像的水平列表。该列表被绿色边框包围。在列表中,有一些维基百科徽标用虚线红色边框包裹。

我使用以下3种设备测试了该页面: 1. Windows 7上的Chrome 21 2.第一代iPad上的移动游猎(运行iOS4,我称之为iPad1) 3.“新”iPad上的移动游猎(运行iOS5,我称之为iPad3)

尝试点击“向右”或“向左”滚动列表。非常好。

要重现我的问题,请先点击“问题#1”。这会将背景div从“position:absolute”更改为“position:fixed”。然后单击“问题#2”。这将添加“-webkit-backface-visibility:hidden;”元素(添加此样式的原因是为了确保iPad上的流畅动画)。

现在点击“左/右”滚动列表。你应该在所有三个浏览器中看到一个奇怪的行为: 绿色div正确滚动,但不是它的子元素。子元素与滚动父元素的位置“简单地”同步“。这场运动不仅看起来很迟钝,有时甚至会卡住。当滚动动画结束时,子元素将停在错误的位置。您必须将鼠标移到图片上(或在平板电脑上点击它)才能触发更新,以便在正确的位置重新绘制元素。甚至Chrome也表明这种古怪让我觉得这是一个Webkit问题。

iPad3的情况变得更糟。在iPad3中,您无需添加“-webkit-backface-visibility:hidden;” (问题#2)看到这种奇怪的行为。只需添加“position:fixed”(问题#1)即可。奇怪的是,当您在jsFiddle中查看片段时,这不会发生。如果您感兴趣我已将源文件放在pastebin的单个文件中:

http://pastebin.com/i4ARX4mD

在撰写此问题时,我看到了很多关于背面可见性的问题。我已经检查了一些,但没有一个符合我的问题。

欢迎提出意见或建议。谢谢!

(发布更新以解决许多拼写错误)

0 个答案:

没有答案
相关问题