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

















