У Ярно Рантанена есть отличная статья с изложением некоторых лучших практик CSS. В частности, я рад видеть, что он первый в списке:
1. Всегда отдавайте предпочтение занятиям
Это просто для того, чтобы убрать очевидное.
Не ориентируйтесь на идентификаторы (например, #header), потому что всякий раз, когда вы думаете, что может быть только один экземпляр чего-либо в бесконечной временной шкале, вы ошибаетесь. Одним из прошлых примеров этого было, когда мы хотели отсеять любые ошибки привязки данных в большом приложении, над которым мы работали. Мы запустили два экземпляра нашего кода пользовательского интерфейса, расположенные рядом в одной и той же модели DOM, оба привязаны к общему экземпляру нашей модели данных. Это было сделано для того, чтобы все изменения в модели данных правильно отражались в обоих пользовательских интерфейсах. Любые компоненты, которые вы, возможно, всегда считали уникальными, такие как панель заголовка, больше не являются таковыми. Между прочим, это отличный ориентир для выявления других тонких ошибок, связанных с предположениями об уникальности. Я отвлекся, но мораль этой истории такова: нет ситуации, когда нацеливание на идентификатор было бы лучше, чем нацеливание на класс, так что давайте просто не будем.
У меня было полдюжины разработчиков, пытавшихся объяснить мне преимущества идентификаторов и… и факт в том, что их просто не было. Нет никакой разницы между классом an и ID, за исключением того, что класс более расширяемый и (я скажу это, хотя я ненавижу это слово) ориентирован на будущее.
Это бесполезный семантический артефакт.
Ознакомиться со всеми 8 правилами можно здесь…