2011-08-06 30 views
2

我发现了一些奇怪的(?)行为,当我动画变换和左/顶部属性。我使用jQuery +一些帮助器来处理变换(它只是添加了供应商前缀并做了一些修复,这些修复不应该成为我所说的问题的原因)。所以,jquery工作得很好,并且工作得很好。当您分别制作变形比例和左/上的动画时,它同样可以工作,但不会在您做到这一点时融合在一起。Webkit重绘问题:变换比例尺+位置变化

这里是我的演示例子:http://noname.vrn.ru/transform/test.html

正如你可以动画这两个属性的变化,但位置属性不会在屏幕上实现过程中看到 - http://vns.ru/screenshots/transform-20110806-140111.png。接下来,当动画完成时,您可以更改窗口大小,并且块会保持在动画期间应该保持的新位置。所以,这意味着在调整大小后,'repaint'过程和元素会改变它的位置。但重绘过程也会在每次动画步骤时发生,那么,为什么'左'属性的新值不适用?

我已经看到了在Chrome 12这个问题我也有在Safari 5.0.x的测试,有没有问题,有第一次,然后他们发布5.1和新版本中,我们可以看到同样的问题,因为在Chrome中。在FF4-5中,它工作正常。

任何人都可以向我解释的WebKit浏览器这种行为?

+0

这似乎在Chrome 13以做工精细 - 虽然我可以看到它不会在Safari 5.1的工作。 –

回答

9

您需要触发层上的硬件加速:

#block { 
    -webkit-transform-style: preserve-3d; 
} 
+0

谢谢!这让我失望了。我正在燃烧额外的周期显示/隐藏div,迫使他们重画。这太有效率了 – gthmb