相关疑难解决方法(0)

CSS子选择器性能与类膨胀

我正在努力学习编写更高效的CSS,特别是因为我正在使用一个需要快速渲染的相当复杂的站点.

我习惯在我的HTML/CSS中有很多这样的东西(主要是因为我喜欢可读性):

.spotlight {}
.spotlight ul {}
.spotlight ul li {}
.spotlight ul li a {color: #333;}

<div class="spotlight">
  <ul>
    <li><a href="">link</a></li>
    <li><a href="">link</a></li>
    <li><a href="">link</a></li>
  </ul>
</div>
Run Code Online (Sandbox Code Playgroud)

我现在明白浏览器从右到左运行CSS规则匹配过程,这意味着<a>上面最后一条CSS规则中的元素将首先匹配页面上的每个链接,从而导致性能下降.

因此,从我收集的内容来看,浏览器友好的解决方案将更具体,并使用,例如:

.spotlight {}
.spotlight-link {color: #333;}

    <div class="spotlight">
      <ul>
        <li><a class="spotlight-link" href="">link</a></li>
        <li><a class="spotlight-link" href="">link</a></li>
        <li><a class="spotlight-link" href="">link</a></li>
      </ul>
    </div>
Run Code Online (Sandbox Code Playgroud)

(假设我在可能的情况下使用继承,但通常仍然需要对树中的最后一个元素进行特定控制)

让我怀疑的是:在整个页面中的元素上打印类名称的所有额外的HTML膨胀是否都会抵消避免嵌套CSS子选择器所带来的性能提升?我习惯于尝试编写更少的HTML,这种情况与之相反.任何见解将不胜感激.

html css performance css-selectors

18
推荐指数
1
解决办法
3376
查看次数

标签 统计

css ×1

css-selectors ×1

html ×1

performance ×1