【问题标题】:Are offscreen infinitely-looped CSS animations optimized by the browser?浏览器是否优化了屏幕外无限循环的 CSS 动画?
【发布时间】:2019-09-17 07:56:08
【问题描述】:

是否有针对屏幕外无限运行的 CSS 动画的任何浏览器内优化(无限动画应用于文档中存在/显示的元素,只是不在视图中某个时间)?

为了更直接的讨论,我将提及仅涉及合成的 CSS 动画:仅使用变换和/或不透明度。


如果我们有一个 CSS 动画,它有animation-timing-function: infinite;如果动画元素实际上不在屏幕上/视图中,它如何处理

有一些关于动画的已知场景与此用例无关:

  • 如果将浏览器选项卡推到后台,动画将暂停。 MDN
  • 如果元素从 Document 中移除,动画将被忽略,类似于 display: none;(找不到可引用的源 atm);

如果元素只是“超出滚动范围”,并且用户可以在元素离开屏幕期间随时到达它:

  • 无论元素是否可见,动画是否正常运行,消耗相同?

  • 它是否正常运行,但由于未绘制,过程本身变得更便宜? - 会更有意义。

  • 动画是否完全暂停? - 假设不会,因为浏览器必须知道元素需要再次绘制时的“当前进度”。

  • 或者在满足这些条件时,是否有任何其他浏览器内进程对此进行优化?


非常感谢任何记录在案的答案,或任何对某些资源的重定向,这可以阐明这个问题。


本次讨论将有助于确定:手动删除无限动画(对于屏幕外的元素)是否值得考虑,以获得更好的性能。

【问题讨论】:

  • 有趣的问题。然而,动画可以在离开屏幕时暂停,并根据它进入视野时的启动时间重新开始。不知道是不是这样,只是提到它确实可以跟踪时间。
  • 我相信我从 CSS 人员那里听到了关于它的讨论。但不要回忆“计划细节”。当他们创建解决方案时,我希望将其共享给 Javascript 世界;通过询问浏览器脚本正在处理的元素是否可观看,可以将资源保存在 Javascript 端。

标签: css css-animations


【解决方案1】:

TLDR

只要我们想要动画的属性不触发reflow/repaint,动画就可以被浏览器优化,这意味着更好的性能。

off main thread animation

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-12-18
    • 1970-01-01
    • 2014-07-08
    • 1970-01-01
    相关资源
    最近更新 更多