MODULE 12 / LESSON 02
键盘、焦点与语义
让页面在没有鼠标时依旧完整可用。
先理解这个概念
焦点指示用户当前操作位置,顺序应符合内容逻辑。按钮、链接和输入元素提供默认键盘行为。复杂模式如对话框、标签页和菜单需要遵循对应的交互约定,而不是给每个 div 加 tabindex。
焦点是键盘操作的当前位置,阅读顺序则通常来自文档结构。视觉上移动元素并不会自动改变逻辑顺序。动态界面还需要决定操作后焦点留在哪里:删除当前项、关闭弹窗和切换路由都可能让原焦点失效。应按用户接下来的任务选择合理位置。
焦点像程序执行位置,用户需要知道现在在哪、下一步去哪。
记住这三个原则
- 01
Tab 顺序跟随 DOM 的逻辑顺序。
- 02
不要移除焦点轮廓而没有可见替代。
- 03
动态视图切换与模态关闭时合理恢复焦点。
实际设计时,分三步做
- STEP 01
从页面开头只用键盘走一次,检查顺序、可见焦点和是否能绕过重复导航,不使用正数 tabindex 修补结构。
- STEP 02
为复合控件查对应交互模式,区分 Tab 在区域间移动与方向键在区域内移动,避免给每个内部元素都制造停靠点。
- STEP 03
定义打开、关闭和删除后的焦点目标;若触发元素已不存在,选择合理的后续操作而不是机械回到页面顶部。
一个容易理解的例子
弹窗关闭后焦点落到页面顶部,用户必须重新 Tab 十几次。
关闭后焦点回到触发按钮,继续原来的任务。
位置连续性同样适用于键盘用户。
:focus-visible {
outline: 3px solid #366cbd;
outline-offset: 4px;
}展开看:从场景到设计决定
删除列表当前项后,焦点可以落到下一项的同类操作;若已无下一项,可回到前一项或列表入口。模态取消后通常返回触发按钮,但若完成操作后该按钮已被移除,就要选择新的合理位置。焦点处理应和数据变化一起设计,不能只在弹窗组件里写死一个返回节点。
适用边界与取舍
主动聚焦能帮助继续任务,也可能突然打断阅读。普通后台数据更新不应随意抢焦点;只在用户动作与上下文变化确实需要时移动。
把这个原则用一次
先做一个小判断
只用键盘浏览本网站的导航、实验与展开答案。
再完成一份设计练习
为“打开编辑弹窗→保存→记录被移出当前筛选”设计焦点路径。
不要随意使用正数 tabindex 重排焦点,这会让维护和阅读顺序变得复杂。
继续查阅
本课为原创教学解释。具体平台规则与标准可查阅官方资料。
WCAG 2.2 · 文本对比度WCAG 2.2 · 目标尺寸WAI-ARIA Authoring Practices