Оглавление
HTML
Синтаксис
- Для отступов у вложенных элементов рекомендуется использовать два пробела (либо таб, равный двум пробелам). Для правильного форматирования используйте файл .editorconfig в вашем редакторе.
- Теги и их атрибуты пишутся строчными буквами. Для значений атрибутов всегда используются двойные кавычки.
- Необязательный закрывающий слеш у одиночных тегов (
<img>
,<br>
и другие) не ставится. - Необязательные закрывающие теги (например,
</li>
или</body>
) не пропускаются.
Валидность
Документ должен проходить проверку на валидность. Для проверки используется современный валидатор.
HTML-доктайп
В начале страницы обязательно должен быть указан актуальный DOCTYPE
, чтобы браузер отображал её в режиме соответствия стандартам. Это гарантирует, что страница будет выглядеть единообразно во всех современных браузерах.
В случае верстки email-шаблонов, DOCTYPE
должен иметь следующее значение:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
Кодировка символов
Кодировка символов на странице всегда должна быть явно указана, чтобы обеспечить корректное отображение текста. Кодировка utf-8
предпочтительна.
Подключение стилей
Стилевые файлы с помощью <link>
подключаются внутри <head>
. При этом атрибут type
для тега <link>
не указывается, так как его значение text/css
устанавливается по умолчанию.
Порядок атрибутов
Атрибут класса у HTML-элементов пишется первым. Единообразное написание помогает легче считывать код и быстрее разбираться в назначении блоков по их классам.
Следующим указвается атрибут id, после него — атрибуты пути (src, srcset, href). Остальные атрибуты указываются в алфавитном порядке.
Исключением является тег <input>
. Для данного тега атрибут type
указывается первым. После — все атрибуты согласно обозначенным выше правилам.
Имена классов в атрибуте класса указываются в следующем порядке: общие стили модификатора/элемента/блока, кастомные стили для данного модификатора/элемента/блока, общие стили для модификатора/элемента/блока из внешних библиотек, частные (конкретные) стили для модификатора/элемента/блока из внешних библиотек.
Логические атрибуты
Для логических атрибутов (например, checked
, disabled
, required
) значение не указывается, а сами атрибуты указываются последними и в алфавитном порядке.
Подписи полей ввода
Для улучшения взаимодействия пользователя с элементами форм, при нажатии на подпись поля, оно должно активироваться. Для этого элемент формы связывается с его описанием с помощью идентификатора и атрибута for
тега <label>
.
Размеры картинок
В HTML-коде должны быть указаны ширина и высота векторных картинок, так как векторные картинки могут заполнить всю ширину родителя.
Важно: в атрибутах width
и height
нельзя использовать px
, так как по спецификации размеры в пикселях задаются без единиц измерения. Проценты использовать можно, если картинка должна растягиваться.
Для адаптивных изображений, у которых есть версии с разными размерами и пропорциями (например, заданы через тег <sources>
в элементе <picture>
), размеры в <img>
в HTML можно не задавать.
Атрибут языка
Для элемента <html>
в атрибуте lang
должен указываться соответствующий язык документа. Это помогает инструментам синтеза речи определить, какое использовать произношение или системам перевода, какие использовать языковые правила.
CSS
Синтаксис
- После значения свойства обязательно ставится точка с запятой.
- Для отступов внутри правил используются два пробела (либо таб, равный двум пробелам). Для правильного форматирования используйте файл .editorconfig в вашем редакторе.
- Единицы измерения не пишутся, там где в них нет необходимости. Например,
border: 0
. - Шестнадцатеричное значение цвета не сокращается, а пишется полностью из всех шести символов. Для записи используются строчные буквы. Например,
#f5f5f5
. - Названия тегов и свойств в правилах пишутся строчными буквами.
- Начальный ноль для значений не сокращается (например,
.5
вместо0.5
). - Во всех случаях в стилях используются двойные кавычки. В необязательных случаях кавычки не опускаются.
- После двоеточия в правилах ставится один пробел (
top: 10px;
). А перед двоеточием пробел не нужен. - После запятых внутри значений
rgb()
,rgba()
,hsl()
,hsla()
илиrect()
пробелы ставятся. Это повышает удобочитаемость. - До и после комбинатора между селекторами (например,
p > a
) ставится один пробел. - Каждое объявление в правиле пишется на новой строке.
- Перед открывающейся фигурной скобкой ставится один пробел. После скобки запись идёт с новой строки:
.selector { color: #f5f5f5; }
- Закрывающая фигурная скобка пишется на новой строке и без отступа. Следующее после этого правило отделяется двумя пустыми строками.
- При использовании препроцессоров правила, имеющие родителя, отделяются друг от друга одной пустой строкой.
- При использовании препроцессоров не должно быть вложенных селекторов глубже 3-го уровня. Псевдоселекторы и
@media
не считаются увеличивающими уровень вложенности.
Использование символа &
Амперсанд допустимо использовать перед:
- разделителем БЭМ-элемента,
- разделителем БЭМ-модификатора,
- псевдоэлементом или псевдоселектором.
Порядок свойств
Объявления логически связанных свойств группируются в следующем порядке:
- Позиционирование
- Блочная модель
- Типографика
- Оформление
- Анимация
- Разное
Позиционирование следует первым потому, что оно влияет на положение блоков в потоке документа. Блочная модель идёт следующей, так как она определяет размеры и расположение блоков.
Все остальные объявления, которые изменяют вид внутренних частей блоков и не оказывают влияния на другие блоки, идут в последнюю очередь.
Сгруппированные объявления в правиле не отделяются друг от друга пустой строкой.
Порядок объявления подробных правил, таких как font-size
, font-family
, line-height
, должен быть указан в алфавитном порядке для свойств типографики, и в порядке сокращенной версии правила — для всех остальных свойств. В случае совместного использования подробных и сокращённых правил, первой должна идти сокращённая версия.
Имена классов
- Имена классов пишутся строчными буквами (но не camelCase). Именование происходит согласно методологии БЭМ, Стиль Two Dashes.
- Имена классов должны быть такими, чтобы по ним можно было быстро понять какому элементу страницы задан класс: избегайте сокращений (некоторые исключения:е —
.btn
для кнопок,.desc
для описания), но не делайте их слишком длинными (более трёх слов). - Для написания классов используются английские слова и термины. Транслитом названия классов и атрибутов не пишутся.
Правило @import
Правило @import
работает медленнее, чем тег <link>
. В стилях @import
не должен использоваться.
Варианты шрифта
Альтернативные варианты шрифта и тип семейства указываются в конце перечисления font-family
.
В случае использования нестандартных шрифтов альтернативный веб-безопасный шрифт и тип семейства указываются, чтобы в случае отсутствия нестандартного шрифта в системе, изменения внешнего вида страницы были минимальны. Альтернативный шрифт должен быть такого же типа, что и нестандартный.
Порядок шрифтов следующий:
- нестандартный шрифт;
- веб-безопасный;
- тип шрифта.
Список веб-безопасных шрифтов можно посмотреть здесь — cssfontstack.com.