mcpField
S
semantic-html-first

semantic-html-first

github.com/kemiljk开发6162 次安装1 周前更新
代码仓库

关于 semantic-html-first

semantic-html-first 是面向界面开发者的技能,倡导优先使用原生 HTML 元素构建交互。它以原生键盘、表单和无障碍语义为基础,并提供实现与审查指南。

主要功能

  1. 01优先选择匹配交互的原生元素
  2. 02用 ARIA 补充原生语义
  3. 03优先采用明确的元素组合
  4. 04先用原生伪类处理状态
  5. 05审查 DOM 中的语义元素

适用场景

  1. 01为按钮和链接选择合适的 HTML 元素
  2. 02构建原生折叠区或临时浮层
  3. 03检查键盘操作与禁用状态
  4. 04核对表单提交及屏幕阅读器语义

安装

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

$npx skills add https://github.com/kemiljk/skills --skill semantic-html-first

安装后在 Claude Code 中输入/semantic-html-first确认已加载。

详细介绍

语义化 HTML 优先

语义化 HTML 是界面的基础设施。原生元素自带键盘支持、表单参与能力、禁用行为和无障碍语义,无需另行实现。

默认原则

  1. 从与交互匹配的原生元素开始。
  2. 使用 ARIA 来完善原生语义,而不是在 div/span 上重新构建语义。
  3. 当 asChild 多态性会掩盖实际元素时,优先使用明确的组合方式。
  4. 优先使用原生伪类(:disabled、:checked、:open、:invalid)来设置状态样式,而不是另行维护平行的 data-* 状态系统。
  5. 如果存在库的基础组件,请确认它在 DOM 中仍会渲染为真正的语义化元素。

优先选择 / 避免选择

优先选择避免选择
<button type="button">没有必要时使用 <div onClick> / <span role="button">
使用 <a href> 进行导航仅通过 JS 路由、样式仿成按钮的 div
<details> / <summary>使用临时键盘代码实现的自定义展开控件
<dialog> / Popover API与焦点和顶层行为冲突的模态 div
原生 <form> 控件忽略 Enter/Space/禁用状态的可点击行

决策指南

  • 执行操作: button
  • 跳转到某处: a[href]
  • 切换相关内容的显示状态: details,或披露按钮 + 受控区域
  • 需要临时覆盖层任务: dialog 或 popover
  • 收集输入: form 内的原生表单控件

审核清单

  • 能否使用原生元素?
  • 无需额外代码即可通过 Tab 移动焦点?
  • Enter/Space 能否激活按钮?
  • 禁用状态能否正确阻止交互并影响元素的可访问性?
  • 屏幕阅读器识别的角色是否与视觉控件一致?
  • 表单控件能否随表单一起提交/重置?
  • 自定义 ARIA 是否是补充,而非重写平台语义?

原文文章

  • 关于语义化 Web
  • 我为什么构建了一个语义化 HTML 优先的库

评论

支持 Markdown