Web 可访问性名称推导(Accessibility Name Calculation)
字数 801 2025-11-26 16:01:44

Web 可访问性名称推导(Accessibility Name Calculation)

  1. 基础概念
    Web 可访问性名称是辅助技术(如屏幕阅读器)向用户描述的界面元素标识。它不同于视觉显示的文本标签,而是通过算法从多个属性中推导出的语义化名称。例如一个按钮可能包含图标和 aria-label,其可访问性名称优先使用 aria-label 而非图标内容。

  2. 名称推导优先级规则
    根据 W3C 的可访问性 API 映射规范,名称推导按固定顺序检测属性,一旦找到有效值即停止:

    • 步骤1:检测 aria-labelledby 属性,引用其他元素的文本内容作为名称
    • 步骤2:检测 aria-label 属性提供的直接描述
    • 步骤3:检测原生 HTML 属性(如 <img>alt<input> 关联的 <label>
    • 步骤4:提取元素内部的文本内容(如 <button>提交</button>
    • 步骤5:最后回退到元素的 title 属性
  3. 复合场景处理
    当多个名称源共存时,推导规则需处理复杂情况:

    • aria-labelledby 引用多个元素,按 DOM 顺序拼接文本
    • 隐藏元素(aria-hidden="true")的内容会被忽略
    • 递归推导:被引用的元素若自身需要名称推导,会先计算其名称
  4. 实际应用示例
    分析以下代码的可访问性名称:

    <div id="desc">验证身份</div>
    <button aria-labelledby="desc" aria-label="开始验证">点击这里</button>
    
    • 根据优先级,aria-labelledby 引用的 "验证身份" 成为名称,忽略 aria-label 和内部文本
    • 屏幕阅读器将朗读 "验证身份" 而非 "开始验证"
  5. 跨框架实现差异
    不同浏览器/辅助技术对规范的支持程度可能影响最终名称。开发者需通过浏览器开发者工具的 Accessibility 面板验证推导结果,并优先使用显式声明(如 aria-label)避免依赖隐式推导。

Web 可访问性名称推导(Accessibility Name Calculation) 基础概念 Web 可访问性名称是辅助技术(如屏幕阅读器)向用户描述的界面元素标识。它不同于视觉显示的文本标签,而是通过算法从多个属性中推导出的语义化名称。例如一个按钮可能包含图标和 aria-label ,其可访问性名称优先使用 aria-label 而非图标内容。 名称推导优先级规则 根据 W3C 的可访问性 API 映射规范,名称推导按固定顺序检测属性,一旦找到有效值即停止: 步骤1 :检测 aria-labelledby 属性,引用其他元素的文本内容作为名称 步骤2 :检测 aria-label 属性提供的直接描述 步骤3 :检测原生 HTML 属性(如 <img> 的 alt 、 <input> 关联的 <label> ) 步骤4 :提取元素内部的文本内容(如 <button>提交</button> ) 步骤5 :最后回退到元素的 title 属性 复合场景处理 当多个名称源共存时,推导规则需处理复杂情况: 若 aria-labelledby 引用多个元素,按 DOM 顺序拼接文本 隐藏元素( aria-hidden="true" )的内容会被忽略 递归推导:被引用的元素若自身需要名称推导,会先计算其名称 实际应用示例 分析以下代码的可访问性名称: 根据优先级, aria-labelledby 引用的 "验证身份" 成为名称,忽略 aria-label 和内部文本 屏幕阅读器将朗读 "验证身份" 而非 "开始验证" 跨框架实现差异 不同浏览器/辅助技术对规范的支持程度可能影响最终名称。开发者需通过浏览器开发者工具的 Accessibility 面板验证推导结果,并优先使用显式声明(如 aria-label )避免依赖隐式推导。