Где разместить атрибут aria-controls в разметке моих вкладок
Я настраиваю раздел содержимого с вкладками на своей странице с помощью скрипта, который следует следующему синтаксису:
<!-- Clickable tab links -->
<ul class="js-tablist">
<li id="tab1" class="js-tab active"><a href="#tabpanel1">Tab 1</a></li>
<li id="tab2" class="js-tab"><a href="#tabpanel2">Tab 2</a></li>
<li id="tab3" class="js-tab"><a href="#tabpanel3">Tab 3</a></li>
</ul>
<!-- Tab panels -->
<div id="tab-set" class="js-tabpanel-group">
<section id="tabpanel1" class="js-tabpanel">__CONTENT__</section>
<section id="tabpanel2" class="js-tabpanel">__CONTENT__</section>
<section id="tabpanel3" class="js-tabpanel">__CONTENT__</section>
</div>
Я буду устанавливать различные роли Арии(role="tablist", role="tab", role="tabpanel", и т. д.) На этой структурной разметке с помощью javascript (поскольку если нет сценариев, то нет и вкладок), но я не уверен, где разместить мои атрибуты "Aria-controls". Должны ли они идти на элемент <li> или на его дочерний элемент <a>? Или это не имеет значения? Действительно, тот же вопрос можно было бы задать и о role="tab" и tabindex="0" - должны ли эти вещи идти в пункт списка или якорь?
2 ответа:
Поместите
aria-controlsна элемент, который получаетrole="tab".
aria-controlsэто то, что создает связь между вкладкой и ее панелью. Смотрите третий маркер в описании дляaria-controlsиз спецификации: https://www.w3.org/TR/wai-aria/states_and_properties#aria-controlsЧтобы ответить на ваш следующий вопрос, поместите
role="tab"на<a href>, так как он уже настроен для получения фокуса клавиатуры и может быть использован браузером. Это также означает, что вам не нужно будет использоватьtabindexна все.Рассмотрим также бросание
role="presentation"на элементы<li>иrole="tablist"на элементы<ul>(тем более, что вы делаете<li>инертным сrole="presentation").Будьте готовы также управлять навигацией по клавишам со стрелками, поскольку с помощью ролей вкладок вы, по сути, говорите опытному пользователю, что эти вкладки будут вести себя как вкладки в ОС, которые используют клавиши со стрелками для переключения между вкладками.
Дополнительные ресурсы, которые стоит проверить выход:
После всего этого, пожалуйста, протестируйте его в программе чтения с экрана, чтобы убедиться, что он ведет себя так, как вы ожидаете.
- https://www.marcozehe.de/2013/02/02/advanced-aria-tip-1-tabs-in-web-apps/ (от парня, который работает над accessibility в Mozilla и является пользователем программы чтения с экрана)
- http://heydonworks.com/practical_aria_examples/#tab-interface (от парня, который консультирует по доступности и исправлению)
Это демо показывает используете tabpanels с арией. Программа чтения с экрана Jaws предоставляет ярлык для перехода от вкладки к соответствующей панели вкладок на основе отношения, созданного атрибутом Aria-controls.
Если вам интересно, это демо показывает используете tabpanels без Ария.
Когда вы создаете набор панелей вкладок, вы хотите, чтобы виджет представлял одну точку табуляции в порядке клавиатуры. Когда кто - то использует клавишу tab для перемещения на наборе вкладок фокус должен перейти на текущую выбранную вкладку, а следующее нажатие клавиши tab должно вернуть фокус обратно в содержимое.
Для этого можно использовать блуждающий tabindex. Фокусироваться должна только выбранная в данный момент вкладка. Все остальные вкладки (в частности, элементы
<a>, которые их представляют) должны иметь набор tabindex="-1". Это предотвращает их включение в последовательность вкладок клавиатуры.Сценарий, который позволяет кому-то циклически проходить вкладки, использующие клавиши со стрелками влево/вправо, также должны обновить значения атрибута tabindex на каждой вкладке, чтобы все, кроме выбранной в данный момент вкладки, имели значение tabindex -1. Здесь естьрабочая демонстрация tabpanels .