我知道在很多情况下,HTML元素不仅仅是简单地影响页面语义,而且附加的功能使它成为一个无需动脑筋的选择。例如,尽管存在一个textbox
ARIA角色,但只要可能,使用<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中隐式角色的完整列表。