我们可以使用 aria 更改地标元素或 html5 的任何元素的本机语义吗?这样做在语义上是否正确且符合要求?
假设我想使用 dialog 元素作为表示元素,并且想知道我们是否可以将其角色更改为文档或区域以表明它不用作通常的对话框。
我想将整个文档结构放在dialog元素内,使其成为body元素的唯一直接子元素。我还想将它用作文档中其他标志性区域的容器,例如标题、导航、标题本身、主要元素等,它们也都包含在各自的对话框元素中。
我不太熟悉 aria,所以我不知道如何准确地更改角色和其他必要条件,以使文档在语义上正确并符合一致性检查器。
我知道仅在 html5 中我们无法以有效的方式做到这一点,我想知道我们是否可以做到这一点并且仍然在语义上正确并符合 ARIA 的要求?
您可以更改元素的自然角色,但您可能违反了 ARIA 基本原则。
ARIA 的基本原则告诉您,首先应该尝试使用正确的元素来做正确的事情,即拥有正确的自然角色,而不需要覆盖任何内容。 仅当您没有更好的解决方案时才应使用 ARIA。该规则传统上表述如下:仅在必要时才使用 ARIA。
就您而言,它基本上意味着您应该仅将
<dialog>
用于对话框,就像您将 <p>
用于段落或 <h1>
-<h6>
用于标题而不是其他内容一样。
视觉设计不是选择不合适元素的借口,因为您始终可以调整 CSS。
实际上,在大多数情况下,覆盖元素的自然角色是有效的,但这样做时,您总是冒着以下风险:该浏览器中的特定辅助工具可能不支持将该特定角色从 X 更改为 Y该操作系统,由于多个层的各种错误和/或限制(实际上可能有很多专业,并且它们随着更新而不断变化)。 结果是该角色保持 X,如果这不是您的意思,则可访问性可能会完全被破坏。
所以根本不推荐。通过使用正确的元素来实现其最初的含义,并调整您的 CSS,您会变得更好、更安全。