性能 工具突出显示具有红色三角形的长任务,以指示main线程上花费的时间太长且性能缓慢:

在性能记录中,其中一些长时间运行的任务可能是 “重新计算样式 ”事件。 这些事件跟踪浏览器循环访问页面上的 DOM 元素所需的时间,查找与给定元素匹配的所有 CSS 样式规则,然后基于这些规则计算元素的实际样式。 每当 CSS 规则的适用性发生更改时,都需要重新计算这些样式,例如:

  • 元素添加到 DOM 或从 DOM 中删除。
  • 元素的属性已更改,例如 class id
  • 发生用户输入,例如鼠标移动或焦点更改,这可能会影响 :hover 规则。
  • 长时间运行的 “重新计算样式” 事件时,可以使用 “选择器统计信息” 功能来了解哪些 CSS 选择器占用的时间最多,从而导致性能降低。

    如何使用选择器统计信息

    若要在 重新计算样式 事件期间查看 选择器统计信息 ,请执行以下操作:

  • “性能 ”工具中,单击“ 捕获设置” ( “捕获设置”图标 ) 。

  • 单击“ 启用高级呈现检测 (慢) ”以打开设置。 请注意,此设置会增加性能录制的开销,因此仅当需要录制 选择器统计信息 和其他呈现信息时,才应将其保持打开状态。

  • 单击“ 记录 ”并运行要针对网站或应用改进的方案。

  • 单击“停止”

  • 找到 “重新计算样式 ”事件并单击它。

  • “性能 ”工具的底部,单击“ 选择器统计信息 ”:

    性能 工具的 “选择器统计信息 ”部分显示:

  • CSS 选择器的表。
  • 浏览器计算样式规则所花费的时间。
  • 选择器匹配的元素数。
  • 分析选择器统计信息

    单击列标题,可以按升序或降序对 选择器统计信息 表中的数据进行排序。 例如,按降序对 “运行时间” (μs) 列进行排序,以查看所选的 “重新计算样式 ”事件中哪些选择器占用的时间最多。

    一般情况下,如果你发现一个 CSS 选择器在浏览器上花费了很长时间进行计算,并且多次匹配,那么这是一个很好的候选项,可以尝试改进。 尝试更改选择器,以便计算和匹配页面上较少的元素所需的时间。 如何改进 CSS 选择器取决于特定用例。 重复上一部分中的步骤,确认更改是否有助于缩短 “重新计算样式 ”事件的持续时间。

  • 性能工具简介 - 在 DevTools 中分析运行时性能的简介。
  • 性能特征参考 - 涵盖 性能 工具中的许多功能。
  • CSS 选择器性能的真相
  •