
在 SVG 交互式地图中,应将整个 元素包裹在单个 标签内,而非为每个 单独添加链接;此举符合 WCAG 推荐实践,避免键盘用户重复触发相同跳转,并提升屏幕阅读器体验。
在 svg 交互式地图中,应将整个 ` 不要依赖 ? 当前 遵循以上结构,您的法国地图不仅满足 WCAG 2.1 AA 级别要求,更能为所有用户(包括键盘操作者、屏幕阅读器使用者)提供一致、高效、直观的交互体验。
都是独立 ,一个大区含 8 个路径 → 8 个可聚焦链接 → 屏幕阅读器需朗读 8 次相同目标,显著降低效率与用户体验。 本身即语义化容器,代表“一个地理区域”,将其整体设为可点击单元,更契合真实世界认知模型。⚠️ 注意事项与优化建议
1. 可访问名称必须显式提供
data-name 或 作为链接名——它们不被默认用于辅助技术的链接上下文。务必使用:
aria-label="Île-de-France"(最简明可靠) 子元素(SVG 原生支持,且兼容性极佳):<a href="https://www.php.cn/link/d3635b07dc3d11d018d94dce40ba210c">
<title>Île-de-France</title>
<path d="…"></path><path d="…"></path></a>
是 SVG 中定义可访问名称的首选原生方式,比 更适合短名称场景;若同时存在 和 ,部分屏幕阅读器可能重复播报,故建议仅保留 用于命名, 仅用于补充长描述(如“法国首都圈,含巴黎及周边8省”)。2. SVG 根元素角色:通常无需手动设置
role="img" 语义(当其内容为纯图形且无交互时)。 role="img" 反而会抑制链接语义的暴露。 role 属性,让浏览器和辅助技术基于内部结构(如 )自动推导语义。 role="figure"(符合 ARIA 1.2 定义),但非必需:<svg viewbox="..." aria-labelledby="map-title" role="figure"><title id="map-title">Interactive Map of France</title>
<!-- 内容 --></svg>
3. 工具提示(Tooltip)需确保可访问
仅靠 aria-describedby 关联,但需满足:
aria-controls 显式关联;aria-live="polite" 或 JS 控制显示/隐藏状态); 提供名称 + 补充说明,避免额外 tooltip 元素复杂度。✅ 总结:三步落地可访问地图链接
步骤
推荐做法
示例
1. 链接范围
整个
包裹单个
2. 可访问名称
使用
(首选)或 aria-label
3. SVG 角色
不加
role,依赖原生语义
(无 role 属性)










