mcpField
K
keyboard-navigation

keyboard-navigation

github.com/owl-listener设计与 UI10897 次安装20 周前更新
代码仓库

关于 keyboard-navigation

Keyboard Navigation 是一项设计技能,旨在让用户仅用键盘完成界面操作。它提供无障碍原则、组件交互模式和评估清单。

主要功能

  1. 01确保交互元素可通过键盘访问
  2. 02保持焦点指示器清晰可见
  3. 03管理界面变化时的焦点
  4. 04规定组件的键盘操作模式
  5. 05提供跳转链接和评估清单

适用场景

  1. 01检查设计的键盘无障碍性
  2. 02定义对话框和菜单的键盘行为
  3. 03检查拖放操作的键盘替代方式

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/owl-listener/inclusive-design-skills --skill keyboard-navigation

安装后在 Claude Code 中输入/keyboard-navigation确认已加载。

详细介绍

键盘导航

设计交互时,确保用户仅使用键盘就能完成所有任务。这一点不容妥协——它是所有交互无障碍设计的基础。

适用人群

  • 无法使用鼠标的运动障碍人士
  • 使用开关设备或口棒的人士
  • 屏幕阅读器用户(键盘是他们的主要输入方式)
  • 偏好使用键盘以提高速度的高级用户
  • 手部或手臂暂时受伤的任何人

核心原则

所有内容都必须可访问
  • 每个交互元素都必须可通过 Tab 键获得焦点
  • 焦点顺序必须与视觉阅读顺序一致(从左到右、从上到下,适用于从左到右书写的语言)
  • 任何元素都不应只能通过鼠标悬停或点击来访问
  • 自定义组件需要明确设置 tabindex 并添加键盘事件处理程序
焦点必须清晰可见
  • 每个交互元素上的焦点指示器都必须清晰可见
  • 最低要求:2px 实线轮廓,与背景的对比度为 3:1
  • 切勿使用 outline: none 或 outline: 0,除非提供了清晰可见的替代样式
  • 整个界面中的焦点样式应保持一致
  • 测试:你能否始终看出哪个元素处于焦点状态?
必须管理焦点
  • 打开模态框时,将焦点移至模态框内
  • 关闭模态框时,将焦点还原到打开它的元素
  • 删除内容时,将焦点移至逻辑上紧接其后的元素
  • 页面区域动态更新时,适当地管理焦点
  • 切勿无意中将焦点困在某处(仅在打开的模态框内限制焦点)

各类组件的键盘操作模式

导航菜单
  • Tab 在顶层菜单项之间移动
  • 方向键在下拉菜单中移动
  • Enter/Space 激活菜单项
  • Escape 关闭打开的下拉菜单,并将焦点还原到触发元素
标签页
  • Tab 移至当前活动标签页的面板,而不是遍历所有标签页
  • 方向键在标签页之间移动
  • Enter/Space 激活标签页(非自动激活时)
模态框 / 对话框
  • 打开时,焦点移至模态框内第一个可聚焦元素
  • Tab 仅在模态框内循环(焦点限制)
  • Escape 关闭模态框
  • 关闭时,焦点还原到触发元素
表单
  • Tab 按逻辑顺序在字段之间移动
  • 错误消息可获得焦点或会被读出
  • 可在最后一个字段按 Enter 键提交,也可通过可见按钮提交
  • 必填字段指示不能只通过颜色传达
拖放
  • 始终提供键盘替代操作(上移/下移按钮、选择并放置,或使用方向键重新排序)
  • 读出当前位置和可用操作
轮播 / 滑块
  • 方向键在项目之间移动
  • 提供清晰可见的上一项/下一项按钮
  • 聚焦或悬停时暂停自动播放
  • 读出当前位置(“第 2 项,共 5 项”)

跳过链接

每个页面都应将“跳至主要内容”链接作为第一个可聚焦元素。这使键盘用户能够跳过重复的导航内容。

  • 聚焦时可见(可在获得焦点前视觉隐藏)
  • 通过锚点链接到主要内容区域
  • 长页面可考虑添加其他跳过链接(“跳至搜索”、“跳至页脚”)

评估清单

  • 每个交互元素都可通过 Tab 键访问
  • 焦点顺序与视觉顺序一致
  • 每个元素上的焦点指示器都清晰可见(2px,对比度为 3:1)
  • 模态框会限制焦点,并在关闭时还原焦点
  • 所有自定义组件都添加了键盘事件处理程序
  • 拖放操作有键盘替代方案
  • 跳过链接存在且可用
  • 界面中不存在任何键盘陷阱
  • 动态内容变化时会适当地管理焦点

评论

支持 Markdown