Рекомендации по разметке / стилю: как эффективно распределить правила стиля по классам CSS? - PullRequest
6 голосов
/ 29 декабря 2010

Предположим, у меня есть какая-то HTML-страница и соответствующий CSS-файл. Я хотел бы добавить закругленные углы к некоторым элементам. Я хочу чередовать цвета фона на каждом другом разделе. Я хочу добавить состояние наведения для каждого заголовка раздела. И так далее - я продолжаю укладывать, укладывать и укладывать.

Мне приходит в голову, что существует три крайности, когда речь идет о том, «кто, что, когда, где, почему и каким образом» распространять правила CSS по разметке по классу, идентификатору и иерархии.

Extreme # 1: Каждое правило стиля основано на идентификаторе.

Extreme # 2: Каждое правило стиля основано на классе.

Extreme # 3: Каждое правило стиля основано на иерархии DOM.

Очевидно, что дзен интерфейсной веб-разработки будет включать в себя разумный баланс повторного использования классов в сравнении с уникальными правилами и иерархией, поскольку любая из трех крайностей может нанести ущерб производительности браузера, удобству обслуживания и размеру кода. Я думаю. Или я не прав? Как определить, когда необходим новый .class или правила, которые вы хотите применить, могут быть безопасно вписаны в существующее определение? Когда два #id правила достаточно похожи, чтобы вы могли вытянуть общий код в класс? Когда вы «разветвляете» класс (иногда вы сохраняете оригинал и добавляете производные для всех отклоняющихся ситуаций («percolate» в терминах ООП), а в других случаях подталкиваете общие правила к каждому из нескольких непересекающихся отклонений - очевидно, это зависит характер (т. е. количество задействованных правил) в самом отклонении). Есть ли просто обстоятельства для использования чисто иерархических правил?

Вопрос: Существуют ли какие-либо практические правила, регулирующие такого рода дебаты? Каков ваш опыт и / или совет? Существуют ли хорошие статьи, ресурсы, книги, лекции (бонусные баллы за видео в стиле «технические разговоры») или другой контент по этой теме? Я хотел бы, чтобы обсуждение было основано на нескольких ключевых моментах (хотя любые комментарии приветствуются), в произвольном порядке:

  • Поддержка (простота чтения, изменения и добавления кода)
  • СУХОЙ (не повторяйся)
  • Эффективность времени (время загрузки; прогрессивный рендеринг)
  • Эффективность использования пространства (общий размер разметки и связанных стилей)

1 Ответ

3 голосов
/ 29 декабря 2010

Сделайте себе одолжение, посмотрите SASS .

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...