Есть много вещей, которые необходимо учитывать при оптимизации скорости рендеринга страницы. Селекторы CSS и разметка HTML - это лишь некоторые из них.
Вот как это сделать, основываясь на передовом опыте, изложенном в статье, которую вы читали, и в других.
1. Разметка вашего контента
Используйте основные HTML-элементы, если вам не нужна дополнительная конкретность.
<h1>Some heading</h1>
<p>Some paragraph</p>
<h1>Some heading</h1>
<p>Some paragraph</p>
<div class="module">
<h1 class="title">Some heading</h1>
<p>Some paragraph</p>
</div>
<div class="module featured-module">
<h1 class="title">Some heading</h1>
<p class="content">Some paragraph</p>
</div>
2. Стили базовых элементов
Эти селекторы быстрые, потому что у них нет предков, которые должны быть сопоставлены. В идеале они подходят для большинства стилевых потребностей страницы.
h1 { font-size: 20px }
p { font-size: 14px }
.title { font-family: Georgia }
.module { color: orange }
Важно узнать, какие свойства наследуются дочерними элементами стилизуемого элемента. Например, когда свойство color
определено для класса .module
, цвет будет использоваться для всех дочерних элементов (если не существует более определенных правил).
3. Переопределение стилей базовых элементов
Если у вас много тегов <p>
на странице, и вы хотите переопределить только стили нескольких, тогда присвойте этим нескольким тегам <p>
класс и используйте класс для нацеливания стилей на эти несколько тегов <p>
.
.module .title { color: red }
.featured-module .title { color: blue }
Примечание: Если строка селектора соответствует специфичности и идет после переопределения правила, то она применяется без какой-либо дополнительной специфичности.
Использование класса позволяет вам повторно использовать стили для других элементов в вашем HTML-документе. Вы также можете использовать идентификатор в качестве селектора предков для условного применения стилей, но тогда вы потеряете преимущество в скорости для идентификатора. Идентификаторы обычно используются в качестве единственного элемента в строке сектора:
#login-module { color: tan }
Если у вас много <p>
тегов и вы хотите переопределить половину из них (или много разных групп из них), вы должны принять решение либо A. добавить к ним классы, либо B. жертвовать скоростью страницы (немного?) И использовать селекторы потомков:
.featured-module p { }
.category-module p { }
Проведите собственное тестирование, чтобы определить, является ли сокращение времени отображения страницы достаточно значительным, чтобы не использовать это решение. Если это не так много (или незаметно), то это решение может упростить ваш код и время разработки.
Резюме
Существует много способов разметки и стилизации контента. Выберите стратегию, которая лучше всего подходит для нужд вашего проекта, и адаптируйте ее по мере необходимости в зависимости от изменений в вашем проекте Использование лучших практик всегда разумно, но знание того, почему они являются «лучшими практиками», также важно для того, чтобы знать, когда следует нарушать правила.
Примечание: Скорость селекторов для JavaScript не такая, как в CSS. Проверьте эти тесты: http://mootools.net/slickspeed/