特に、高速にレンダリングする必要があるかなり複雑なサイトで作業しているため、より効率的な 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 を少なく書こうとすることに慣れていますが、この種のことはそれに反します。任意の洞察をいただければ幸いです。