mcpField
F
form-labelling

form-labelling

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

关于 form-labelling

面向界面设计与开发的表单无障碍设计技能,说明如何为字段提供清晰标签、关联说明和错误信息,并组织相关控件。

主要功能

  1. 01可见且关联的字段标签
  2. 02明确标示必填和选填字段
  3. 03用 fieldset 和 legend 分组控件
  4. 04关联帮助文本与错误信息
  5. 05提供表单无障碍检查清单

适用场景

  1. 01检查表单是否存在仅占位符标签
  2. 02设计包含单选或复选控件的表单
  3. 03改善字段说明和错误提示的可访问性

安装

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

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

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

详细介绍

表单标注

每个表单字段都需要有清晰可见、持续显示的标签,并以编程方式与输入框关联。这是 Web 上最常见的无障碍问题,也是最容易修复的问题。

核心规则

每个输入框都有可见标签
  • 使用 元素,并通过 for/id 建立关联
  • 标签必须始终可见,不能只是获得焦点后就消失的占位符文本
  • 标签应放在输入框上方(这是最便于访问和快速浏览的做法)
  • 绝不能只用占位符文本作为标签,因为用户开始输入后它就会消失
标签要说明要输入什么
  • 好例子:"电子邮件地址"
  • 坏例子:"在此处输入信息"
  • 好例子:"出生日期(DD/MM/YYYY)"
  • 坏例子:"日期"
  • 格式提示应包含在标签或帮助文本中,而不应只放在占位符里
明确标示必填字段
  • 用可见文本标记必填字段:"必填"或 *
  • 如果使用 ,请在表单顶部说明:" = 必填"
  • 使用 aria-required="true" 以便以编程方式标示
  • 更好的做法:通过设计让大多数字段成为必填项,并标示可选字段,例如"公司名称(可选)"

分组模式

相关字段需要使用 fieldset
  • 使用 和 对相关字段进行分组
  • 单选按钮:始终使用 fieldset 分组
    • 图例:"首选联系方式"
    • 选项:电子邮件、电话、短信
  • 复选框:当它们共用一个问题时进行分组
    • 图例:"您对哪些主题感兴趣?"
    • 选项:设计、工程、产品
  • 地址字段:归入"送货地址"或"账单地址"分组
包含多个表单时
  • 每个表单部分都应有标题或图例
  • 各部分在视觉和结构上都应清晰区分
  • 进度指示器有助于用户了解当前所处的位置

说明模式

帮助文本
  • 将帮助文本放在标签与输入框之间
  • 使用 aria-describedby 关联,以便屏幕阅读器读出
  • 好例子:"至少需要 8 个字符,并包含一个数字"
  • 说明应简洁——一句话即可
关联错误信息
  • 错误信息必须以编程方式关联到字段(使用 aria-describedby 或 aria-errormessage)
  • 将错误文本直接放在字段下方,而不是放在远处的横幅中
  • 错误信息中应包含字段标签:"电子邮件地址:请输入有效的电子邮件地址"

常见错误

  • 用占位符代替标签——输入后会消失,许多屏幕阅读器也无法识别
  • 仅用图标作为标签——只有放大镜图标,没有"搜索"文字标签
  • 标签与输入框相距太远——空间上的分离会破坏视觉关联
  • 标签会变化——不要根据输入状态更改标签文本
  • 按钮没有标签——每个按钮都需要可见文本或 aria-label

评估清单

  • 每个输入框都有可见的 ,并通过 for/id 与输入框关联
  • 没有仅用占位符作为标签的情况
  • 必填字段在视觉上和以编程方式都有标示
  • 相关字段使用 fieldset/legend 分组
  • 帮助文本通过 aria-describedby 关联
  • 错误信息与对应字段关联
  • 所有按钮都有可见的文本标签

评论

支持 Markdown