О классах, идентификаторах и контекстных селекторах

Если вам не повезло работать с огромным, низкокачественно разработанным сайтом, шаблоны и CSS которого вы не имеете ни малейшей возможности переработать в соответствии со здравым смыслом и лучшими практиками, вам может потребоваться использовать классы и избегать контекстных селекторов и идентификаторов.

Но практически во всех остальных случаях правильно использованные идентификаторы с контекстными селекторами более предпочтительны, поскольку они более семантичны и легче в отношении пропускной способности интернет-канала.

Что касается контекстных селекторов, то на сайте, разработанном не сотней обезьян, можно безопасно исходить из того, что стили элементов внутри элемента с идентификатором или HTML5-элемента не будут конфликтовать со стилями других элементов, и что те же самые элементы можно оформить иначе, если они расположены внутри элемента с другим идентификатором или другого HTML5-элемента.

В идентификаторе нет ничего неправильного, если он использован уместным образом (семантически, структурно, с толком). Точка зрения, согласно которой класс всегда более предпочтителен, чем контекстные селекторы и семантические, структурные идентификаторы, во многом ошибочна.

Джефри Зельдман (англ.)