Руководство по стилю HTML
Последовательный, чистый, аккуратный HTML делает ваш код более понятным для других. Вот несколько рекомендаций и советов по написанию хорошего HTML.
Всегда объявляйте тип документа
Всегда объявляйте тип документа первой строкой документа. Для HTML правильный вариант — <!DOCTYPE html>.
Doctype HTML5
Doctype, который нужно разместить на первой строке.
<!DOCTYPE html>
Используйте строчные имена элементов
HTML допускает смешивание заглавных и строчных букв в именах элементов, но рекомендуются строчные: смешанный регистр выглядит плохо, разработчики обычно используют строчные буквы, а строчные буквы чище и легче печатать. Поэтому пишите <p>Это абзац.</p>, а не <P>.
Закрывайте все элементы HTML
В HTML не обязательно закрывать каждый элемент (например, <p>), но настоятельно рекомендуется это делать. Закрытие каждого тега сохраняет структуру ясной и избавляет от неожиданностей.
Используйте строчные имена атрибутов
HTML допускает смешанный регистр в именах атрибутов, но по тем же причинам, что и для имён элементов, рекомендуются строчные буквы: выглядит чище, так обычно делают разработчики, легче печатать. Поэтому пишите href, а не HREF.
Всегда заключайте значения атрибутов в кавычки
HTML допускает значения атрибутов без кавычек, но их следует заключать в кавычки: разработчики обычно так делают, значения в кавычках легче читать, а если значение содержит пробелы, кавычки обязательны. Значение с пробелами, написанное без кавычек, работать не будет.
Всегда указывайте alt, width и height для изображений
Всегда задавайте атрибут alt для изображений, так как он важен, если изображение не может быть показано. Также задавайте width и height — это уменьшает мерцание, потому что браузер может зарезервировать место под изображение до его загрузки.
Пробелы и знаки равенства
HTML допускает пробелы вокруг знаков равенства, но их отсутствие легче читать и лучше группирует данные. Поэтому пишите rel="stylesheet", а не rel = "stylesheet".
Избегайте длинных строк кода
При использовании HTML-редактора прокрутка влево и вправо для чтения кода неудобна, поэтому старайтесь избегать очень длинных строк.
Пустые строки и отступы
Не добавляйте пустые строки, пробелы или отступы без причины. Для читаемости добавляйте пустые строки, чтобы разделять крупные или логические блоки, и используйте два пробела для отступа вместо клавиши табуляции.
Никогда не пропускайте элемент <title>
Элемент <title> обязателен в HTML. Он очень важен для поисковой оптимизации (SEO), так как поисковые системы используют его для ранжирования страниц в результатах. Он задаёт заголовок на панели инструментов браузера, имя, используемое при добавлении страницы в закладки, и заголовок в результатах поиска, поэтому делайте его точным и осмысленным.
Пропуск <html> и <body>?
HTML-страница пройдёт валидацию даже без тегов <html> и <body>, но их всегда стоит добавлять. Пропуск <body> может вызвать ошибки в старых браузерах, а пропуск обоих тегов может привести к сбою программ DOM и XML.
Страница без html и body
Страница, в которой опущены теги <html> и <body> (не рекомендуется).
<!DOCTYPE html>
<head>
<title>Page Title</title>
</head>
<h1>This is a heading</h1>
<p>This is a paragraph.</p>
Пропуск <head>?
Тег <head> тоже можно опустить; браузер добавляет все элементы перед <body> в head по умолчанию. Тем не менее использование тега <head> рекомендуется.
Страница без head
Страница, в которой опущен тег <head> (не рекомендуется).
<!DOCTYPE html>
<html>
<title>Page Title</title>
<body>
<h1>This is a heading</h1>
<p>This is a paragraph.</p>
</body>
</html>
Закрывать ли пустые элементы HTML?
В HTML закрытие пустых элементов необязательно, поэтому допустимы и <meta charset="utf-8">, и <meta charset="utf-8" />. Если вы ожидаете, что вашу страницу будет читать программное обеспечение XML или XHTML, сохраните закрывающий слэш, так как там он обязателен.
Добавьте атрибут lang
Всегда включайте атрибут lang в тег <html>, чтобы объявить язык страницы. Это помогает поисковым системам и браузерам.
Пример
Документ, объявляющий свой язык с помощью lang="en-us".
Результат: полная HTML-страница
<!DOCTYPE html>
<html lang="ru-ru">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Заголовок страницы</title>
</head>
<body>
<h1>Это заголовок</h1>
<p>Это абзац.</p>
</body>
</html>
Метаданные
Для правильной интерпретации и индексации поисковыми системами определяйте как язык, так и кодировку символов (<meta charset="...">) как можно раньше в документе.
Язык и набор символов
Раннее объявление языка и набора символов в head.
<!DOCTYPE html>
<html lang="en-us">
<head>
<meta charset="UTF-8">
<title>Page Title</title>
</head>
Настройка Viewport
Viewport — это видимая пользователю область страницы, меньше на телефоне, чем на компьютере. Включайте мета-тег viewport на каждой странице. Часть width=device-width заставляет ширину страницы следовать экрану устройства, а initial-scale=1.0 задаёт начальный уровень масштабирования.
Мета-тег viewport
Мета-тег viewport, который нужно включать на каждой странице.
<meta name="viewport" content="width=device-width, initial-scale=1.0">
Комментарии HTML
Пишите короткие комментарии в одну строку, например <!-- Это комментарий -->. Для комментариев, занимающих несколько строк, размещайте <!-- и --> на отдельных строках; длинные комментарии легче читать с отступом в два пробела.
Использование таблиц стилей
Используйте простой синтаксис для подключения таблицы стилей (атрибут type не нужен). Короткие правила CSS можно писать в одну строку, а длинные правила стоит разбивать на несколько строк: ставьте открывающую фигурную скобку на той же строке, что и селектор, с одним пробелом перед ней, делайте отступ в два пробела, заканчивайте каждое свойство точкой с запятой, заключайте значения в кавычки только если они содержат пробелы, а закрывающую скобку ставьте на отдельной строке.
Загрузка JavaScript в HTML
Используйте простой синтаксис для загрузки внешних скриптов; атрибут type не нужен, например <script src="myscript.js">.
Доступ к элементам HTML с помощью JavaScript
Неаккуратный HTML может вызывать ошибки JavaScript. Поскольку id чувствительны к регистру, getElementById("Demo") и getElementById("demo") обращаются к разным элементам и дают разные результаты.
Id, чувствительные к регистру
Два оператора, обращающихся к разным элементам из-за разного регистра в id.
getElementById("Demo").innerHTML = "Hello";
getElementById("demo").innerHTML = "Hello";
Используйте строчные имена файлов
Некоторые веб-серверы (Apache, Unix) считают имена файлов чувствительными к регистру, поэтому london.jpg — это не то же самое, что London.jpg; другие (Microsoft IIS) — нет. Чтобы избежать проблем при переносе между серверами, всегда используйте строчные имена файлов.
Расширения файлов
HTML-файлы должны использовать расширение .html (.htm тоже допустимо), CSS-файлы — расширение .css, а файлы JavaScript — расширение .js.
В чём разница между .htm и .html?
Разницы между расширениями .htm и .html нет. Оба обрабатываются как HTML любым браузером и сервером.
Имена файлов по умолчанию
Когда URL не указывает имя файла в конце (например, https://prompt-cookbook.com), сервер добавляет имя файла по умолчанию, такое как index.html, index.htm, default.html или default.htm. Если единственное имя по умолчанию сервера — index.html, ваш файл должен называться именно так. Серверы также можно настроить с несколькими именами файлов по умолчанию.