我正在尝试学习编写更高效的 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>
我现在明白浏览器从右到左运行 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>
(假设我尽可能使用继承,但通常仍需要对树下的最后一个元素进行特定控制)
让我怀疑的是:在整个页面中的元素上打印类名所产生的所有额外 HTML 膨胀是否会抵消避免嵌套 CSS 子选择器所带来的性能提升?我习惯于尝试编写更少的 HTML,而这种做法与它背道而驰。任何见解将不胜感激。