为所有元素指定css转换参数是一种糟糕的做法还是对性能不利



在我的网站(简单的多页wordpress网站(上,我对所有需要转换的元素使用相同的css转换类型,例如transition: something .2s ease-in-out 0s。在为不同的元素写了50多次相同的规则之后,我认为写可能是个好主意

*, *:before, *:after {
transition: none .2s ease-in-out 0s;
}

然后仅为需要具有转换的每个元素指定CCD_ 2。注意,在通配符声明中,我将transition-property指定为none,而不是默认的all,这意味着不应将转换应用于所有元素。

现在我的问题是——这是一种糟糕的做法,还是对表现不利?在我的网站上,它似乎运行得很好,并提供了足够的页面速度结果,但我有一台功能强大的笔记本电脑和手机,带有最新版本的浏览器。我只是不确定css引擎在计算方面如何处理通配符转换声明。

简短的答案是也许。

答案很长:

只要你只使用在渲染生命周期的绘制或合成部分发生的过渡,你就应该没事。如果开始尝试为渲染生命周期中样式或布局部分的事物设置动画,则开始变得危险。

浏览器已经非常努力地确保某些属性总体上具有性能,并赋予它们GPU加速的能力。我们在这里谈论的主要属性是:

复合层:

  • 变换(所有类型(
  • 不透明度

油漆层:

  • 颜色

您想尝试并使所有转换都只使用这些。如果不这样做,您将经历显著的性能下降。因此,只在这些属性上设置动画被认为是最佳做法。

因此,请记住,如果要应用通配符选择器来转换内容,请确保在不同css类中更改的属性使用的属性利用了渲染生命周期中的合成/绘制部分。

就我个人而言:我会继续根据需要逐类指定转换,因为我不想冒险影响那些没有明确需要动画的东西的性能。

这是一篇非常棒的文章(为媒体链接道歉(

相关内容

最新更新