Что такое семантический HTML
Семантический HTML означает выбирать каждый тег по тому, чем является содержимое: навигация идет в <nav>, основное содержимое в <main>, запись блога в <article>. Теги выглядят как обычные блоки, но сообщают браузеру, программам чтения с экрана и поисковикам, что делает каждая часть страницы. Вот целая страница, собранная из семантических тегов разметки, где каждый обведен и подписан:
Удалите элемент <style>, и страница будет выглядеть как обычный текст, но структура останется для всех, кто читает код, и для программ, которые читают его, не глядя на пиксели.
Семантические теги разметки
| Тег | Для чего | Ориентир для программ чтения с экрана |
|---|---|---|
<header> | Вступление страницы или статьи: логотип, заголовок, подпись автора | banner (только когда он не внутри article, aside, main, nav или section) |
<nav> | Блок основных навигационных ссылок | navigation |
<main> | Содержимое, уникальное для этой страницы, один раз на странице | main |
<article> | Самостоятельный фрагмент, понятный сам по себе: запись, комментарий, карточка товара | по умолчанию нет |
<section> | Тематическая группа содержимого со своим заголовком | region, только когда у него есть доступное имя |
<aside> | Связанный материал рядом с основным потоком: боковая панель, заметка | complementary |
<footer> | Завершающая информация страницы или статьи: копирайт, автор, ссылки | contentinfo (только на уровне страницы) |
У каждого тега есть отдельная страница с подробностями: header, nav, section и footer. Эта страница рассказывает, как они сочетаются.
Почему не просто div
Страница только из элементов <div> может выглядеть так же, как семантическая. Разница в том, что говорит разметка. Нажимайте кнопки, чтобы обвести элементы, несущие смысл, в каждой версии:
Версия на div находит 0, семантическая версия находит 4. Именно это видят вспомогательные технологии: на семантической странице пользователь программы чтения с экрана может сразу перейти к навигации или основному содержимому, а на странице из div ему приходится прочитать все подряд. Имена классов вроде class="nav" для браузера ничего не значат.
<div> по-прежнему правильный выбор для блоков, которые нужны только для стилей или раскладки, как flex-обертка .cols в первом примере.
main, article и aside
<main> оборачивает то, что уникально для этой страницы, и встречается один раз. Внутри него <article> отмечает содержимое, которое имело бы смысл само по себе, если скопировать его на другой сайт, а <aside> отмечает материал, связанный со статьей, но который можно удалить, не сломав ее:
У статьи свои <header> и <footer>. Они не ограничены уровнем страницы: каждый из них открывает или завершает ближайшую статью или раздел. Элемент <time datetime> дает дату в машиночитаемом виде, а показывает ее в понятном человеку.
Проверьте структуру заголовков
Заголовки это вторая половина структуры. Пользователи программ чтения с экрана часто перемещаются по странице от заголовка к заголовку, поэтому уровни должны читаться как оглавление без пропусков. Этот скрипт выводит структуру страницы, на которой запущен:
h4 под «Brewing» пропускает уровень. Замените его на h3, и структура станет чистой. Выбирайте уровни заголовков по структуре, а размер меняйте через CSS, если нужно крупнее или мельче.
Другие семантические теги
Семантика касается не только разметки страницы. Эти текстовые теги тоже несут смысл:
| Тег | Смысл |
|---|---|
<strong> | Важный текст (по умолчанию жирный) |
<em> | Смысловое ударение (по умолчанию курсив) |
<figure> и <figcaption> | Картинка, диаграмма или пример кода с подписью |
<time datetime="..."> | Дата или время в машиночитаемом виде |
<address> | Контактные данные автора страницы или статьи |
<mark> | Выделенный текст, например совпадение при поиске |
<abbr title="..."> | Сокращение с полной формой |
<button> | То, что выполняет действие |
Наведите курсор на сокращение «W3C», чтобы увидеть полную форму во всплывающей подсказке.
Частые ошибки
- Тег ради внешнего вида.
<blockquote>нужен для цитат, а не для отступа;<h3>это уровень заголовка, а не средний жирный текст. Оформляйте через CSS. - Все обернуто в
<section>. У раздела должны быть заголовок и тема. Если нужен блок для стилей, используйте<div>. - Больше одного видимого
<main>. Оставьте один на страницу и никогда не вкладывайте его в<article>,<aside>,<header>,<nav>или<footer>. - Каждый список ссылок в
<nav>. Оставьте его для основных блоков навигации, вроде меню сайта или оглавления. Нескольким ссылкам в подвале он не нужен. - Кликабельные элементы
<div>. До<div onclick>нельзя добраться с клавиатуры. Используйте<button>для действий и<a href>для навигации.
Часто задаваемые вопросы
Что такое семантический HTML?
Семантический HTML это разметка, в которой каждый тег описывает смысл своего содержимого: <nav> для навигации, <article> для самостоятельного фрагмента, <button> для кнопки. Тогда браузер, программы чтения с экрана и поисковики понимают страницу, не угадывая по именам классов или стилям.
Какие семантические теги есть в HTML?
Теги разметки страницы: <header>, <nav>, <main>, <article>, <section>, <aside> и <footer>. К другим распространенным семантическим тегам относятся <figure>, <figcaption>, <time>, <address>, <strong>, <em> и заголовки от <h1> до <h6>.
Является ли div семантическим элементом?
Нет. У <div> нет собственного смысла; это универсальный блок для стилей и раскладки. Используйте его, когда не подходит ни один семантический тег, а <header>, <main>, <nav> и остальные, когда подходит.
Для чего нужен тег aside?
<aside> содержит материал, связанный с основным содержимым, но не входящий в его поток: боковую панель, блок связанных ссылок, пояснение к термину или выносную цитату. На уровне страницы программы чтения с экрана перечисляют его как дополнительный ориентир (complementary).
Сколько элементов main может быть на странице?
Один видимый <main> на страницу. Он оборачивает содержимое, уникальное для этой страницы, и не должен находиться внутри <header>, <nav>, <article>, <aside> или <footer>.
Помогает ли семантическая верстка SEO?
Она помогает поисковикам понять, какая часть страницы основное содержимое, какая навигация и как связаны заголовки. Сама по себе это не короткий путь к позициям, но она убирает догадки и улучшает доступность, а это стоит делать в любом случае.