ДокументацияHTMLСемантическая разметка
Начальный 7 мин чтения

Семантическая разметка

Семантические теги HTML передают смысл содержимого, улучшают доступность и помогают поисковикам понять структуру страницы.

semanticsHTML5accessibilitySEO

Что такое семантика?

Семантические HTML-теги несут смысловую нагрузку — они описывают роль содержимого, а не его внешний вид.

<!-- Несемантично — что это? -->
<div class="header">
  <div class="nav">...</div>
</div>

<!-- Семантично — сразу понятна структура -->
<header>
  <nav>...</nav>
</header>

Структурные теги

<header>   <!-- Шапка страницы или раздела -->
<nav>      <!-- Основная навигация -->
<main>     <!-- Основное содержимое (один на странице) -->
<article>  <!-- Самостоятельный контент (пост, новость, комментарий) -->
<section>  <!-- Раздел с тематически связанным контентом -->
<aside>    <!-- Боковая панель, дополнительный контент -->
<footer>   <!-- Подвал страницы или раздела -->

Типичная структура страницы

<!DOCTYPE html>
<html lang="ru">
<head>
  <meta charset="UTF-8">
  <title>Название</title>
</head>
<body>
  <header>
    <nav>
      <ul>
        <li><a href="/">Главная</a></li>
        <li><a href="/about">О нас</a></li>
      </ul>
    </nav>
  </header>

  <main>
    <article>
      <h1>Заголовок статьи</h1>
      <p>Содержимое...</p>
    </article>

    <aside>
      <h2>Похожие статьи</h2>
    </aside>
  </main>

  <footer>
    <p>© 2024 FrontSkill</p>
  </footer>
</body>
</html>

Теги контента

<h1>-<h6>   <!-- Заголовки (h1 — один на странице) -->
<p>          <!-- Параграф -->
<ul>/<ol>   <!-- Ненумерованный / нумерованный список -->
<li>         <!-- Элемент списка -->
<dl>         <!-- Список определений -->
<dt>/<dd>   <!-- Термин / Определение -->

<blockquote> <!-- Цитата (с атрибутом cite) -->
<figure>     <!-- Рисунок, диаграмма, код с подписью -->
<figcaption> <!-- Подпись к figure -->

<time>       <!-- Дата/время (с атрибутом datetime) -->
<address>    <!-- Контактная информация автора/владельца -->
<mark>       <!-- Выделенный текст -->
<abbr>       <!-- Аббревиатура (с атрибутом title) -->
<cite>       <!-- Название произведения -->
<code>       <!-- Инлайн-код -->
<pre>        <!-- Предформатированный текст -->

Примеры

<figure>
  <img src="chart.png" alt="График продаж за 2024 год">
  <figcaption>Рост продаж составил 42% по сравнению с 2023</figcaption>
</figure>

<time datetime="2024-03-15">15 марта 2024</time>

<p>
  Изучаем <abbr title="HyperText Markup Language">HTML</abbr>
</p>

<address>
  Автор: <a href="mailto:ivan@example.com">Иван Иванов</a>
</address>

Заголовки и иерархия

Заголовки <h1><h6> должны образовывать логическую иерархию:

<!-- Хорошо -->
<h1>Веб-разработка</h1>
  <h2>HTML</h2>
    <h3>Семантика</h3>
    <h3>Формы</h3>
  <h2>CSS</h2>
    <h3>Flexbox</h3>

<!-- Плохо — пропускаем уровни -->
<h1>Заголовок</h1>
<h3>Подраздел</h3>  <!-- Пропустили h2! -->
  • Один <h1> на страницу (основная тема)
  • Не используйте заголовки для стилизации — для этого CSS

Ссылки

<!-- Внешняя ссылка -->
<a href="https://example.com" target="_blank" rel="noopener noreferrer">
  Открыть в новой вкладке
</a>

<!-- Якорная ссылка -->
<a href="#contacts">Перейти к контактам</a>

<!-- Ссылка-кнопка (плохая практика) -->
<a href="#">Кнопка</a>  <!-- Используйте <button> вместо этого -->

<!-- Ссылка на скачивание -->
<a href="/report.pdf" download>Скачать отчёт</a>

<!-- Ссылка на почту/телефон -->
<a href="mailto:hi@example.com">Написать</a>
<a href="tel:+79001234567">Позвонить</a>

Почему семантика важна?

  1. Доступность — скринридеры используют семантику для навигации
  2. SEO — поисковики лучше понимают структуру
  3. Читаемость — разработчикам легче понять код
  4. Стилизация — браузерные стили по умолчанию для семантических тегов