ARIA:presentation 角色

presentation 角色及其同义词 none 会阻止元素的隐式 ARIA 语义在无障碍树中显示。

该元素的内容仍然可供辅助技术访问;仅容器的语义(在某些情况下,包括必需的关联后代)不再将它们的映射公开到无障碍 API。

描述

虽然 ARIA 主要用于表达语义,但在某些情况下,将元素的语义隐藏在辅助技术中会很有帮助。这是通过 presentation 角色或其同义词角色 none 来完成的,它们声明该元素仅用于展示,因此不包含任何无障碍语义。

编写 <h2 role="presentation">民主消亡于黑暗之中</h2> 会删除 h2 元素的标题语义,使其等效于 <div>民主消亡于黑暗之中</div>。标题角色语义已删除,但内容本身仍然可用。

当元素包含必需的后代时,例如各种 <table> 元素以及 <li> 作为 <ul><ol> 的子元素,表格或列表上的 presentationnone 角色会删除应用了该角色的元素及其必需后代元素的默认语义。

如果 presentationnone 应用于 <table> 元素,则后代 <caption><thead><tbody><tfoot><tr><th><td> 元素会继承该角色,因此不会公开给辅助技术。但是,<th><td> 元素内部的元素(包括嵌套表格)会公开给辅助技术。

html
<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> 是一个特例。即使直接应用了 presentationnone 角色,它的角色也会公开。浏览器会忽略可聚焦元素(包括链接和输入)或任何设置了 tabindex 属性的元素上的 role="presentation"role="none"。如果元素包含任何全局 ARIA 状态和属性,例如 aria-describedby,浏览器也会忽略角色的包含。

注意: 具有 role="presentation" 的元素不是无障碍树的一部分,不应该有无障碍名称。不要使用 aria-labelledbyaria-label

关联的 WAI-ARIA 角色、状态和属性

无。如果设置了全局 ARIA 状态和属性,则会忽略 presentationnone,并使用元素的隐式角色。

示例

html
<hr role="none" />

规范

规范
无障碍富互联网应用程序 (WAI-ARIA)
# presentation

另请参阅