我正在设计一个基于Bootstrap框架的设计系统。其中一个主要目标是实现无障碍性。在实现Bootstrap选项卡时,我发现它们将 role="presentation"
应用于导航列表中的列表项。
因此,我从Bootstrap模板中组合了一小段测试HTML:
<ul class="nav nav-tabs">
<li role="presentation" class="active"><a href="#">Home</a></li>
<li role="presentation"><a href="#">Profile</a></li>
<li role="presentation"><a href="#">Messages</a></li>
</ul>
<ul class="nav nav-tabs">
<li class="active"><a href="#">Home</a></li>
<li><a href="#">Profile</a></li>
<li><a href="#">Messages</a></li>
</ul>
ARIA规范指出:呈现(presentation)是一种角色,适用于元素改变页面外观但没有与元素类型暗示的所有功能、交互或结构相关性的情况。在我看来,li元素对于使用辅助功能设备的人来说具有结构相关性,因为它们告诉您有多少个选项卡存在。例如,如果您发现第三个选项卡包含您感兴趣的信息,导航到列表并知道有三个选项卡将使您更快地找到所需内容。
此外,使用ChromeVox访问该测试HTML时,列表的公告相同。因此,该角色似乎没有任何实际效果。
我已经在谷歌上搜索了这个问题,但没有找到任何讨论。那么,有人知道这是Bootstrap框架的一部分原因吗?
presentation
,以及在1.0版本中。有些措辞标记为presentation
和以下内容将不会在屏幕阅读器中显示,这让我有点担心。Bootstrap在这里使用它有点令人惊讶。 - ruffin<a>
标签缺少其片段标识符。通常情况下,a
标签会被强制使用#
在href
中以便将它们放入焦点顺序中,但如果示例基本上是从 Bootstrap 文档中复制而来,则可能是它们正在使用演示角色来隐藏后代锚点,以便为更易访问的文档提供无障碍性 API。 - vhs