标签仅用于语义化表示用户需按下的物理按键或组合键,如 ctrl+s;不可嵌套、不可交互,需手动添加css样式以确保可见性与可访问性。

<kbd></kbd> 标签不是快捷键监听器,也不是输入控件,它只干一件事:语义化地告诉浏览器和辅助工具「这是用户要按的键」。
什么时候必须用 <kbd></kbd>,而不是 <code> 或纯文本
只有当你在文档中描述「用户需主动按下某个物理按键或组合键」时,<kbd></kbd> 才是语义正确的选择。比如帮助页、设置说明、CLI 工具网页提示。
-
<kbd>Ctrl</kbd>+<kbd>S</kbd>✅ 表示“按 Ctrl 再按 S” -
<code>ctrl+s❌ 屏幕阅读器读作 “C T R plus S”,无法识别为修饰键组合 -
Ctrl+S(无标签)❌ 无语义,SEO 和无障碍支持归零 -
<kbd>npm install</kbd>❌ 这是命令,不是击键动作;该用<code>
<kbd></kbd> 组合键写法:拆开、不嵌套、符号在外
修饰键(Ctrl、Shift、Cmd、Alt)和主键(S、V、F5)必须各自包裹在独立的 <kbd></kbd> 中,加号、空格、斜杠等分隔符一律写在标签外部。
- ✅ 正确:
<p>按 <kbd>Cmd</kbd> / <kbd>Ctrl</kbd> + <kbd>R</kbd> 刷新</p><div class="aritcle_card flexRow artxards"> <div class="artcardd flexRow"> <a class="aritcle_card_img" rel="nofollow" href="/xiazai/skill8272" title="anything-to-html"><img src="https://img.php.cn/upload/skill/000/000/081/179195588450431.jpg" alt="anything-to-html" onerror="this.onerror='';this.src='/static/lhimages/moren/morentu.png'" ></a> <div class="aritcle_card_info flexColumn"> <a rel="nofollow" href="/xiazai/skill8272" title="anything-to-html" class="overflowclass">anything-to-html</a> <p class="overflowclass">将调研报告、方案对比、数据分析、需求梳理、会议纪要、设计说明、代码评审、学习笔记等任务产物输出为可在浏览器直接打开的单文件 HTML,替代 Markdown 作为最终交付物。Markdown 在信息密度、视觉清晰度和可分享性上已跟不上 AI 产物的丰富度,HTML 能同时承载排版、表格、SVG 等。</p> </div> <a rel="nofollow" href="/xiazai/skill8272" title="anything-to-html" class="aritcle_card_btn flexRow flexcenter"><b></b><span>下载</span> </a> </div> </div> - ❌ 错误:
<kbd>Cmd+R</kbd>(语义丢失,无法单独样式化,读屏器混淆) - ❌ 错误:
<kbd>Cmd <kbd>R</kbd></kbd>(非法嵌套,HTML 验证失败) - ⚠️ 注意:
<kbd>Space</kbd>不等于空格字符;真要表示空格键,就写<kbd>Space</kbd>,别用
默认样式靠不住,CSS 补丁必须加
所有主流浏览器对 <kbd></kbd> 的默认渲染仅设了 font-family: monospace,没背景、没边框、没内边距——实际页面里几乎看不出来。
- 重置类框架(如 Bootstrap、modern-normalize)常会清除
kdb的font-family,务必手动补回 - 推荐最小可用样式:
kbd { font-family: ui-monospace, monospace; padding: 2px 4px; border-radius: 3px; background-color: #f0f0f0; border: 1px solid #ccc; } - 别加
tabindex或onclick——<kbd></kbd>不可聚焦、不可交互,加了反而破坏可访问性 - 高缩放比下文字裁切?检查
padding是否足够,避免设line-height: 1等压缩值
和 <code>、<samp></samp>、<var></var> 混用时的边界
这四个短语标签职责分明,混用会导致语义污染,影响读屏器理解和搜索引擎解析。
-
<kbd></kbd>:用户按下的键(<kbd>Esc</kbd>) <code>:代码字面量(<code>fetch()、<code>git commit)-
<samp></samp>:程序输出(<samp>TypeError: Cannot read property 'x'</samp>) -
<var></var>:变量名(<var>response</var>) - 常见错误:
<kbd>TypeError</kbd>—— 这是错误信息,不是按键,该用<samp></samp>
最容易被忽略的是:写了 <kbd></kbd> 却没检查实际渲染效果,尤其在用了 CSS 重置后;还有人试图用它绑定 keydown 事件,结果发现完全没反应——那不是 bug,是根本用错了地方。
前端入门到VUE实战笔记:立即使用
在学习笔记中,你将探索 前端 的入门与实战技巧!










