键盘可访问
为了完全可访问,网页必须能够仅通过键盘进行访问和控制。这包括屏幕阅读器用户,但也可能包括那些难以操作鼠标或轨迹球等指针设备的用户,或者他们的鼠标目前无法工作,或者那些在可能的情况下更喜欢使用键盘进行输入的用户。
可聚焦元素应具有交互式语义
如果一个元素可以使用键盘聚焦,那么它应该是可交互的;也就是说,用户应该能够对其进行操作并产生某种变化(例如,激活链接或更改选项)。
注意: 此规则的一个重要例外是,如果元素应用了 role="document"
属性,并且位于交互式上下文(如 role="application"
)的内部。在这种情况下,聚焦嵌套文档是使辅助技术返回非交互式状态(通常称为“浏览模式”)的唯一方法。
大多数交互式元素默认是可聚焦的;您可以通过为其添加 tabindex=0
属性值来使其可聚焦。但是,您应该仅在已使元素可交互(例如,通过定义适当的键盘事件事件处理程序)的情况下才添加 tabindex
。
另见
- tabindex 全局 HTML 属性
- 元素: keydown 事件
- 元素: keyup 事件
避免使用大于零的 tabindex
属性
tabindex
属性表示一个元素可以使用键盘聚焦。值为零表示该元素是默认焦点顺序的一部分,该顺序基于 HTML 文档中元素的顺序。正值会将元素置于默认顺序的前面;具有正值的元素按其 tabindex
值(1、2、3 等)的顺序聚焦。
当焦点顺序与页面的逻辑顺序不同时,这会给仅使用键盘的用户带来混淆。更好的策略是构建 HTML 文档,使可聚焦元素按逻辑顺序排列,而无需使用正 tabindex
值重新排序它们。
另见
- tabindex 全局 HTML 属性
- 理解焦点顺序
- 不要使用大于 0 的 tabindex
可点击元素必须可聚焦,并应具有交互式语义
如果一个元素可以使用鼠标等指针设备点击,那么它也应该能够使用键盘聚焦,并且用户应该能够通过与其交互来执行某些操作。
如果元素定义了 onclick
事件处理程序,则它是可点击的。您可以通过为其添加 tabindex=0
属性值来使其可聚焦。通过定义 onkeydown
事件处理程序,您可以使其可以通过键盘操作;在大多数情况下,事件处理程序执行的操作应与两种事件类型相同。
另见
- tabindex 全局 HTML 属性
- 元素: keydown 事件
- 元素: keyup 事件
交互式元素必须能够使用键盘进行激活
如果用户可以通过触摸或指针设备与元素进行交互,那么该元素也应该支持通过键盘进行交互。也就是说,如果您为触摸或单击事件定义了事件处理程序,那么您也应该为键盘事件定义它们。键盘事件处理程序应实现与触摸或单击处理程序基本相同的交互。
另见
- 元素: keydown 事件
- 元素: keyup 事件
交互式元素必须可聚焦
如果用户可以与元素进行交互(例如,通过触摸或指针设备),那么它应该能够使用键盘聚焦。您可以通过为其添加 tabindex=0
属性值来使其可聚焦。这将把该元素添加到可以通过按 Tab 键聚焦的元素列表中,按 HTML 文档中定义的此类元素的顺序排列。
另见
- tabindex 全局 HTML 属性
可聚焦元素必须具有焦点样式
任何可以接收键盘焦点的元素都应该具有可见的样式,以指示元素何时获得焦点。您可以使用 :focus
和 :focus-visible
CSS 伪类来实现这一点。
链接和输入字段等标准可聚焦元素默认由浏览器提供特殊的样式,因此您可能不需要为这些元素指定焦点样式,除非您希望焦点样式更具辨识度。
如果您创建了自己的可聚焦组件,请确保也为它们定义了焦点样式。