HTML-элемент <main>
предназначен для основного контента (содержимого) {{HTMLElement("body")}} документа (страницы). Основной контент состоит из контента, который непосредственно относится к главной теме документа или её развивает.
Исходный код этого интерактивного примера хранится в репозитории GitHub. Если вы хотите внести свой вклад в проект интерактивных примеров, пожалуйста клонируйте https://github.com/mdn/interactive-examples и отправьте нам "pull request" (предложение изменения кода в чужом репозитории).
Документ не должен иметь более одного элемента <main>
у которого не указан атрибут {{htmlattrxref("hidden")}}.
Категории контента | Основной поток, явный контент. |
---|---|
Разрешённое содержимое | Основной поток. |
Пропуск тега | Ни одного; Оба тега, открывающий и закрывающий, являются обязательными. |
Разрешённые родительские элементы | Те, в которых разрешается контент основного потока в качестве содержимого, но только если это иерархически корректный main элемент. |
Разрешённые ARIA роли | Роль main применяется к <main> по умолчанию, и роль presentation также разрешена. |
DOM-интерфейс | {{domxref("HTMLElement")}} |
Атрибуты
К этому элементу применимы только глобальные атрибуты.
Примечание
Содержимое элемента <main>
должно быть уникальным для документа. Содержимое, которое повторяется в наборе документов или разделах документа, такое как боковые панели, навигационные ссылки, информация об авторских правах, логотипы сайта и поисковые формы, не должно добавляться, за исключением формы поиска, если она является основной функцией страницы.
<main>
не вносит вклад в структуру документа; то есть, в отличие от таких элементов, как {{HTMLElement("body")}}, заголовков, таких как {{HTMLElement("h2")}} и т.п., <main>
не влияет на концепцию {{glossary("DOM")}} структуры страницы. Он носит исключительно информативный характер.
Пример
<!-- другой контент --> <main> <h1>Яблоки</h1> <p>Яблоко - плод яблони, который употребляется в пищу в свежем виде, служит сырьём в кулинарии и для приготовления напитков.</p> <article> <h2>Сорт "Ред Делишес"</h2> <p>Эти ярко-красные яблоки являются одними из самых популярных в Соединённых Штатах.</p> <p>... </p> <p>... </p> </article> <article> <h2>Сорт "Гренни Смит";/h2> <p>Эти сочные, зелёные яблоки являются одними из самых популярных в мире.</p> <p>... </p> <p>... </p> </article> </main> <!-- другой контент -->
Результат
{{EmbedLiveSample("Пример")}}
Проблемы доступности
Ориентир
Элемент <main>
ведёт себя как роль-ориентир main
. Ориентиры могут использоваться вспомогательными технологиями для быстрой идентификации и навигации по большим разделам документа. Предпочтительно использовать элемент <main>
вместо объявления role="main"
, если не нужна поддержка старых браузеров.
Пропуск навигации
Пропуск навигации, также известный как "skipnav", это техника которая позволяет пользователю вспомогательных технологий совершать быстрый обход больших разделов повторяющегося контента (главная навигация, информационные баннеры и т.д.). Это позволяет пользователю получить доступ к основному контенту страницы быстрее.
Добавление атрибута {{htmlattrxref("id")}} в элемент <main>
позволяет ему становится целью для ссылки пропуска навигации.
<body> <a href="#main-content">Перейти к основному контенту</a> <!-- навигация и заголовок контента --> <main id="main-content"> <!-- основной контент страницы --> </main> </body>
Режим чтения
Функционально режим чтения браузера будет искать наличие элемента <main>
, а также элементов заголовка и секционных элементов, которые преобразовывают контент в специальный вид для чтения.
Спецификации
Спецификация | Статус | Комментарий |
---|---|---|
{{SpecName('HTML WHATWG', '#the-main-element', '<main>')}} | {{Spec2('HTML WHATWG')}} | |
{{SpecName('HTML5.1', 'grouping-content.html#the-main-element', '<main>')}} | {{Spec2('HTML5.1')}} | Нет изменений с {{SpecName('HTML5 W3C')}}. |
{{SpecName('HTML5 W3C', 'grouping-content.html#the-main-element', '<main>')}} | {{Spec2('HTML5 W3C')}} | Первоначальное определение. |
Поддержка браузерами
Элемент <main>
широко поддерживается. Для Internet Explorer 11 и ниже предлагается добавить роль {{glossary("ARIA")}} "main"
в элемент <main>
, чтобы обеспечит его доступность (программы для чтения с экрана, такие как JAWS, используемые совместно со старыми версиями Internet Explorer, смогут понять семантическое значение элемента <main>
после добавления атрибута role
).
<main role="main"> ... </main>
{{Compat("html.elements.main")}}
Смотрите также
- Основные структурные элементы: {{HTMLElement("html")}}, {{HTMLElement("head")}}, {{HTMLElement("body")}}
- Связанные с этим разделом элементы: {{HTMLElement("article")}}, {{HTMLElement("aside")}}, {{HTMLElement("footer")}}, {{HTMLElement("header")}}, or {{HTMLElement("nav")}}
- ARIA: роль main