В этой статье представлены рекомендованные Google соглашения форматирования HTML и CSS для формирования хороших личных привычек кодирования.
Общие правила стиля
Опускайте часть URL с протоколом для изображений, стилей, скриптов и других медиафайлов (http:,https:), если файл не доступен по обоим протоколам. Такая схема называется протокол-относительным URL. Преимущество в том, что независимо от того, открываете ли вы страницу по HTTPS или HTTP, браузер будет запрашивать ресурсы страницы с использованием того же протокола, а также это позволяет сэкономить несколько байт.
<!-- 不推荐 --> <script src="https://www.google.com/js/gweb/analytics/autotrack.js"></script>
<!-- 推荐 --> <script src="//www.google.com/js/gweb/analytics/autotrack.js"></script>
/* 不推荐 */
.example {
background: url("https://www.google.com/images/example");
}
/* 推荐 */
.example {
background: url("//www.google.com/images/example");
}
Общие правила форматирования
Отступы
Делайте отступ в 2 пробела. Не используйте табуляцию и не смешивайте табуляцию и пробелы для отступов.
<ul> <li>Fantastic <li>Great </ul>
.example {
color: blue;
}
Регистр
Для следующего используйте только нижний регистр: имён элементов HTML, атрибутов, значений атрибутов (кроме текста/CDATA), CSS-селекторов, свойств и значений свойств.
<!-- 不推荐 --> <A HREF="/">Home</A>
<!-- 推荐 --> <img src="google.png.html" alt="Google">
/* 不推荐 */ color: #E5E5E5;
/* 推荐 */ color: #E5E5E5;
Пробелы в конце строк
<!-- 不推荐 --> <p>What?_
<!-- 推荐 --> <p>Yes please.
Общие метаправила
Кодирование
Указывайте кодировку в HTML с помощью <meta charset="utf-8">. Нет необходимости указывать её в CSS, потому что UTF-8 используется по умолчанию.
Комментарии
Используйте комментарии для объяснения кода: содержащихся в нём модулей, его функциональности и преимуществ.
Пункты задач
Используйте TODO для отметки пунктов задач, а не другие маркеры вроде @ @.
<!-- TODO: remove optional tags --> <ul> <li>Apples</li> <li>Oranges</li> </ul>
Правила стиля HTML
Тип документа
HTML-документы должны использовать тип документа HTML5: <!DOCTYPE html>.
Пустые элементы не требуют самозакрытия,<br>Не пишите<br />。
Валидность HTML
По возможности используйте валидный HTML.
<!-- 不推荐 --> <title>Test</title> <article>This is only a test.
<!-- 推荐 --> <!DOCTYPE html> <meta charset="utf-8"> <title>Test</title> <article>This is only a test.</article>
Семантика
<!-- 不推荐 --> <div onclick="goToRecommendations();">All recommendations</div>
<!-- 推荐 --> <a href="recommendations/index.html">All recommendations</a>
Резервный вариант для мультимедиа
Для мультимедийных элементов, таких как изображения, видео и анимации canvas, убедитесь, что предусмотрено другое доступное содержимое. Изображения могут использовать альтернативный текст (alt), а видео и аудио могут использовать текстовые версии.
<!-- 不推荐 --> <img src="spreadsheet.png.html">
<!-- 推荐 --> <img src="spreadsheet.png.html" alt="Spreadsheet screenshot.">
Разделение ответственности
Разделяйте разметку, стили и скрипты, обеспечивая минимальную связность между ними.
Ссылки на сущности
Если файлы и редакторы команды используют одну и ту же кодировку, нет необходимости использовать ссылки на сущности, например—, ”,☺, за исключением некоторых символов, имеющих особое значение в HTML (например, < и &), и невидимых символов (например, пробелов).
<!-- 不推荐 --> The currency symbol for the Euro is “&eur;”.
<!-- 推荐 --> The currency symbol for the Euro is “€”.
Атрибут type
Не указывайте атрибут type при подключении таблиц стилей и скриптов, если только это не CSS или JavaScript.
Потому что в HTML5 тип по умолчанию для стилей — text/css, а для скриптов — text/javascript.
<!-- 不推荐 --> <link rel="stylesheet" href="//www.google.com/css/maia.css" type="text/css">
<!-- 推荐 --> <link rel="stylesheet" href="//www.google.com/css/maia.css">
<!-- 不推荐 --> <script src="//www.google.com/js/gweb/analytics/autotrack.js" type="text/javascript"></script>
<!-- 推荐 --> <script src="//www.google.com/js/gweb/analytics/autotrack.js"></script>
Правила форматирования HTML
Кавычки в HTML
Используйте двойные кавычки для значений атрибутов.
<!-- 不推荐 --> <a class='maia-button maia-button-secondary'>Sign in</a>
<!-- 推荐 --> <a class="maia-button maia-button-secondary">Sign in</a>
Правила оформления CSS
Именование ID и классов
Используйте осмысленные имена id и class.
/* 不推荐: 含义不明确 */
#yee-1901 {}
/* 不推荐: 按直觉来的 */
.button-green {}
.clear {}
/* 推荐: 指定含义 */
#gallery {}
#login {}
.video {}
/* 推荐: 通用 */
.aux {}
.alt {}
Стиль именования ID и классов
id и class должны быть как можно короче, но при этом оставаться понятными.
/* 不推荐 */
#navigation {}
.atr {}
/* 推荐 */
#nav {}
.author {}
Селекторы
Не добавляйте имя элемента перед id или class, если это не обязательно.
/* 不推荐 */
ul#example {}
div.error {}
/* 推荐 */
#example {}
.error {}
Сокращённая запись свойств
По возможности используйте сокращённые свойства в CSS (например, font), это повышает эффективность написания кода и его читаемость.
/* 不推荐 */ border-top-style: none; font-family: palatino, georgia, serif; font-size: 100%; line-height: 1.6; padding-bottom: 2em; padding-left: 1em; padding-right: 1em; padding-top: 0;
/* 推荐 */ border-top: 0; font: 100%/1.6 palatino, georgia, serif; padding: 0 1em 2em;
0 и единицы
Не добавляйте единицу измерения, когда значение равно 0.
margin: 0; padding: 0;
Ведущий 0
Когда значение находится между -1 и 1, ведущий 0 не нужен.
font-size: .8em;
Шестнадцатеричная нотация
/* 不推荐 */ color: #EEBBCC;
/* 推荐 */ color: #ebc;
Префиксы
Использование пространств имён с префиксами может предотвратить конфликты имён и улучшить сопровождаемость кода.
.adw-help {} /* AdWords */
#maia-note {} /* Maia */
Разделители ID и имён классов
Использование дефисов в селекторах улучшает читаемость.
/* 不推荐: “demo” 和 “image” 之间没有分隔符 */
.demoimage {}
/* 不推荐: 使用下划线 */
.error_status {}
/* 推荐 */
#video-id {}
.ads-sample {}
Правила форматирования CSS
Порядок объявлений
Написание CSS в алфавитном порядке имён свойств легко читать и поддерживать. При сортировке игнорируйте свойства с браузерными префиксами.
background: fuchsia; border: 1px solid; -moz-border-radius: 4px; -webkit-border-radius: 4px; border-radius: 4px; color: black; text-align: center; text-indent: 2em;
Отступы содержимого блока
Чтобы отразить иерархию и улучшить читаемость, всё содержимое блока должно иметь отступы.
@media screen, projection {
html {
background: #fff;
color: #444;
}
}
Точки с запятой в объявлениях
Каждая строка CSS должна заканчиваться точкой с запятой.
/* 不推荐 */
.test {
display: block;
height: 100px
}
/* 推荐 */
.test {
display: block;
height: 100px;
}
Разделение имени свойства
Между именем свойства и значением должен быть пробел.
/* 不推荐 */
h3 {
font-weight:bold;
}
/* 推荐 */
h3 {
font-weight: bold;
}
Отделение блока объявлений
Используйте пробел между селектором и {}.
/* Not recommended: missing space */
#video{
margin-top: 1em;
}
/* Not recommended: unnecessary line break */
#video
{
margin-top: 1em;
}
/* 推荐 */
#video {
margin-top: 1em;
}
Отделение селектора и объявления
Каждый селектор начинается с новой строки.
/* 不推荐 */
a:focus, a:active {
position: relative; top: 1px;
}
/* 推荐 */
h1,
h2,
h3 {
font-weight: normal;
line-height: 1.2;
}Разделение правил
Разделяйте правила пустыми строками.
html {
background: #fff;
}
body {
margin: auto;
width: 50%;
}Кавычки в CSS
Используйте одинарные кавычки для селекторов атрибутов и значений свойств. Значения URI не нуждаются в кавычках.
/* 不推荐 */
@import url("//www.google.com/css/maia.css");
html {
font-family: "open sans", arial, sans-serif;
}
/* 推荐 */
@import url(//www.google.com/css/maia.css);
html {
font-family: 'open sans', arial, sans-serif;
}Метаправила CSS
Комментарии к разделам
Используйте комментарии, чтобы разделить CSS на разделы.
/* Header */
#adw-header {}
/* Footer */
#adw-footer {}
/* Gallery */
.adw-gallery {}
Исходный URL: https://google.github.io/styleguide/htmlcssguide.xml