Перейти к основному содержимому

Структурная разметка

Есть целый набор семантических тегов для разметки больших логических разделов и улучшения структурной семантики страницы. Каждый из них может быть использован при определённых условиях. Это влияет на работу ассистивных технологий, индексирование страницы и её рейтинг выдачи в поиске.

Потоковое содержимое

Тег <header>

Шапка (хедер) выделяет вводную часть всей страницы, сложной секции или статьи. Обычно содержит логотип, навигацию, вводный текст, сложный заголовок. Может быть несколько на странице.

<body>
<!-- Шапка страницы -->
<header>
<a href="/">Логотип сайта</a>

<ul>
Меню навигации по другим страницам
</ul>
</header>
</body>

Ссылка на спецификацию

Подвал (футер) это финальная часть всей страницы, её раздела или статьи. Часто содержит копирайт, список ссылок на социальные сети, контактную информацию и так далее. Может быть несколько на странице.

<body>
<!-- Шапка страницы -->
<header>
<a href="/">Логотип сайта</a>

<ul>
Меню навигации по другим страницам
</ul>
</header>

<!-- Подвал страницы -->
<footer>
<!-- Копирайт -->
<p>Все права защищены &copy;lpj.dev</p>

<!-- Ссылки на соцсети -->
<ul>
<li><a href="">Facebook</a></li>
<li><a href="">Twitter</a></li>
<li><a href="">Instagram</a></li>
</ul>
</footer>
</body>

Ссылка на спецификацию

Тег <main>

Основное, не повторяющееся на других страницах сайта (уникальное), содержание. Может быть только один на странице.

<body>
<!-- Шапка страницы -->
<header></header>

<!-- Уникальный контент страницы -->
<main></main>

<!-- Подвал страницы -->
<footer></footer>
</body>

Ссылка на спецификацию

Смысловые разделы

Тег <nav>

Определяет раздел основной навигации со ссылками на секции текущей или других страниц. Используется только для основной навигации, а не для любой группы ссылок в документе.

<body>
<!-- Шапка страницы -->
<header>
<a href="/">Логотип сайта</a>

<nav>
<!-- Навигация на другие страницы -->
<ul>
<li><a href="/portfolio">Portfolio</a></li>
<li><a href="/contact">Contact</a></li>
<li><a href="/about">About</a></li>
</ul>
</nav>
</header>

<!-- Уникальный контент страницы -->
<main></main>

<!-- Подвал страницы -->
<footer>
<!-- ⚠️ Ссылки на соцсети, не nav -->
<ul>
<li><a href="">Facebook</a></li>
<li><a href="">Twitter</a></li>
<li><a href="">Instagram</a></li>
</ul>
</footer>
</body>

Ссылка на спецификацию

Тег <article>

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

<article>
<h1>Сладкий пирожок</h1>
<img src="ссылка на изображение пирожка" alt="пирожок" />
<p>
Очень вкусный печёный пирожок с различными наполнителями: вишней, персиком
сливой или клубникой.
</p>
<p>Цена: 50 кредитов</p>
</article>
Полезно

Если разделу документа можно дать имя, вынести его вне сайта и он будет иметь смысл - это <article>. Обязателен заголовок.

Ссылка на спецификацию

Тег section

Крупный раздел, объединяющий содержание по смыслу. Неотделим от основного документа. Например секция списка товаров, блок личной информации в профиле пользователя, раздел контактной информации.

<section>
<h1>Самые популярные пирожки этой недели</h1>

<!-- Внутри каждого <li> может быть карточка пирожка из секции «Тег <article>» -->
<ul>
<li>Жареный с грибами</li>
<li>Жареный с мяссом</li>
<li>Печёный с яблоками</li>
<li>Печёный с творогом</li>
</ul>
</section>
Полезно

Если разделу документа можно дать имя, но вне сайта он не будет иметь смысла - это <section>. Желателен заголовок.

Ссылка на спецификацию

Тег <div>

Универсальный контейнер без семантического значения. Используется как блок-обёртка для последующей стилизации контента.

Полезно

Если не получается дать группе контента вменяемое имя (не "правая колонка", а имеющее смысл) - это <div> и скорее всего вам просто нужен общий контейнер для оформления.

Ссылка на спецификацию

Алгоритм выбора тега

Не только новичкам бывает трудно решить какой тег использовать для разметки блока контента основываясь на его семантическом значении. Пользуйтесь этим алгоритмом для определения подходящего тега.

Алгоритм выбора тега

Разметка страницы

Используя все рассмотренные теги наберём разметку простой страницы начинающей веб-студии.

В примере не хватает разметки скелета документа, потому что его автоматически добавляет сама интерактивная площадка codepen.io. Для полноты картины запишем базовую разметку документа.

<!DOCTYPE html>
<html lang="ru">
<head>
<meta charset="UTF-8" />
<title>Веб студия mango.dev</title>
</head>
<body>
<!-- Вся разметка из живого примера -->
</body>
</html>