语义标签与ARIA角色:为什么是一个还是另一个?



我知道在很多情况下,HTML元素不仅仅是简单地影响页面语义,而且附加的功能使它成为一个无需动脑筋的选择。例如,尽管存在一个textboxARIA角色,但只要可能,使用<input><textarea>元素几乎总是更可取的。

然而,对于语义"HTML元素,我找不到任何信息表明它们除了为可访问性提供默认ARIA角色和提供一些小的代码可读性增强之外还做了什么。例如,<main>元素的only目的(据我所知)似乎是一个"快捷方式"。以避免输入一些额外的字符<div role="main">,也导致可读性略有提高。

那么,这个微小的可读性改进真的是使用<main>而不是<div role="main">唯一的原因吗,还是我可能遗漏了其他原因?有什么可以想象的理由让我更喜欢后者吗?

用语义HTML对你的页面进行语义结构,使内容对浏览器、浏览器扩展、搜索引擎和其他工具来说都是机器可读的,而不需要扩展他们的代码来覆盖ARIA。

这对于可访问性尤其重要,因为辅助技术就是这样的工具,它可以为某些角色附加额外的功能。通常,这些依赖于浏览器的可访问性API,但有几个覆盖不同的平台。

例如,浏览器的读取模式可以很容易地从<main>中提取内容。此外,处理角色属性使编码变得更加困难。

如果你不需要覆盖ARIA属性,那么编写用户样式表来提高可访问性会更容易。

W3C已经写了一个关于使用aria的完整文档:using aria by W3C

ARIA的第一条规则解释了使用已经内置的语义和行为来优先处理原生HTML元素或属性。

在您的示例中,元素是具有隐式main角色的原生HTML元素。您可以查看HTML中隐式角色的完整列表。

最新更新