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 撰写