code 表示计算机可执行的代码文本(如函数名、路径、命令),kbd 专指用户实际按下的物理按键(如 ctrl+c、enter);二者语义严格分离,混用会导致屏幕阅读器误读、样式错位及无障碍失效。

code 和 kbd 的语义分工必须分清
code 表示一段计算机可执行或引用的代码文本,比如函数名、文件路径、命令本身;而 kbd(注意:是 标签,不是 )表示用户实际输入的按键操作。很多人误用 <code> 包裹整个命令行交互,导致语义混乱、屏幕阅读器误读、CSS 样式错位。
-
code适合包裹:git commit、/usr/bin/python3、process.env.NODE_ENV - kbd 适合包裹:Ctrl+C、Enter、Y(确认键)
- 命令行中“用户敲击的部分”用 ,命令本身或返回结果用
嵌套结构要按执行流程分层
命令行展示常包含提示符、输入命令、回车、输出结果四部分。正确嵌套的关键是:每个语义单元独立包裹,不混用 和 <kbd>,也不让 <kbd> 包 <code>。
$ <kbd>npm run build</kbd><pre class="brush:php;toolbar:false;"> > my-app@1.0.0 build > vite build <p>vite v5.4.1 building for production... ✓ built in 2.12s</p>
- 提示符
$ 是固定文本,用 <code> - 用户输入的 npm run build 是操作行为,用
- 输出中的路径、版本号、时间等是程序生成内容,用
- 不要把 npm run build 写成
<kbd>npm run build</kbd>—— 这违反 HTML 规范, 不能作为的子元素
终端样式依赖 CSS,但语义不能靠 class 补救
有人用 模拟命令行,再靠 CSS 加上 > 或 $ 符号。这看起来像,但破坏了可访问性:屏幕阅读器会把 <code class="terminal"> 读作“代码”,而非“命令行输入”。
- 正确做法:用语义标签组合 + CSS 修饰,例如:
$ <kbd>ls -la</kbd><code><code>drwxr-xr-x 5 user staff 160 Sep 12 10:23 .</code></code>
- 然后用 CSS 统一设置
字体为 monospace,<kbd> 加背景和边框,<code> 保持默认或设为浅灰</code></kbd>
- 避免写
<code><span class="prompt">$</span> ls -la—— 无语义,且内部不该有内联样式容器
真实场景中容易漏掉的细节
命令行展示不是静态截图,得考虑复制友好性、换行、长命令折行、特殊字符转义。
- 复制时,用户通常只想复制命令本身(如 curl -X POST @#@#@#@#@#@#@#@#@#@0),不要把
$或输出一起选中 → 可用user-select: none对提示符和输出设为不可选 - 长命令自动折行时, 里的内容不应被断开 → 给 设
white-space: nowrap 中若含 、& 符号,必须转义为 、&,否则破坏 HTML 结构- Windows 命令行常用 Win+R,注意 内可嵌 ,但层级不宜超过两层(如 Win+R 合理,三层就难维护)
有些开发者图省事全用 ,结果 AT(辅助技术)把所有内容都当成代码读出来;也有人过度嵌套 <kbd>,连路径都包进去。语义不是装饰,它决定这段 HTML 在终端模拟器、无障碍工具、甚至未来 LLM 解析时是否被正确理解。</kbd>
前端入门到VUE实战笔记:立即使用
在学习笔记中,你将探索 前端 的入门与实战技巧!











