ARIA:presentation 角色
presentation
角色及其同义词 none
会阻止元素的隐式 ARIA 语义在无障碍树中显示。
该元素的内容仍然可供辅助技术访问;仅容器的语义(在某些情况下,包括必需的关联后代)不再将它们的映射公开到无障碍 API。
描述
虽然 ARIA 主要用于表达语义,但在某些情况下,将元素的语义隐藏在辅助技术中会很有帮助。这是通过 presentation
角色或其同义词角色 none
来完成的,它们声明该元素仅用于展示,因此不包含任何无障碍语义。
编写 <h2 role="presentation">民主消亡于黑暗之中</h2>
会删除 h2 元素的标题语义,使其等效于 <div>民主消亡于黑暗之中</div>
。标题角色语义已删除,但内容本身仍然可用。
当元素包含必需的后代时,例如各种 <table>
元素以及 <li>
作为 <ul>
或 <ol>
的子元素,表格或列表上的 presentation
或 none
角色会删除应用了该角色的元素及其必需后代元素的默认语义。
如果 presentation
或 none
应用于 <table>
元素,则后代 <caption>
、<thead>
、<tbody>
、<tfoot>
、<tr>
、<th>
和 <td>
元素会继承该角色,因此不会公开给辅助技术。但是,<th>
和 <td>
元素内部的元素(包括嵌套表格)会公开给辅助技术。
<ul role="presentation">
<li>
<a href="#">Link 1</a>
</li>
<li>
<a href="#">Link 2</a>
</li>
<li>
<a href="#">Link 3</a>
</li>
</ul>
由于 presentation
角色应用于 <ul>
元素,每个子元素 <li>
元素都会继承 presentation
角色。这是因为 ARIA 要求 listitem
元素具有父 list
元素。在这种情况下,虽然 <li>
元素不会公开给辅助技术,但这些必需元素的后代会公开。如果我们在其中一个 <li>
中嵌套了一个列表,那么该列表将对辅助技术可见。对于没有必需子元素的元素,在具有 role="presentation"
或 role="none"
的元素内部嵌套的任何元素都将保留其语义。在这种情况下,包含在这些 <li>
元素内的 <a>
元素会公开。
<a>
是一个特例。即使直接应用了 presentation
或 none
角色,它的角色也会公开。浏览器会忽略可聚焦元素(包括链接和输入)或任何设置了 tabindex 属性的元素上的 role="presentation"
和 role="none"
。如果元素包含任何全局 ARIA 状态和属性,例如 aria-describedby
,浏览器也会忽略角色的包含。
注意: 具有 role="presentation"
的元素不是无障碍树的一部分,不应该有无障碍名称。不要使用 aria-labelledby
或 aria-label
。
关联的 WAI-ARIA 角色、状态和属性
无。如果设置了全局 ARIA 状态和属性,则会忽略 presentation
或 none
,并使用元素的隐式角色。
示例
<hr role="none" />
规范
规范 |
---|
无障碍富互联网应用程序 (WAI-ARIA) # presentation |
另请参阅
aria-hidden
与role="presentation/none"
- 由 Scott O'Hara 撰写