Вопрос-ответ

Популярные вопросы с ответами для владельцев и разработчиков сайтов

Как должен выглядеть HTML-код?

Правильный HTML-код должен быть семантичным, валидным, доступным (accessible), хорошо структурированным и легко читаемым как человеком, так и машиной. Это означает использование осмысленных тегов (например, <header>, <nav>, <main>, <article> вместо повсеместных <div>), правильную вложенность, логические отступы, указание атрибутов alt для изображений и lang для страницы, а также соответствие стандартам W3C. Такой код быстрее загружается, лучше индексируется поисковыми системами и понятен для скринридеров.

Семантическая разметка — основа качественного HTML

Семантический HTML — это использование тегов в соответствии с их предназначением. Вместо того чтобы делать любой блок <div class="header">, следует использовать <header>. Это помогает поисковым роботам понимать структуру документа и улучшает SEO, а также упрощает навигацию для вспомогательных технологий.

  • <header> — шапка сайта (логотип, навигация, поиск).
  • <nav> — блок навигационных ссылок (меню).
  • <main> — уникальный основной контент страницы. Должен быть только один на страницу.
  • <article> — самостоятельная единица контента (пост блога, новость, карточка товара).
  • <section> — логический раздел страницы (например, «преимущества», «команда»).
  • <aside> — побочная информация (сайдбар, виджеты, цитаты).
  • <footer> — подвал сайта (контакты, копирайт, ссылки на политику).
  • <time> — дата и время в машиночитаемом формате.
  • <figure> и <figcaption> — для иллюстраций с подписями.

Неправильно: <div class="button">Купить</div>
Правильно: <button>Купить</button>

Иерархия заголовков и структурирование контента

Заголовки <h1><h6> должны образовывать чёткую древовидную структуру. На странице должен быть только один <h1> — главный заголовок, описывающий тему всей страницы. Далее заголовки вкладываются логически, нельзя пропускать уровни (например, после <h2> сразу идти к <h4>).

Пример правильной иерархии:

<h1>Рецепты веганской выпечки</h1>
  <h2>Шоколадный брауни</h2>
    <h3>Ингредиенты</h3>
    <h3>Приготовление</h3>
  <h2>Овсяное печенье</h2>
    <h3>Ингредиенты</h3>
    <h3>Приготовление</h3>

Доступность (a11y) — неотъемлемая часть хорошего HTML

Хороший HTML-код учитывает потребности людей с ограниченными возможностями. Основные требования:

  • Атрибут alt для всех <img>. Если изображение декоративное, alt должен быть пустым (alt="").
  • Явные метки для полей форм: <label for="email">Email</label> и связка с id.
  • Атрибуты lang и dir в корневом теге <html>.
  • Правильная навигация с клавиатуры: все интерактивные элементы должны быть доступны по Tab.
  • ARIA-атрибуты (только когда нет нативного HTML-тега) — например, role="navigation" для случаев, когда <nav> по каким-то причинам не используется.

Валидность и соответствие стандартам W3C

Валидный HTML-код не содержит синтаксических ошибок: закрыты все теги, правильно вложены элементы, значения атрибутов взяты в кавычки. Проверить валидность можно через официальный валидатор W3C. Примеры частых ошибок:

  • <li> находится вне <ul> или <ol>.
  • Вложенность блочных элементов в строчные (<span><div></div></span>).
  • Отсутствие закрывающих тегов (особенно у <input>, <img> — они самозакрывающиеся: <img src="/..." alt="...">, но лучше писать <img /> для совместимости с XML-парсерами).
  • Дублирование атрибута id на странице.

Валидный код легче поддерживать, он реже ломается при обновлении браузеров и корректно обрабатывается поисковыми роботами.

Читаемость и форматирование кода

Код пишут для людей, а не только для браузеров. Правила хорошего тона:

  • Отступы — 2 пробела на каждый уровень вложенности (иногда 4, главное единообразие). Не использовать табуляцию или смешивать с пробелами.
  • Нижний регистр — все теги и атрибуты пишутся строчными буквами (<div class="menu">, а не <DIV CLASS="MENU">).
  • Кавычки — двойные для атрибутов (class="wrapper").
  • Логические переносы строк — каждый блочный элемент с новой строки, дочерние с отступом.
  • Комментарии (где действительно нужно) — <!-- начало секции преимуществ -->. Но не комментируйте очевидное.

Пример хорошо отформатированного фрагмента:

<section class="features">
  <h2>Почему выбирают нас</h2>
  <ul>
    <li>Бесплатная доставка</li>
    <li>24/7 поддержка</li>
  </ul>
</section>

Адаптивность (responsive) на уровне вёрстки

Хороший HTML-код должен быть готов к адаптивному дизайну. Для этого обязательно:

  • Метатег viewport в <head>: <meta name="viewport" content="width=device-width, initial-scale=1.0">.
  • Использование гибких единиц измерения (%, vw, vh) вместо фиксированных пикселей для основных контейнеров.
  • Изображения с атрибутами srcset и sizes для респонсивных картинок.
  • Отказ от табличной вёрстки (кроме настоящих таблиц с данными).

Если вы используете конструктор сайтов, например SitePro.by, HTML-код генерируется автоматически, и его адаптивность заложена на уровне движка. Но при ручной вёрстке вы полностью контролируете этот процесс.

0614

Организация кода и наименование классов (CSS-методологии)

Сам по себе HTML-код тесно связан с CSS. Чтобы код оставался поддерживаемым, используют системные подходы к именованию классов: БЭМ, OOCSS, SMACSS. Наиболее популярен БЭМ (Блок, Элемент, Модификатор).

  • block — независимый компонент (например, .menu).
  • block__element — часть блока (.menu__item).
  • block--modifier — вариант блока (.menu--horizontal).

Пример БЭМ-разметки:

<nav class="nav">
  <ul class="nav__list">
    <li class="nav__item">
      <a href="/" class="nav__link nav__link--active">Главная</a>
    </li>
  </ul>
</nav>

Такой HTML легко читать, и он не зависит от вложенности стилей.

SEO-оптимизация через HTML

Правильный HTML-код — фундамент поисковой оптимизации. Обязательные элементы:

  • Уникальный <title> (до 60 символов) и мета-тег description на каждой странице.
  • Каноническая ссылка <link rel="canonical" href="/..."> для избежания дублей.
  • Микроразметка Schema.org (JSON-LD) для выделения в выдаче (товары, отзывы, рецепты).
  • Атрибут rel="noopener noreferrer" для внешних ссылок, открывающихся в новой вкладке (target="_blank").
  • Структурированные данные для хлебных крошек (BreadcrumbList).

Производительность: лёгкий и быстрый код

Даже идеально оформленный HTML может быть тяжёлым. Влияет на скорость загрузки:

  • Количество DOM-узлов — меньше вложенных <div>-контейнеров, тем лучше. Стремитесь к плоской вложенности.
  • Порядок загрузки ресурсов<link> в <head>, <script> с атрибутами defer или async перед закрывающим </body>.
  • Избегайте inline-стилей и скриптов — они блокируют рендеринг и не кэшируются.
  • Не используйте устаревшие теги (<font>, <center>, <big>).

Таблица: хорошие и плохие практики HTML

КритерийПравильноНеправильно
Навигация <nav><ul><li><a>...</a></li></ul></nav> <div class="menu"><div><a>...</a></div></div>
Форма обратной связи <label>Имя <input type="text"></label> или <label for="name">Имя</label><input id="name"> <input placeholder="Имя"> без метки
Список терминов <dl><dt>HTML</dt><dd>язык разметки</dd></dl> <ul><li><b>HTML</b> - язык разметки</li></ul>

Распространённые мифы о HTML-коде

  • «HTML должен проходить валидацию без единой ошибки» — не обязательно. Валидатор иногда ругается на допустимые конструкции (например, атрибут target="_blank" во всех HTML5-документах валиден). Важно исправлять критические ошибки, но не фанатичствовать.
  • «Использовать <div> — всегда плохо» — нет. <div> нужен для группировки в чисто стилистических целях, когда семантический тег не подходит.
  • «Закрывать все теги обязательно, даже <img>» — в HTML5 закрывающий слеш не обязателен. Но если пишете XHTML-совместимый код, лучше закрывать.

Инструменты для проверки качества HTML-кода

Для автоматической проверки используйте:

  • W3C Validator — проверка валидности.
  • Lighthouse (в DevTools) — аудит доступности, SEO, производительности.
  • HTMLHint или ESLint-plugin-html — статический анализ стиля кода.
  • Pa11y — автоматизированное тестирование доступности.

Итог: хороший HTML — невидимый фундамент

Правильный HTML-код не бросается в глаза пользователю, но именно он определяет, насколько сайт будет быстрым, доступным, дружелюбным к поисковым системам и лёгким в поддержке. Семантика, читаемость, доступность и валидность — это не «хотелки», а профессиональные стандарты. Внедряя эти принципы в каждую строчку кода, вы создаёте основу, которая прослужит годы без переделок и головной боли.