Можете ли вы использовать элемент <aside> внутри элемента <section role = "main" >?
Я занимаюсь улучшением доступности в своем HTML, используя HTML5 и WAI-ARIA.
Можно ли настроить следующую настройку?
<!-- main content -->
<section id="main" role="main">
<h1>The main content</h1>
<!-- This div needs to be here for styling reasons -->
<div class="the-content">
<p>All the text that goes with the main content</p>
</div>
<!-- the sidebar -->
<aside id="sidebar" role="complementary">
<h2>A title</h2>
<p>Some text</p>
<aside>
</section>
То, что я не уверен в том, должен ли я иметь элемент <aside>
вне контейнера <section>
и role="main"
. Это важно?
Ответы
Ответ 1
Неважно, да. Где можно определить, как содержимое тега aside
относится к основному section
.
Например:
Если содержимое в aside
связано с основной статьей, оно должно находиться внутри main section
. Однако если содержимое внутри sidebar aside tag
отличается от main
, я бы поставил его вне main section
http://html5doctor.com/aside-revisited/
https://developer.mozilla.org/en-US/docs/Web/HTML/Element/aside
Ответ 2
Да, он <aside>
внутри <section>
является вполне допустимой разметкой и будет проходить проверку W3C, если это вас беспокоит.
Элемент <section>
позволяет содержимое потока внутри, которое может включать элемент <aside>
, однако, если вы "Используйте только разделы для стилизации, вы, вероятно, должны использовать div.
Помимо этого (для каламбура) у меня есть сомнения в действительной части role=main
- в соответствии с этим, значения атрибутов единственной роли, допустимые для элементов <section>
, показаны ниже:
Сеантика по умолчанию ARIA:
role=region
.
Какие другие роли, состояния и свойства ARIA могут использоваться?
alert
, alertdialog
, application
, contentinfo
, dialog
, document
, log
, marquee
, search
или status
.
Любые глобальные атрибуты aria-*
и любые атрибуты aria- *, применимые к разрешенные роли.
Что, скорее, не включает роль main
.
Ответ 3
Спецификация (черновик редактора, которая уже включает main
), не позволяет вставить элемент main
внутри article
, aside
, footer
, header
или nav
, но он ничего не говорит о вложенности этих элементов внутри main
. Он также содержит два примера, которые используют article
и nav
(внутридокументная навигация) внутри main
. Таким образом, должно быть разрешено, по крайней мере, aside
, вложенное в article
или section
(и, следовательно, с областью до уровня). Я также могу представить случай, когда часть содержимого с некоторой дополнительной информацией внутри (например, в aside
примерах использования в Wiki WCAG) может сформируйте вместе основное содержание страницы, поэтому я не думаю, что это было бы разумно.
С другой стороны, общий алгоритм (который теперь, по-видимому, является основной причиной существования всего секционного контента, включая aside
) по-прежнему отмечен как "подверженный риску" , поэтому определение этих элементов может измениться, и может быть добавлено некоторое разъяснение.
Возможно, мы должны задать этот вопрос редакторам спецификаций HTML5?
Ответ 4
Я соглашусь с Дарреном в отношении того, где вы бросаете тег. Кроме того, ваша маркировка немного странная. Различные теги имеют роли WAI-ARIA изначально, да и вы можете перезаписать собственные роли, но зачем вам? Это сообщение о WAI-ARIA в блоге группы Paciello рассказывает об этом больше. Пример:
Вместо использования
<section id="main" role="main">
вы могли бы просто использовать <main>
, что означает одно и то же, и лучшую практику. Тег <aside>
имеет добавочную роль, добавленную изначально, так что это похоже на то, что Мое имя - Райан, на самом деле меня зовут Райан.