По ссылкам находятся конфигурации Академии для этих инструментов. Конфигурации частично покрывают то, что описано в этом стиле кода, и в них нет ничего, что не описано ниже.
+
+
+
+
+
+
Код
+
+
+
+
Группировка файлов
+
+
Файлы схожих типов группируются в папки: картинки, стили, скрипты, шрифты.
+
Если внутри папок файлов становится много или выделяются подгруппы, можно добавить вложенные папки.
- Документ должен проходить проверку на валидность. Для проверки используется современный валидатор.
-
-
-
-
-
-
-
HTML-доктайп
-
- В начале страницы обязательно должен быть указан актуальный doctype, чтобы браузер отображал её в режиме соответствия стандартам. Это гарантирует, что страница будет выглядеть единообразно во всех современных браузерах.
-
-
-
-
-
<!DOCTYPE html>
+ <body>Страница</body>
+</html>
+
+<!-- Плохо -->
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
+<html>
+ <title>Заголовок</title>
+ Страница
+</html>
+
+<!-- Плохо -->
+<!DOCTYPE html>
<html lang="ru">
- <head>…</head>
- <body>…</body>
-</html>
-
-
-
-
-
-
-
Кодировка символов
-
- Кодировка символов на странице всегда должна быть явно указана, чтобы обеспечить корректное отображение текста. Кодировка utf-8 предпочтительна.
-
- Стилевые файлы с помощью <link> подключаются внутри <head>. При этом атрибут type для тега <link> не указывается, так как его значение text/css устанавливается по умолчанию.
-
-
-
-
-
<!-- Хорошо: стилевой файл подключён в секции head -->
+ <head>
+ <meta charset="windows-1251">
+ </head>
+</html>
+
+
+
+
+
+
+
+
Регистр тегов и атрибутов
+
Имена тегов, атрибуты и их значения записаны строчными.
+
Исключение: атрибуты для SVG-элементов, например: viewBox, preserveAspectRatio и другие.
По возможности изображениям указываются действительные размеры, так как это улучшает производительность отрисовки страницы: браузер не будет перерисовывать страницу в процессе загрузки и отображения изображения.
<!-- Хорошо -->
+<form method="post"></form>
+<form method="get"></form>
+
+<!-- Плохо -->
+<form method=""></form>
+<form></form>
+
+
+
+
+
+
+
+
Подключение стилей
+
+ Стилевые файлы подключены с помощью <link> внутри <head>. При этом атрибут type для тега <link> не указан, так как его значение text/css устанавливается по умолчанию.
+
- Атрибут класса у HTML-элементов пишется первым. Единообразное написание помогает легче считывать код и быстрее разбираться в назначении блоков по их классам.
-
-
- Остальные атрибуты могут быть расставлены в любом порядке, но тоже единообразно для одинаковых элементов.
-
- Для логических атрибутов (например, checked, disabled, required) значение не указывается, а сами атрибуты указываются последними и в единообразной последовательности во всём документе.
-
- Для улучшения взаимодействия пользователя с элементами форм, при нажатии на подпись поля, оно должно активироваться. Для этого элемент формы связывается с его описанием с помощью идентификатора и атрибута for тега <label>.
-
-
-
-
-
<!-- Хорошо: элемент формы radio связан с подписью через идентификатор -->
-<input type="radio" id="choose">
-<label for="choose">Радио кнопка</label>
-
-<!-- Хорошо: элемент формы radio и подпись обёрнуты в label -->
-<label>
- <input type="radio"> Радио кнопка
-</label>
-
-<!-- Плохо: подпись не связана с элементом формы -->
-<input type="radio" id="choose"> Радио кнопка
-
-
-
-
-
-
-
Размеры картинок
-
- Изображениям <img> должны быть явно заданы с помощью атрибута размеры в пикселях. В случае пикселей размерность не нужна.
-
-
- По возможности изображениям указываются действительные размеры, так как это улучшает производительность отрисовки страницы: браузер не будет перерисовывать страницу в процессе загрузки и отображения изображения.
-
+
-<!-- Плохо: размеры картинке заданы в px -->
-<div class="logo-area">
- <img src="http://github.com/logo.png" alt="" width="300px" height="150px">
-</div>
+
+
+
Валидность
+
+ Документ проходит проверку на валидность. Для проверки используется современный валидатор.
+
+
+
+
-<!-- Плохо: размеры картинке не заданы -->
-<div class="logo-area">
- <img src="http://github.com/logo.png" alt="">
-</div>
-
-
-
-
-
-
-
Атрибут языка
-
- Для элемента <html> в атрибуте lang должен указываться соответствующий язык документа. Это помогает инструментам синтеза речи определить, какое использовать произношение или системам перевода, какие использовать языковые правила.
-
После значения свойства обязательно ставится точка с запятой.
-
Для отступов внутри правил используются два пробела. Для правильного форматирования используйте файл .editorconfig в вашем редакторе.
-
Шестнадцатеричное значение цвета не сокращается, а пишется полностью из всех шести символов. Для записи используются строчные буквы. Например, #f5f5f5.
-
Названия тегов и свойств в правилах пишутся строчными буквами.
-
Начальный ноль для значений не сокращается (например, .5 вместо 0.5).
-
Во всех случаях в стилях используются двойные кавычки. В необязательных случаях кавычки не опускаются.
-
После двоеточия в правилах ставится один пробел (top: 10px;). А перед двоеточием пробел не нужен.
-
После запятых внутри значений rgb(), rgba(), hsl(), hsla() или rect() пробелы ставятся. Это повышает удобочитаемость.
-
До и после комбинатора между селекторами (например, p > a) ставится один пробел.
-
Каждое объявление в правиле пишется на новой строке.
-
Перед открывающейся фигурной скобкой ставится один пробел. После скобки запись идёт с новой строки:
-
.selector {
- color: #f5f5f5;
+
+
CSS
+
+
+
+
Правило @import
+
+ Правило @import работает медленнее, чем тег <link>. В стилях @import не использован.
+
+
+
+
+
<!-- Хорошо -->
+<link rel="stylesheet" href="http://github.com/module.css">
+
+<!-- Плохо -->
+<style>
+ @import url("http://github.com/module.css");
+</style>
+
+
+
+
+
+
+
Регистр селекторов и свойств
+
Селекторы и свойства записаны строчными буквами.
+
+
+
+
/* Хорошо */
+.element {
+ color: #ff0000;
+}
+
+/* Плохо */
+.Element {
+ Color: #ff0000;
}
-
-
Закрывающая фигурная скобка пишется на новой строке и без отступа. Следующее после этого правило отделяется пустой строкой.
-
Единицы измерения не пишутся, там где в них нет необходимости. Например, border: 0.
Имена классов такие, что по ним можно быстро понять, какому элементу страницы задан класс. Избегайте сокращений, но не делайте их слишком длинными (более трёх слов).
+
Для написания классов использованы английские слова и термины. В названиях классов и атрибутов нет транслита.
- Объявления логически связанных свойств группируются в следующем порядке:
-
-
-
Позиционирование
-
Блочная модель
-
Типографика
-
Оформление
-
Анимация
-
Разное
-
-
- Позиционирование следует первым потому, что оно влияет на положение блоков в потоке документа. Блочная модель идёт следующей, так как она определяет размеры и расположение блоков.
-
-
- Все остальные объявления, которые изменяют вид внутренних частей блоков и не оказывают влияния на другие блоки, идут в последнюю очередь.
-
-
- Сгруппированные объявления в правиле отделяются друг от друга пустой строкой.
-
-
- Порядок объявления подробных правил, таких как font-size, font-family, line-height, должен соответствовать порядку в сокращённой версии правила. В случае совместного использования подробных и сокращённых правил, первой должна идти сокращённая версия.
-
+ Объявления логически связанных свойств сгруппированы в следующем порядке:
+
+
+
Позиционирование
+
Блочная модель
+
Типографика
+
Оформление
+
Анимация
+
Разное
+
+
+ Позиционирование следует первым, потому что оно влияет на положение блоков в потоке документа. Блочная модель идёт следующей, так как она определяет размеры и расположение блоков.
+
+
+ Все остальные объявления, которые изменяют вид внутренних частей блоков и не оказывают влияния на другие блоки, идут в последнюю очередь.
+
+
+ Сгруппированные объявления в правиле отделены друг от друга пустой строкой.
+
+
+ Порядок объявления подробных правил, таких как font-size, font-family, line-height, соответствует порядку в сокращённой версии правила. В случае совместного использования подробных и сокращённых правил, первой идёт сокращённая версия.
+
Имена классов пишутся строчными буквами, используется дефис (но не знаки нижнего подчёркивания или camelCase). Дефисы служат разделителями во взаимосвязанных классах (например, .button и .button-danger).
-
Имена классов должны быть такими, чтобы по ним можно было быстро понять какому элементу страницы задан класс: избегайте сокращений (единственное исключение — .btn для кнопок), но не делайте их слишком длинными (более трёх слов).
-
Для написания классов используются английские слова и термины. Транслитом названия классов и атрибутов не пишутся.
- Правило @import работает медленнее, чем тег <link>. В стилях @import не должен использоваться.
-
-
-
-
-
<!-- Хорошо: подключение тегом link -->
-<link rel="stylesheet" href="http://github.com/module.css">
-
-<!-- Плохо -->
-<style>
- @import url("http://github.com/module.css");
-</style>
-
-
-
-
-
-
-
Варианты шрифта
-
- Альтернативные варианты шрифта и тип семейства указываются в конце перечисления font-family.
-
-
- В случае использования нестандартных шрифтов альтернативный веб-безопасный шрифт и тип семейства указываются, чтобы в случае отсутствия нестандартного шрифта в системе, изменения внешнего вида страницы были минимальны. Альтернативный шрифт должен быть такого же типа, что и нестандартный.
-
-
- Порядок шрифтов следующий:
-
-
-
нестандартный шрифт;
-
веб-безопасный;
-
тип шрифта.
-
-
- Список веб-безопасных шрифтов можно посмотреть здесь — cssfontstack.com.
-
-
-
-
-
/* Хорошо: указан альтернативный веб-безопасный шрифт и его тип семейства */
-body {
- font-family: "Helvetica", "Arial", sans-serif;
-}
-
-/* Кому-то нравится Arial, кому-то Tahoma */
-body {
- font-family: "Helvetica", "Tahoma", sans-serif;
-}
-
-/* Плохо: указан только нестандартный шрифт */
-body {
- font-family: "Helvetica";
-}
-
-/* Плохо: указан только нестандартный шрифт и тип семейства, альтернативный веб-безопасный шрифт отсутствует */
-body {
- font-family: "Helvetica", sans-serif;
-}
-
-/* Плохо: Georgia — шрифт с засечками, а нестандартный шрифт — без засечек */
-body {
- font-family: "Helvetica", "Georgia", sans-serif;
-}