Кратко
СкопированоARIA-роль ориентира, которая определяет область хедера или «шапки» сайта. Обычно в хедере размещается название компании, логотип, основная навигация по сайту, поиск и похожее содержимое.
Роль banner есть у <header> по умолчанию.
Пример
Скопировано
<div class="header" role="banner"> <span>Мир тапиров</span></div><main> <h1>Сайт о тапирах</h1> <p>Полотно текста о тапирах.</p></main>
<div class="header" role="banner">
<span>Мир тапиров</span>
</div>
<main>
<h1>Сайт о тапирах</h1>
<p>Полотно текста о тапирах.</p>
</main>
Скринридер не расскажет о роли такой области, но у пользователя появится возможность быстро перейти к хедеру с помощью специальных клавиш.
Как пишется
СкопированоДобавьте к тегу role. Лучше всего подойдут семантически нейтральные <div> и <span>. В большинстве случаев используйте <header> вместо явной роли banner.
Хедер может быть как у страницы, так и у отдельных элементов на ней — <article> и <main>. Когда внутрь этих тегов вложен <header>, скринридер не считает их ориентирами. Так что роль banner есть только у хедера, который напрямую вложен в <body>.
У страницы может быть только один ориентир banner. При этом хедер из <iframe>, если встраиваете на текущую страницу другую, не попадает в список ориентиров.
Можете задавать элементам с ролью banner любые глобальные ARIA-атрибуты. Чаще всего пригодятся:
ariaдля невидимой подписи (краткого названия) к области хедера;- label aria, когда у- labelledby bannerесть видимая подпись.
Пример с хедером, который назван через aria:
<header aria-label="Главный"> <!-- Содержимое хедера сайта --></header>
<header aria-label="Главный">
<!-- Содержимое хедера сайта -->
</header>
Пример хедера с aria:
<header aria-labelledby="label"> <span id="label">Каталог товаров</span> <!-- Остальное содержимое хедера --></header>
<header aria-labelledby="label">
<span id="label">Каталог товаров</span>
<!-- Остальное содержимое хедера -->
</header>
Как понять
СкопированоРоль banner создаёт ориентир на странице. Это значит, что пользователи скринридеров смогут быстро переместиться к этой части страницы с помощью горячих клавиш или через меню со всеми ориентирами.
На практике
Скопированосоветует
СкопированоВ Safari до 17 версии был баг, из-за которого у всех элементов <header> со страницы вычислялась роль banner.
<header> <!-- Элементы хедера сайта --></header><main> <article> <header> <!-- Содержимое хедера article --> </header> <!-- Какой-то текст --> </article></main>
<header>
<!-- Элементы хедера сайта -->
</header>
<main>
<article>
<header>
<!-- Содержимое хедера article -->
</header>
<!-- Какой-то текст -->
</article>
</main>
Из-за этого в списке ориентиров накапливалось приличное количество banner.