我正在使用遵循以下语法的脚本在我的页面中设置一个选项卡式内容部分:
<!-- 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>
我将设置各种 ARIA 角色( role="tablist"
, role="tab"
, role="tabpanel"
等)在此结构脚本上如果没有通过 javascript 的标记选项卡),但我不确定将我的“aria-controls”属性放在哪里。他们应该继续 <li>
元素还是它的 <a>
子元素?还是无所谓?事实上,关于 role="tab"
和 tabindex="0"
可以问同样的问题——这些东西应该放在列表项还是锚点上?
原文由 RickL 发布,翻译遵循 CC BY-SA 4.0 许可协议
将
aria-controls
放在得到role="tab"
的项目上。aria-controls
是创建选项卡与其面板之间关系的原因。请参阅规范中aria-controls
描述中的第三个项目符号: https ://www.w3.org/TR/wai-aria-1.1/#aria-controls要回答您的后续问题,请将
role="tab"
放在<a href>
上,因为它已经准备好接收键盘焦点并可由浏览器操作。这也意味着您根本不需要使用tabindex
。Consider also throwing a
role="presentation"
on the<li>
elements androle="tablist"
on the<ul>
(especially since you rendering the<li>
与role="presentation"
惰性)。还要准备好管理箭头键导航,因为通过使用选项卡角色,您实际上是在告诉专家用户这些选项卡的行为类似于操作系统中的选项卡,它支持箭头键在选项卡之间切换。
值得一试的其他资源:
毕竟,请在屏幕阅读器中对其进行测试,以确保它的行为符合您的预期。