可访问的 SVG 图标

Avatar of Chris Coyier
Chris Coyier

DigitalOcean 为您旅程的每个阶段提供云产品。立即开始使用 200 美元的免费额度!

“SVG 图标最易访问的 HTML 是什么?”这个问题没有一刀切的答案,因为图标在网站上的作用各不相同。我个人比较喜欢 Heather Migliorisi 的研究,它涵盖了所有这些内容,但我可以快速总结一下:如果图标是装饰性的,则将其隐藏;如果图标是独立的,则为其添加标题;如果图标是链接,则让链接发挥作用。以下是这三种可能性

图标是装饰性的

也就是说,图标只是在那里看起来很漂亮,但如果它完全消失了也没关系。如果是这种情况

<svg aria-hidden="true" ... ></svg>

无需宣布图标,因为它旁边的标签已经完成了这项工作。因此,我们不读取它,而是将其从屏幕阅读器中隐藏。这样,标签就可以发挥其应有的作用,而 SVG 不会妨碍它。

图标是独立的

这里的意思是,图标没有伴随可见的文本标签,并且本身就是一个有意义的操作触发器。这是一个棘手的问题。随着时间的推移,它变得越来越好,对于现代浏览器来说,您只需要

<svg role="img"><title>Good Label</title> ... </svg>. 

这适用于 <button> 内部的 SVG,或者如果 SVG 本身扮演“按钮”的角色。

……并且链接是有意义的操作。重要的是链接具有良好的文本。如果链接具有可见文本,则图标是装饰性的。如果 SVG 是链接,它被包装在 <a> 中(而不是内部 SVG 链接),那么,为其提供一个可访问的标签,例如

<a href="/" aria-label="Good Label"><svg aria-hidden="true" ... ></svg></a>

……或者,在链接和隐藏的 SVG 中添加一个 <span class="screen-reader-only"> 文本。


我相信这与不仅来自 Heather,还来自 SaraKittyFlorens 的建议相一致。