Кратко
СкопированоВ блоке <main> лежит главное содержимое страницы: тот основной и уникальный контент, который относится к главной теме страницы.
Пример
Скопировано
<header>Сайт об архитекторах Санкт-Петербурга</header><main> <h1>Несколько фактов о Растрелли</h1> <p>Франческо Растрелли — российский архитектор итальянского происхождения.</p> <p>Он был ярким представителем елизаветинского барокко.</p></main><footer>Подписывайтесь на нас в Инстаграме</footer>
<header>Сайт об архитекторах Санкт-Петербурга</header>
<main>
<h1>Несколько фактов о Растрелли</h1>
<p>Франческо Растрелли — российский архитектор итальянского происхождения.</p>
<p>Он был ярким представителем елизаветинского барокко.</p>
</main>
<footer>Подписывайтесь на нас в Инстаграме</footer>
Как понять
СкопированоТег <main> помогает собрать самую важную информацию на странице в одном контейнере. <main> — один из ориентиров (landmark), к которому скринридер может удобно перейти. Также <main> считают основным содержимым встроенные в браузеры режимы для чтения: они отбрасывают ваши стили и прячут всё остальное, кроме главного контента.
В <main> помещают главное содержимое — то, которое больше нигде не повторяется на сайте. Соответственно, второстепенные элементы сюда не входят: шапка сайта, подвал, боковые панели, ссылки навигации, информация об авторских правах, логотипы сайта и поисковые формы, как правило, остаются вне контейнера <main>.
Единственный случай, когда поисковую форму стоит положить в <main> — это когда она является главным элементом на странице, например, на странице поиска.
Как пишется
СкопированоНа странице может быть только один <main>. Однако спецификация уточняет:
В документе не должно быть больше одного
<main>, у которого нет атрибутаhidden
Получается, что можно иметь и другие <main hidden>, но это равносильно тому, что их не будет на странице. Это исключение сделано специально для навигации в одностраничных приложениях (SPA).
Этот тег парный, обязательно закрывать его с помощью <.
Атрибуты
СкопированоУ <main> нет своих атрибутов: к нему можно применить все глобальные атрибуты.
Ещё примеры
Скопировано
<header> Бургерочная «Минутка»</header><main> <h1>О команде</h1> <p>Мы готовим бургеры с 2011 года. Это долго.</p></main>
<header>
Бургерочная «Минутка»
</header>
<main>
<h1>О команде</h1>
<p>Мы готовим бургеры с 2011 года. Это долго.</p>
</main>
На практике
Скопированосоветует
Скопировано🛠 С виду <main> — это обычный <div>, но он семантически более важен для поисковиков. Обычно это блок, в котором расположен самый основной и важный блок страницы, чтобы поисковик индексировал его с повышенным приоритетом.
советует
Скопировано🛠 Тег <main> появился в HTML не так давно. Поэтому даже опытные разработчики не всегда понимают его предназначение и не добавляют его в код.
Я всегда оборачиваю в этот тег всё, кроме <header>, <footer> и <aside>. Таким образом поисковый робот быстрее найдёт основную информацию на сайте и лучше его проиндексирует.