- Документ должен проходить проверку на валидность. Для проверки используется современный валидатор.
-
-
-
-
-
-
-
HTML-доктайп
-
- В начале страницы обязательно должен быть указан актуальный doctype, чтобы браузер отображал её в режиме соответствия стандартам. Это гарантирует, что страница будет выглядеть единообразно во всех современных браузерах.
-
-
-
-
-
<!DOCTYPE html>
+
+
+
+
+
+
+
Валидность
+
+ Документ должен проходить проверку на валидность. Для проверки используется современный валидатор.
+
+
+
+
+
+
+
HTML-доктайп
+
+ В начале страницы обязательно должен быть указан актуальный doctype, чтобы браузер отображал её в режиме соответствия стандартам. Это гарантирует, что страница будет выглядеть единообразно во всех современных браузерах.
+
- Стилевые файлы с помощью <link> подключаются внутри <head>. При этом атрибут type для тега <link> не указывается, так как его значение text/css устанавливается по умолчанию.
-
-
-
-
-
<!-- Хорошо: стилевой файл подключён в секции head -->
+
+
+
+
+
+
+
Подключение стилей
+
+ Стилевые файлы с помощью <link> подключаются внутри <head>. При этом атрибут type для тега <link> не указывается, так как его значение text/css устанавливается по умолчанию.
+
+
+
+
+
<!-- Хорошо: стилевой файл подключён в секции head -->
<!DOCTYPE html>
<html lang="ru">
<head>
@@ -172,23 +173,23 @@
- Атрибут класса у HTML-элементов пишется первым. Единообразное написание помогает легче считывать код и быстрее разбираться в назначении блоков по их классам.
-
-
- Остальные атрибуты могут быть расставлены в любом порядке, но тоже единообразно для одинаковых элементов.
-
+ Атрибут класса у HTML-элементов пишется первым. Единообразное написание помогает легче считывать код и быстрее разбираться в назначении блоков по их классам.
+
+
+ Остальные атрибуты могут быть расставлены в любом порядке, но тоже единообразно для одинаковых элементов.
+
- Для логических атрибутов (например, checked, disabled, required) значение не указывается, а сами атрибуты указываются последними и в единообразной последовательности во всём документе.
-
-
-
-
-
<!-- checked="checked" необязательно -->
+
+
+
+
+
+
+
Логические атрибуты
+
+ Для логических атрибутов (например, checked, disabled, required) значение не указывается, а сами атрибуты указываются последними и в единообразной последовательности во всём документе.
+
- Для улучшения взаимодействия пользователя с элементами форм, при нажатии на подпись поля, оно должно активироваться. Для этого элемент формы связывается с его описанием с помощью идентификатора и атрибута for тега <label>.
-
-
-
-
-
<!-- Хорошо: элемент формы radio связан с подписью через идентификатор -->
+
+
+
+
+
+
Подписи полей ввода
+
+ Для улучшения взаимодействия пользователя с элементами форм, при нажатии на подпись поля, оно должно активироваться. Для этого элемент формы связывается с его описанием с помощью идентификатора и атрибута for тега <label>.
+
+
+
+
+
<!-- Хорошо: элемент формы radio связан с подписью через идентификатор -->
<input type="radio" id="choose">
<label for="choose">Радио кнопка</label>
@@ -272,23 +273,23 @@
Подписи полей ввода
<!-- Плохо: подпись не связана с элементом формы -->
<input type="radio" id="choose"> Радио кнопка
-
-
-
-
-
-
-
Размеры картинок
-
- Изображениям <img> должны быть явно заданы с помощью атрибута размеры в пикселях. В случае пикселей размерность не нужна.
-
-
- По возможности изображениям указываются действительные размеры, так как это улучшает производительность отрисовки страницы: браузер не будет перерисовывать страницу в процессе загрузки и отображения изображения.
-
-
-
-
-
<!-- Хорошо: размеры картинке заданы -->
+
+
+
+
+
+
+
Размеры картинок
+
+ Изображениям <img> должны быть явно заданы с помощью атрибута размеры в пикселях. В случае пикселей размерность не нужна.
+
+
+ По возможности изображениям указываются действительные размеры, так как это улучшает производительность отрисовки страницы: браузер не будет перерисовывать страницу в процессе загрузки и отображения изображения.
+
- Для элемента <html> в атрибуте lang должен указываться соответствующий язык документа. Это помогает инструментам синтеза речи определить, какое использовать произношение или системам перевода, какие использовать языковые правила.
-
-
-
-
-
<!DOCTYPE html>
+
+
+
+
+
+
+
Атрибут языка
+
+ Для элемента <html> в атрибуте lang должен указываться соответствующий язык документа. Это помогает инструментам синтеза речи определить, какое использовать произношение или системам перевода, какие использовать языковые правила.
+
После значения свойства обязательно ставится точка с запятой.
-
Для отступов внутри правил используются два пробела. Для правильного форматирования используйте файл .editorconfig в вашем редакторе.
-
Шестнадцатеричное значение цвета не сокращается, а пишется полностью из всех шести символов. Для записи используются строчные буквы. Например, #f5f5f5.
-
Названия тегов и свойств в правилах пишутся строчными буквами.
-
Начальный ноль для значений не сокращается (например, .5 вместо 0.5).
-
Во всех случаях в стилях используются двойные кавычки. В необязательных случаях кавычки не опускаются.
-
После двоеточия в правилах ставится один пробел (top: 10px;). А перед двоеточием пробел не нужен.
-
После запятых внутри значений rgb(), rgba(), hsl(), hsla() или rect() пробелы ставятся. Это повышает удобочитаемость.
-
До и после комбинатора между селекторами (например, p > a) ставится один пробел.
-
Каждое объявление в правиле пишется на новой строке.
-
Перед открывающейся фигурной скобкой ставится один пробел. После скобки запись идёт с новой строки:
-
.selector {
+
+
+
+
+
+
+
CSS
+
+
+
+
Синтаксис
+
+
После значения свойства обязательно ставится точка с запятой.
+
Для отступов внутри правил используются два пробела. Для правильного форматирования используйте файл .editorconfig в вашем редакторе.
+
Шестнадцатеричное значение цвета не сокращается, а пишется полностью из всех шести символов. Для записи используются строчные буквы. Например, #f5f5f5.
+
Названия тегов и свойств в правилах пишутся строчными буквами.
+
Начальный ноль для значений не сокращается (например, .5 вместо 0.5).
+
Во всех случаях в стилях используются двойные кавычки. В необязательных случаях кавычки не опускаются.
+
После двоеточия в правилах ставится один пробел (top: 10px;). А перед двоеточием пробел не нужен.
+
После запятых внутри значений rgb(), rgba(), hsl(), hsla() или rect() пробелы ставятся. Это повышает удобочитаемость.
+
До и после комбинатора между селекторами (например, p > a) ставится один пробел.
+
Каждое объявление в правиле пишется на новой строке.
+
Перед открывающейся фигурной скобкой ставится один пробел. После скобки запись идёт с новой строки:
+
.selector {
color: #f5f5f5;
-}
-
-
Закрывающая фигурная скобка пишется на новой строке и без отступа. Следующее после этого правило отделяется пустой строкой.
-
Единицы измерения не пишутся, там где в них нет необходимости. Например, border: 0.
- Объявления логически связанных свойств группируются в следующем порядке:
-
-
-
Позиционирование
-
Блочная модель
-
Типографика
-
Оформление
-
Анимация
-
Разное
-
-
- Позиционирование следует первым потому, что оно влияет на положение блоков в потоке документа. Блочная модель идёт следующей, так как она определяет размеры и расположение блоков.
-
-
- Все остальные объявления, которые изменяют вид внутренних частей блоков и не оказывают влияния на другие блоки, идут в последнюю очередь.
-
-
- Сгруппированные объявления в правиле отделяются друг от друга пустой строкой.
-
-
- Порядок объявления подробных правил, таких как font-size, font-family, line-height, должен соответствовать порядку в сокращённой версии правила. В случае совместного использования подробных и сокращённых правил, первой должна идти сокращённая версия.
-
-
-
-
-
.declaration-order {
+
+
+
+
+
+
+
Порядок свойств
+
+ Объявления логически связанных свойств группируются в следующем порядке:
+
+
+
Позиционирование
+
Блочная модель
+
Типографика
+
Оформление
+
Анимация
+
Разное
+
+
+ Позиционирование следует первым потому, что оно влияет на положение блоков в потоке документа. Блочная модель идёт следующей, так как она определяет размеры и расположение блоков.
+
+
+ Все остальные объявления, которые изменяют вид внутренних частей блоков и не оказывают влияния на другие блоки, идут в последнюю очередь.
+
+
+ Сгруппированные объявления в правиле отделяются друг от друга пустой строкой.
+
+
+ Порядок объявления подробных правил, таких как font-size, font-family, line-height, должен соответствовать порядку в сокращённой версии правила. В случае совместного использования подробных и сокращённых правил, первой должна идти сокращённая версия.
+
Имена классов пишутся строчными буквами, используется дефис (но не знаки нижнего подчёркивания или camelCase). Дефисы служат разделителями во взаимосвязанных классах (например, .button и .button-danger).
-
Имена классов должны быть такими, чтобы по ним можно было быстро понять какому элементу страницы задан класс: избегайте сокращений (единственное исключение — .btn для кнопок), но не делайте их слишком длинными (более трёх слов).
-
Для написания классов используются английские слова и термины. Транслитом названия классов и атрибутов не пишутся.
-
-
-
-
-
/* Хорошо */
+
+
+
+
+
+
+
Имена классов
+
+
Имена классов пишутся строчными буквами, используется дефис (но не знаки нижнего подчёркивания или camelCase). Дефисы служат разделителями во взаимосвязанных классах (например, .button и .button-danger).
+
Имена классов должны быть такими, чтобы по ним можно было быстро понять какому элементу страницы задан класс: избегайте сокращений (единственное исключение — .btn для кнопок), но не делайте их слишком длинными (более трёх слов).
+
Для написания классов используются английские слова и термины. Транслитом названия классов и атрибутов не пишутся.
- Правило @import работает медленнее, чем тег <link>. В стилях @import не должен использоваться.
-
-
-
-
-
<!-- Хорошо: подключение тегом link -->
+
+
+
+
+
+
+
Правило @import
+
+ Правило @import работает медленнее, чем тег <link>. В стилях @import не должен использоваться.
+
+
+
+
+
<!-- Хорошо: подключение тегом link -->
<link rel="stylesheet" href="https://github.com/module.css">
<!-- Плохо -->
<style>
@import url("https://github.com/module.css");
</style>
-
-
-
-
-
-
-
Варианты шрифта
-
- Альтернативные варианты шрифта и тип семейства указываются в конце перечисления font-family.
-
-
- В случае использования нестандартных шрифтов альтернативный веб-безопасный шрифт и тип семейства указываются, чтобы в случае отсутствия нестандартного шрифта в системе, изменения внешнего вида страницы были минимальны. Альтернативный шрифт должен быть такого же типа, что и нестандартный.
-
-
- Порядок шрифтов следующий:
-
-
-
нестандартный шрифт;
-
веб-безопасный;
-
тип шрифта.
-
-
- Список веб-безопасных шрифтов можно посмотреть здесь — cssfontstack.com.
-
-
-
-
-
/* Хорошо: указан альтернативный веб-безопасный шрифт и его тип семейства */
+
+
+
+
+
+
+
Варианты шрифта
+
+ Альтернативные варианты шрифта и тип семейства указываются в конце перечисления font-family.
+
+
+ В случае использования нестандартных шрифтов альтернативный веб-безопасный шрифт и тип семейства указываются, чтобы в случае отсутствия нестандартного шрифта в системе, изменения внешнего вида страницы были минимальны. Альтернативный шрифт должен быть такого же типа, что и нестандартный.
+
+
+ Порядок шрифтов следующий:
+
+
+
нестандартный шрифт;
+
веб-безопасный;
+
тип шрифта.
+
+
+ Список веб-безопасных шрифтов можно посмотреть здесь — cssfontstack.com.
+
+
+
+
+
/* Хорошо: указан альтернативный веб-безопасный шрифт и его тип семейства */
body {
font-family: "Helvetica", "Arial", sans-serif;
}
@@ -539,20 +540,20 @@
Варианты шрифта
body {
font-family: "Helvetica", "Georgia", sans-serif;
}
-
-
-
-
-
-
-
Доступное скрытие
-
- Для того, чтобы контент был скрыт от глаз, но доступен для скринридеров и поисковиков его нужно скрывать используя утилитарный класс visually-hidden.
-
-
-
-
-
/* Плохо: скрывать элемент с помощью font-size, display:none */
+
+
+
+
+
+
+
Доступное скрытие
+
+ Для того, чтобы контент был скрыт от глаз, но доступен для скринридеров и поисковиков его нужно скрывать используя утилитарный класс visually-hidden.
+
+
+
+
+
/* Плохо: скрывать элемент с помощью font-size, display:none */
h1 {
font-size: 0;
}
@@ -560,10 +561,10 @@
Доступное скрытие
.title {
display: none;
}
-
-
-
-/* Хорошо: использован класс visually-hidden */
+