CSS 多子选择器 vs 单标签选择器性能

标签 css performance css-selectors

理论上 CSS 子选择器比标签选择器更有效。但是当你有一个类并且你需要在这个类元素中设置特定标签的样式但它们不是一级子元素时会发生什么?

让我们看一个例子:

.styled-table > tbody > tr > td{
    // Some cell styles
}

对比

.styled-table td{
    // Some cell styles
}

以下哪个是更好的 CSS 性能实践?

最佳答案

根据 MDN : 避免后代选择器。~

The descendant selector is the most expensive selector in CSS. It is dreadfully expensive—especially if the selector is in the Tag or Universal Category.

如果您从逻辑上考虑清楚,使用后代选择器,CSS 引擎将检查父元素(在本例中为 .styled-table)的每个子元素以寻找匹配项(在本例中为td 标签),然后是这些 child 的每个 child 等等。

但是,对于子选择器,您是在告诉引擎要遵循哪条“路径”来寻找匹配项。如果它在路径中的任何一点都找不到匹配项(例如,如果您的 .styled-table 没有 tbody 作为其直接子项之一),那么它将放弃选择器。

关于CSS 多子选择器 vs 单标签选择器性能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36893684/

相关文章:

JavaScript - 在悬停时突出显示一个元素

javascript - 隐藏和显示多个 div

html - 如何使页面的特定部分适合所有分辨率的 100% 屏幕,同时保持向下滚动的能力?

c++ - 使用 std::optional<int> 是否与使用 int 一样有效?

performance - 如何加快启用 CMake 的 C++ 项目的编译时间?

HTML CSS 选项卡控件 - 同一页面上的多个选项卡控件

MyISAM 表的 MySQL 查询性能问题

css - 是否有 CSS 父级选择器?

css - 我应该避免在 CSS 中使用 !important 吗?

css - 用于在另一个元素内插入图标的伪元素选择器