即使使用快速显卡,3D CSS 动画 -webkit-transform 也会出现不可预测的缓慢性能停滞

mma*_*rin 3 html css 3d webkit transform

我有一个极其复杂的 Web 应用程序,其中包含使用 -webkit-transform 和 -webkit-transition 完成的复杂 60fps 动画。通常有数十个项目同时进行动画处理。当它“达到速度”时,动画看起来很棒,但是当用户给出输入时,动画有时会出现非常明显的“减速”。大部分动画的性能都非常出色,但是当许多项目从静态过渡到移动时,会出现明显的滞后,我无法在 JavaScript 中找到这一滞后。

mma*_*rin 5

这很难追踪,但我已经完全修复了它:

问题似乎是,当没有 3D 变换的对象突然获得 3D 变换时,在将该元素的位图发送到视频卡时会出现“停顿”。当您有很多项目执行此操作时,它可能会非常明显,并将您的 60fps 体验转变为……更少的东西。

答案非常简单:在您的物品上保留“空”3D 变换,即使它们目前不是 3D。这样,图像将尽早传输到视频卡,并且当您需要为它们设置动画时,不会出现很大的延迟。

这将起作用:-webkit-transform:translateZ(1px)

可能有效,但我可以想象它会在未来的版本中被优化(因为它没有可见的效果) -webkit-transform:translateZ(0px)