javascript - Javascript 中的 "toggling"CSS 会减慢渲染速度吗?

标签 javascript html css performance rendering

我正在调查我的网站速度很慢的一个可能原因:

我有一个经常被调用的 Javascript 函数,它为很多对象确定哪些对象应该可见,哪些应该不可见。它通过添加/删除“隐藏”的 CSS 类来实现。

此功能的工作原理是首先将所有元素设置为“隐藏”,然后遵循一系列规则再次从其中许多元素中删除该类。这在同一个函数中立即发生,没有延迟。

很多时候函数完成后,任何元素都没有实际区别,但它仍然会暂时将元素的类设置为“隐藏”,然后再次将其删除。

类的这种“切换”是否会导致渲染器重新计算实际上没有改变的东西?

编辑:澄清一下:我希望由于 Javascript 是单线程的,渲染器只会在函数完成时响应,而不是在函数中间。如果这是真的,那么从渲染器的 Angular 来看,对象的类没有改变,即使它们实际上是临时更新的。

最佳答案

这取决于 hidden 类的动画。一些属性的动画成本很低,而另一些属性的成本很高,因为浏览器需要做更多的渲染。

动画的低成本属性是:

  • 职位
  • 规模
  • 轮换
  • 不透明度

下图很好地概述了哪些属性在浏览器资源上很容易,哪些成本更高。图表越高,需要的资源就越多。

来源:High Performance Animations

要衡量函数的性能,您可以使用 performance.now()来衡量你的功能需要多长时间。然后,进行一些调整,看看它是否运行得更快。

关于javascript - Javascript 中的 "toggling"CSS 会减慢渲染速度吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51715688/

相关文章:

html - 一般情况下在脚本中使用 CDATA 可以吗?

javascript - 根据选择标签选项显示内容

css - 无法获取字体以在 Wordpress 上使用我的字体

javascript - 使用 ajax 表单的简单 jQuery 就地编辑

javascript - NPM 请求模块 - 正文与 json

html - CSS3 背景颜色有问题

javascript - CSS - 如何定位内容数据标题

javascript - HTML DIV 为子元素设置 Axis 到底部

javascript - 如何将脚本添加到使用 phpmailer 发送的邮件?

javascript:var 在 mozilla 中是 'undefined',在 chrome 上有效