Я пытаюсь научиться писать более эффективный 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, и это противоречит. Любое понимание было бы оценено.