J5.03.3first rule of ARIA设计研究

优先使用原生语义元素

别名: ARIA 第一原则 · 原生语义 · 原生控件

概念解释

能用按钮就不要用一块可点击的空盒子去冒充。原生语义元素自带角色、焦点、键盘行为和平台映射,是浏览器厂商维护的一整包。补充属性只能声明「请把我当成按钮」,包里其余的部分仍要作者自己补。优先原生,不是审美偏好,是少维护一套自己拼的合同。

机制

原生元素是捆绑交付:角色进入树、可聚焦、激活键生效、移动端触控与桌面键盘走同一套映射。作者写补充角色时,声明的只是树上的类型标签;焦点能不能落到、按键能不能激活、不同阅读器会不会按按钮来报,都不自动附赠。捆绑由浏览器跨版本、跨组合去测;自拼的那包由产品自己去测,漏一个组合就破。

第二层是更新路径。平台改映射、修 bug,原生元素跟着升级;自拼控件停在作者写下声明的那天。优先原生,是把「这是按钮」这件事交给会长期活着的那一层。

怎么研究

同一交互做成两个实现:原生元素,以及视觉相同的自拼控件加补充角色。在 NVDA+Firefox、JAWS+Chrome、VoiceOver+Safari、TalkBack 上各走一遍键盘或系统返回手势,记哪些组合丢焦点、丢激活、角色报错。

自变量:原生 vs 自拼。 因变量:可聚焦组合数、激活成功组合数、播报类型是否一致。

不要只在作者自己的浏览器里看一眼树。缺口往往出现在没测的那一对阅读器与浏览器上。

边界

原生词表没有的模式(自定义选项卡、树)无法优先原生,这时才轮到补充,前提是行为也要自己做齐。原生元素被样式剥到认不出来(焦点环去掉又没替代、可点区域和元素范围对不上),优先原生的优势会被做掉。有的平台对原生控件有额外限制(不能改外观到指定程度),产品会被迫自绘——那是权衡,不是「自拼和原生等价」。

怎么落地

  • 按钮、链接、标题、列表、表单控件、表格先用原生元素,再用样式去贴近视觉。
  • 只有确认原生词表没有对等物时,才开始自拼并补角色。
  • 验证:在元素选择器里搜一遍自拼的可点击盒子。每一个都能换成原生元素的,换掉后再用阅读器走一次激活——少掉的那些失败组合,就是原生包原本替你扛住的部分。

延伸

  • 同组J5.03.1 补充属性用于原生语义不足时 · J5.03.2 错误的属性比没有属性更糟
  • 相邻J3.01 键盘可达 · J5.11 语义补充属性的正确使用
  • 站内检索first rule of ARIA · native semantics · native elements

同组卡片

快捷操作

分享

分享当前页面

ios_share

https://hci.top/zh/handbook/J5.03.3