Структура объявления css стиля

CSS GuideLines, часть 1. Синтаксис и форматирование

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

  • Разработчик должен писать поддерживаемый код;
  • Разработчик должен писать прозрачный, читаемый код;
  • Разработчик должен писать масштабируемый код.
Важность руководства по оформлению кода
  • разрабатывают и поддерживают продукты в течение определенного времени;
  • имеют разработчиков с разным уровнем умений и с разными специальностями;
  • имеют определенное количество разработчиков, постоянно работающих над чем-либо;
  • регулярно нанимают новых разработчиков;
  • имеют определенное количество исходников, с которыми постоянно работают разные люди.
  • Установление стандарта качества кода для всех исходников;
  • Обеспечение согласованности между исходниками;
  • Следование стандартам всеми разработчиками;
  • Увеличение продуктивности.
Дисклеймер

CSS StyleGuide — это сборник обязательных к применению техник и методологий. Это всего лишь сборник рекомендаций, проверенных на моем личном опыте. Применять их или нет — решать уже вам.

Синтаксис и форматирование

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

Чистый код дарит ощущение чистоты. С чистым кодом намного приятнее работать, такой код подталкивает других членов команды также соблюдать стандарты написания кода. Грязный код ужасен и отвратителен, с ним никому не захочется работать.

  • 4 пробела для отступов. Именно пробелы, а не таб;
  • Строки не длиннее 80 символов;
  • Мультистрочный CSS;
  • Эффективное использование пустого пространства.
Разбиение на несколько файлов

После стремительного роста популярности CSS-препроцессоров многие разработчики стали чаще разбивать свой CSS-код на отдельные файлы. Даже если вы не используете препроцессоры, было бы хорошо поместить самостоятельные части кода в отдельные файлы, а затем соединять их в один файл при сборке проекта (например, с помощью Grunt или Gulp).

Читайте также:  Аналог вектора в питоне

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

Таблица содержимого

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

Например, самый простой вариант оглавления — добавить название раздела и его описание:

/** * CONTENTS * * SETTINGS * Global. Globally-available variables and config. * * TOOLS * Mixins. Useful mixins. * * GENERIC * Normalize.css. A level playing field. * Box-sizing. Better default `box-sizing`. * * BASE * Headings. H1–H6 styles. * * OBJECTS * Wrappers. Wrapping and constraining elements. * * COMPONENTS * Page-head. The main page header. * Page-foot. The main page footer. * Buttons. Button elements. * * TRUMPS * Text. Text helpers. */ 

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

Ширина строки в 80 символов
  • Возможность держать перед собой сразу несколько открытых файлов, размещенных друг возле друга;
  • Возможность просматривать CSS на таких сайтах, как Github, или в окне терминала;
  • Обеспечение комфортной длины строки для добавления комментариев.
/** * Я — очень длинный комментарий. Я детально описываю CSS-код подо мной. Я * настолько длинный комментарий, что я превышаю лимит в 80 символов, * поэтому я разбит на несколько строк. */ 

Следует отметить, что есть и исключения для этого правила — например, строки с длинными URL-адресами.

Именование секций кода

Каждый крупная секция CSS-кода должна начинаться так:

Добавление символа «#» в начале названия секции позволит нам выполнять поиск по файлу намного быстрее. Есть вероятность того, что запрос «SECTION TITLE» вернет много результатов, в то время как запрос с решеткой в начале вернет нам только один нужный результат. Также стоит оставлять пустую строку между названием секции и первым селектором.

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

/*------------------------------------*\ #A-SECTION \*------------------------------------*/ .selector <> /*------------------------------------*\ #ANOTHER-SECTION \*------------------------------------*/ /** * Comment */ .another-selector <> 
Анатомия CSS-правил

Прежде чем поговорить о том, как разработчикам следует писать CSS-правила, давайте уточним используемую терминологию:

  • Связанные селекторы на одной строке, несвязанные селекторы на разных строках;
  • Пробел перед открывающей скобкой ( <);
  • Свойства и их значения на одной строке;
  • Пробел после двоеточия, относящегося к свойству;
  • Каждое объявление свойства и его значения на новой строке;
  • Открывающая скобка находится на той же строке, что и последний селектор;
  • Первое объявление свойства находится на новой строке после открывающей скобки;
  • Закрывающая скобка находится на отдельной строке:
  • Каждое объявление имеет отступ в 4 пробела;
  • Точка с запятой находится сразу после значения свойства, без пробела.

Таким образом, пример ниже будет являться неправильным:

  • Табы вместо пробелов;
  • Несвязанные селекторы на одной строке;
  • Открывающая скобка на отдельной строке;
  • Закрывающая скобка на той же строке, что и последнее объявление;
  • Точка с запятой (кстати говоря, необязательная именно в последнем объявлении) в конце последнего объявления не стоит;
  • Нет пробелов после двоеточий.
Мультистрочный CSS
  • Снижение риска появления конфликтов при слиянии объявлений за счет того, что каждое объявление находится на отдельной строке;
  • Более надежные и читаемые diff’ы, потому что одна строка несет только одно изменение.
.icon < display: inline-block; width: 16px; height: 16px; background-image: url(/img/sprite.svg); >.icon--home < background-position: 0 0 ; >.icon--person < background-position: -16px 0 ; >.icon--files < background-position: 0 -16px; >.icon--settings
  • Они по-прежнему соответствуют правилу об одном изменении на одной строке;
  • Они достаточно похожи друг на друга, чтобы объединить их в один блок кода; их не надо читать с той же тщательностью, что другие самостоятельные правила.
Отступы

Так же, как вы делаете отступы для объявлений, делайте и отступы у связанных наборов правил:

Благодаря этому разработчик сразу увидит, что .foo__baz располагается внутри .foo__bar, который, в свою очередь, находится внутри .foo. Такой способ имитации DOM многое рассказывает разработчикам о том, где класс располагается, благодаря чему не приходится каждый раз открывать разметку и искать нужный кусок кода.

Отступы в Sass

Sass предоставляет возможность вкладывать правила друг в друга. Это означает, что написав такой scss-код:

… мы получим следующий скомпилированный CSS:

Работая с Sass, следует использовать те же 4 пробела для отступов, а также оставлять пустую строку перед и после вложенных правил. К слову, вложенности в Sass следует избегать. Об этом еще будет сказано в следующих частях.

Выравнивание

По возможности, выравнивайте схожие строки со свойствами:

Это в разы упрощает жизнь разработчикам, чьи текстовые редакторы поддерживают редактирование нескольких строк одновременно.

Разумное использование пустого пространства
  • Одну пустую строку между связанными наборами правил;
  • Две пустые строки между несвязанными наборами правил;
  • Пять пустых строк между секциями.
/*------------------------------------*\ #FOO \*------------------------------------*/ .foo <> .foo__bar <> .foo--baz <> /*------------------------------------*\ #BAR \*------------------------------------*/ .bar <> .bar__baz <> .bar__foo <> 

Никогда не должно получаться так, что пустой строки между правилами нет. Пример ниже неправильный, так делать не стоит:

HTML

Учитывая тесную связь между HTML и CSS, с моей стороны было бы неправильно не оговорить некоторые моменты относительно разметки.

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

 Но предпочтительно использовать такой код:

При записи нескольких значений в атрибут, разделяйте эти значения двумя пробелами:

Когда несколько классов связаны друг с другом, рассмотрите способ их обрамления в скобки:

Это не строгая рекомендация, и я все еще тестирую это в своих проектах, но такой способ влечет за собой ряд преимуществ. Подробнее об этом читайте в статье «Группирование связанных классов в разметке».

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

Разделяйте независимые, но близко связанные части разметки одной пустой строкой:

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

Материалы для дополнительного изучения

Источник

Оцените статью