该元素的隐式原生角色语义不会被映射到无障碍API。参见同义词 presentation。
注
关于 ARIA 1.1
none 角色的说明。
在 ARIA 1.1 中,工作组将 none 作为 presentation
角色的同义词引入,是由于作者对“presentation”含义理解有歧义。许多人误认为 role="presentation" 等同于
aria-hidden="true",因此 role="none" 更清晰直接。
该角色适用于:当元素用以改变页面外观,但无交互、结构意义,或用来为不支持 WAI-ARIA 的旧浏览器提供可访问的降级。
示例用法:
对于任何带none/presentation角色且不可聚焦的元素,用户代理不得向无障碍API暴露其原生隐式语义(角色及其属性)。但必须暴露内容和所有未显式声明none/presentation角色的后代。因此,该角色导致元素自身无角色或被移出无障碍树,但不影响其中内容被暴露。
例如,以下两个标记片段对无障碍API暴露结果类似:
<!-- 1. role="none" 消除了标题元素的隐式 heading 语义,但不会影响其内容,包括内部链接。 -->
<h1 role="none"> Sample Content <a href="...">let's go!</a> </h1>
<!-- 2. span 没有隐式角色,无重要无障碍属性,仅暴露内容及其子链接。 -->
<span> Sample Content <a href="...">let's go!</a> </span>
在HTML中,<img> 元素无论图片类型都被视为整体。因此HTML上设置 role="none" 或
role="presentation",等价于 aria-hidden="true"。如要让图片内容可访问,可用
<object>、<iframe> 元素或内联SVG,并按图像内容可访问原则处理。
作者不应为应用 none/presentation
角色的图片提供有意义的文本替代(如在HTML中用 alt="")。
下例中,容器 img 已由标题段落妥善标注。在该场景下,可以将 img 元素设为
none/presentation,由容器承担角色与文本替代。
<div role="img" aria-labelledby="caption">
<img src="example.png" role="none" alt="">
<p id="caption">A visible text caption labeling the image.</p>
</div>
下例中,锚点(HTML a 元素)作为treeitem,列表项(li)被设置为 none/presentation
以覆盖其原生语义。
<ul role="tree">
<li role="none">
<a role="treeitem" aria-expanded="true">An expanded tree node</a>
</li>
…
</ul>
none/presentation
主要用于带有默认无障碍API角色语义的元素。有些元素只有配合特定子项才语义完整,如HTML中 table 元素需有 tr(隐式 row
角色),而 tr 又需有 th 或 td(分别为 columnheader、rowheader 和 cell
角色)。同样,列表需有子项。WAI-ARIA文档称此类补全语义的子项为“允许的无障碍子角色”。
如果将 none/presentation
角色显式或继承应用到带有隐式WAI-ARIA角色、且要求“允许的无障碍子角色”的元素上,则用户代理必须也为所有无显式角色声明的无障碍后代添加继承的none角色;对于原生要求特定子元素的标签,也需要为这些无显式角色的子项继承none角色。
任何带显式/继承 none/presentation 且不可聚焦的元素,用户代理必须忽略其所有特有的无障碍属性。例如在HTML中,ul 或 ol 带有
none/presentation 时,其 li 的原生意义也会被移除;同理,table
的 thead、tbody 等后代的结构语义也会被移除。
注
只有与WAI-ARIA
“允许的无障碍子角色”对应的隐式语义会被移除,其它内容不受影响(包括嵌套表格、嵌套列表,除非这些元素也被设为none/presentation)。
比如,根据无障碍API,下列标记会有相同或非常接近的(generic或none)角色与内容:
<!-- 1. [role="none"] 移除了 'list' 和 'listitem' 隐式语义,不影响内容。 -->
<ul role="none">
<li> Sample Content </li>
<li> More Sample Content </li>
</ul>
<!-- 2. "foo" 无隐式角色,仅暴露内容。 -->
<foo>
<foo> Sample Content </foo>
<foo> More Sample Content </foo>
</foo>
注
还有其它角色(如 feed、listbox)与特定子项有此继承关系,但表格和列表最常见。
对于带显式或继承 none/presentation 角色的元素,用户代理必须将该角色继承到所有标签相关的标注元素(如table的caption),使该label也去除原生语义。
编辑注
有关none/presentation角色冲突的解决说明已移至处理作者错误