无障碍
图标可以传达各种有意义的信息,因此它们能够接触到尽可能多的人非常重要。
Font Awesome 图标和无障碍
有相当一部分人存在视力和听力障碍:失明、弱视和视觉障碍占世界总人口的近 10%,而致残性听力损失占世界总人口的 5% 以上。
因此,确保支持残疾的技术,如屏幕阅读器,要么忽略,要么更好地理解您在网络上使用的图标至关重要。
图标在网站、应用程序和其他数字场所中以两种方式使用…
图标使用 | 操作方法 |
---|---|
装饰性元素 | 如果您使用图标来添加一些额外的装饰或品牌,则无需向用户宣布它们,因为它们正在通过声音方式导航您的网站或应用程序。 此外,如果您使用图标在视觉上重新强调或添加已存在于 HTML 中的内容的样式,则无需将其重复到使用辅助技术的用户。 在这些情况下,应将图标从屏幕阅读器中隐藏,以免干扰已建立的含义。 |
语义元素 | 当您使用图标来传达含义时,您需要确保通过提供基于文本的替代文本,将此含义也传达给用户。 这适用于您通过图标缩写的內容(例如购物车的状态、未读消息的数量等),以及交互式控件(例如按钮、表单元素、切换等)。 |
使用自动无障碍功能使图标可访问
支持可访问图标的最简单方法是使用 Font Awesome 网络软件中包含的自动无障碍功能。以下是它的工作原理…
用作装饰性元素的图标
自动无障碍功能将确保 装饰性 图标被辅助技术忽略。除了您通常引用图标的方式之外,您不需要做任何额外的事情。
如果您的标记如下所示
<button type="submit"> <span class="fa-solid fa-envelope"></span> Email Us!</button>
自动无障碍功能将通过添加 aria-hidden
属性自动将其从屏幕阅读器中隐藏。虽然结果相同,但 Font Awesome 的网站字体或基于 SVG 的软件渲染的代码不同。
<button type="submit"> <span class="fa-solid fa-envelope" aria-hidden="true"></span> Email Us!</button>
<button type="submit"> <svg class="svg-inline--fa fa-envelope" aria-hidden="true" focusable="false" data-prefix="fas" data-icon="envelope" role="img" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512" data-fa-i2svg=""><path fill="currentColor" d="M48 64C21.5 64 0 85.5 0 112c0 15.1 7.1 29.3 19.2 38.4L236.8 313.6c11.4 8.5 27 8.5 38.4 0L492.8 150.4c12.1-9.1 19.2-23.3 19.2-38.4c0-26.5-21.5-48-48-48H48zM0 176V384c0 35.3 28.7 64 64 64H448c35.3 0 64-28.7 64-64V176L294.4 339.2c-22.8 17.1-54 17.1-76.8 0L0 176z"></path></svg> Email Us!</button>
用作语义元素的图标
自动无障碍功能将使用您需要使用 title
属性设置的描述为 语义 图标创建备用文本。
因此,如果您的标记如下所示(您的 title
属性包含适当的备用文本)
<button type="submit"> <i class="fa-solid fa-arrow-right" title="Next Page"></i></button>
自动无障碍功能将对其进行调整,以便在仅屏幕阅读器“看到”的支持元素中传达含义。同样,虽然结果相同,但 Font Awesome 的网站字体或基于 SVG 的软件会渲染不同的代码。
<button type="submit"> <i class="fa-solid fa-arrow-right" title="Submit My Tax Return" aria-hidden="true"></i> <span class="sr-only">Submit My Tax Return</span></button>
<button type="submit"> <svg class="svg-inline--fa fa-arrow-right" aria-labelledby="svg-inline--fa-title-ajx18rtJBjSu" data-prefix="fa-solid" data-icon="arrow-right" role="img" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512" data-fa-i2svg=""><title id="svg-inline--fa-title-ajx18rtJBjSu">Submit My Tax Return</title><path fill="currentColor" d="M438.6 278.6c12.5-12.5 12.5-32.8 0-45.3l-160-160c-12.5-12.5-32.8-12.5-45.3 0s-12.5 32.8 0 45.3L338.8 224 32 224c-17.7 0-32 14.3-32 32s14.3 32 32 32l306.7 0L233.4 393.4c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0l160-160z"></path></svg></button>
何时可以使用自动无障碍功能?
自动无障碍功能包含在 Font Awesome 的许多基于网络的软件选项中。尽管并非所有情况下都包含它,但在那些情况下,您始终可以手动使您的图标可访问。
实现方法 | 包含? | 默认情况下启用? |
---|---|---|
Vue.js 组件 | ||
React 组件 | ||
Ember 组件 | ||
Angular 组件 | ||
套件托管 SVG + JS | ||
自行托管 SVG + JS | ||
套件托管 网站字体(通过 JS 加载) | ||
套件托管 网站字体(通过 CSS 加载) | ||
自行托管网站字体(通过 JS 加载) | ||
自行托管网站字体(通过 CSS 加载) | ||
SVG 雪碧图 | ||
SVG 统一码 | ||
纯 SVG |
手动使图标可访问
在自动无障碍功能不可用或您希望自行实施最佳实践的情况下,您可以使用以下说明,使您的图标尽可能地对所有人可访问。
用作装饰性元素的图标
如果您的图标纯粹是装饰性,则需要手动将 1 或 2 件事设置到图标的代码段中,以确保屏幕阅读器和辅助技术在向人朗读页面时忽略它们。
网站字体实现 | SVG 实现 |
---|---|
1. 在图标中添加 aria-hidden="true" 属性。 | 1. 在 <svg> 元素中添加 aria-hidden="true" 属性 |
2. 在 <svg> 元素中添加 role="img" |
<!-- Decorative Web Fonts-based Icon --><i class="fa-solid fa-camera-retro" aria-hidden="true"></i>
<!-- Decorative SVG-based Icon --><svg aria-hidden="true" role="img" xmlns="http://www.w3.org/2000/svg"> <path d="M220.6 121.2L271.1 96 448 96v96H333.2c-21.9-15.1-48.5-24-77.2-24s-55.2 8.9-77.2 24H64V128H192c9.9 0 19.7-2.3 28.6-6.8zM0 128V416c0 35.3 28.7 64 64 64H448c35.3 0 64-28.7 64-64V96c0-35.3-28.7-64-64-64H271.1c-9.9 0-19.7 2.3-28.6 6.8L192 64H160V48c0-8.8-7.2-16-16-16H80c-8.8 0-16 7.2-16 16l0 16C28.7 64 0 92.7 0 128zM168 304a88 88 0 1 1 176 0 88 88 0 1 1 -176 0z"></path></svg>
<!-- Decorative SVG Sprites-based Icon --><svg aria-hidden="true" role="img"> <use xlink:href="fa-solid.svg#camera-retro"></use></svg>
用作语义元素的图标
如果您的图标具有语义 含义,您需要手动添加一些内容,以确保您的图标具有适当的可访问性
网站字体实现 | SVG 实现 |
---|---|
1. 在图标中添加 aria-hidden="true" 属性。 | 1. 在 <svg> 元素中添加适当的角色 (role="img" )。 |
2. 在 <span> (或类似)元素中提供备用文本,该元素是图标的同级元素。 | 2. 在 <svg> 元素中添加具有适当 id 属性的 title 元素。 |
3. 包含适当的 CSS 以视觉上隐藏元素,同时保持其对辅助技术的可访问性。 | 3. 在 <svg> 元素中添加 aria-labelledby 属性,并将其值设置为与新添加的 title 元素的 id 相匹配。 |
4. 包含适当的 CSS 以视觉上隐藏元素,同时保持其对辅助技术的可访问性。 |
<a href="https://twitter.com/fontawesome"> <!-- Semantic Web Fonts-based Icon --> <i aria-hidden="true" class="fa-brands fa-twitter"></i> <span class="fa-sr-only">The Font Awesome teams' Twitter account</span></a>
<a href="https://twitter.com/fontawesome"> <!-- Semantic SVG-based Icon --> <svg aria-labelledby="my-twitter-title" role="img" xmlns="http://www.w3.org/2000/svg"> <title id="my-twitter-title">The Font Awesome team's Twitter account</title> <path d="M459.37 151.716c.325 4.548.325 9.097.325 13.645 0 138.72-105.583 298.558-298.558 298.558-59.452 0-114.68-17.219-161.137-47.106 8.447.974 16.568 1.299 25.34 1.299 49.055 0 94.213-16.568 130.274-44.832-46.132-.975-84.792-31.188-98.112-72.772 6.498.974 12.995 1.624 19.818 1.624 9.421 0 18.843-1.3 27.614-3.573-48.081-9.747-84.143-51.98-84.143-102.985v-1.299c13.969 7.797 30.214 12.67 47.431 13.319-28.264-18.843-46.781-51.005-46.781-87.391 0-19.492 5.197-37.36 14.294-52.954 51.655 63.675 129.3 105.258 216.365 109.807-1.624-7.797-2.599-15.918-2.599-24.04 0-57.828 46.782-104.934 104.934-104.934 30.213 0 57.502 12.67 76.67 33.137 23.715-4.548 46.456-13.32 66.599-25.34-7.798 24.366-24.366 44.833-46.132 57.827 21.117-2.273 41.584-8.122 60.426-16.243-14.292 20.791-32.161 39.308-52.628 54.253z"></path> </svg></a>
<a href="https://twitter.com/fontawesome"> <!-- Semantic SVG Sprites-based Icon --> <svg aria-labelledby="my-twitter-title" role="img"> <title id="my-twitter-title">The Font Awesome teams' Twitter account</title> <use xlink:href="fa-brands.svg#twitter"></use> </svg></a>
注重无障碍的样式实用程序
为了帮助进行任何手动可访问性工作,Font Awesome 的网络软件包含一些基于最佳实践的样式实用程序。这些有助于在视觉上隐藏元素,同时保持其对辅助技术的可访问性。
类 | 详情 |
---|---|
fa-sr-only | 在视觉上隐藏包含图标文本等效物的元素,同时保持其对辅助技术的可访问性 |
fa-sr-only-focusable | 与 fa-sr-only 结合使用,以便在元素获得焦点时(例如,由仅使用键盘的用户)再次显示元素 |
在可聚焦的交互式元素的情况下,有多种选项可以将备用文本或标签包含到元素中,而无需任何视觉上隐藏的 <span>
或类似元素。例如,只需在交互式元素本身中添加带有文本描述的 aria-label
属性就足以提供元素的可访问备用名称。如果您需要在鼠标悬停/聚焦时提供视觉工具提示,我们建议另外使用 title
属性或自定义工具提示解决方案。
动画图标和无障碍
Font Awesome 在我们的支持样式中捆绑了基本动画。这些动画现在支持并利用 prefers-reduced-motion
CSS 媒体功能 来检测用户是否已请求系统最小化其使用的非必要运动量。
情况 | 对包含动画的影响 |
---|---|
未设置首选项(默认) | 动画将按预期渲染 |
首选项设置为 reduce | 动画将被禁用 |
当 prefers-reduced-motion
设置为 reduce
时,用户更喜欢页面上的运动更少,以帮助减轻前庭运动障碍和其他运动敏感性带来的不适。
其他情况和信息
虽然此处的情况和技术有助于避免一些严重的问题和混淆,但它们并非详尽无遗。
在可访问性方面,存在许多复杂的环境和用例,例如低视力用户需要高对比度比才能看到 UI。这里有一些很好的工具和资源,可以供您学习和解决这些问题。以下是一些我们推荐的读物
- 来自 Filament Group 的防弹型可访问图标字体
- 来自 CSS Tricks 的图标字体使用的 HTML
- 伟大的图标辩论:字体与 SVG 来自 SitePoint
- 来自 Lea Verou 的对比度比检查器
我们会继续在更广泛的可访问性主题下进行这些工作,但在此期间,如果您遇到任何错误或问题,请告诉我们。