我知道,在许多情况下,HTML 元素不仅仅是简单地影响页面的语义,而且附加功能使其成为不费吹灰之力的选择。例如,虽然有
textbox
ARIA 角色,但几乎总是尽可能使用 <input>
或 <textarea>
元素。
但是,对于“语义”HTML 元素,我找不到任何信息表明它们除了提供默认的 ARIA 角色以实现可访问性并提供一些较小的代码可读性增强之外,还做了其他事情。例如,<main>
元素的
only目的(据我所知)似乎是一个“快捷方式”,可以避免输入一些额外的字符
<div role="main">
,这也导致可读性略有提高。
那么,这种微小的可读性改进真的是唯一使用
<main>
而不是<div role="main">
的原因吗,或者还有其他我可能会遗漏的原因吗?有什么可以想象的理由让我更喜欢后者吗?
使用语义 HTML 对页面进行语义结构化,使内容对于浏览器、浏览器扩展、搜索引擎和其他工具来说是机器可读的,而无需扩展它们的代码以涵盖 ARIA。
这对于可访问性尤其重要,因为辅助技术就是这样的工具,可能会为某些角色附加额外的功能。通常,这些依赖于浏览器的可访问性 API,但有几个可以覆盖不同的平台。
浏览器的阅读模式,例如,可以轻松地从
<main>
中提取内容。处理角色属性也会使编码变得更加困难。
如果您不需要覆盖 ARIA 属性,那么编写用户样式表以提高可访问性会更容易。
W3C 写了一个关于使用 aria 的完整文档:W3C 使用 ARIA
ARIA 的第一条规则解释了您优先考虑具有内置语义和行为的本机 HTML 元素或属性。
在您的示例中,该元素是具有隐式主要角色的本机 HTML 元素。你可以看看HTML隐式角色的完整列表。