code标签语义上专用于标记计算机可执行代码片段,必须严格限定于源码级字面量;滥用会破坏语义、无障碍及自动化处理。

code 标签不是“用来高亮一段文字”的视觉装饰工具,而是语义上标记「计算机可执行代码片段」的专用元素。团队协作中滥用或误用它,会破坏语义结构、干扰无障碍访问、导致自动化提取失败。
什么时候必须用 code,而不是 span 或 pre
判断依据只有一个:内容是否属于「源码级字面量」——即开发者真正写在编辑器里、会被解释器/编译器读取的那串字符。
- ✅ 必须用:
console.log()、fetch()、Array.prototype.map、npm install --save-dev eslint - ❌ 禁止用:
用户ID(这是业务概念,不是代码)、点击确认按钮(这是操作描述)、200ms(这是数值,不是代码字面量) - ⚠️
pre+code是组合技:pre负责保留换行与空格,code负责声明语义;单独用pre不带code会丢失「这是代码」的语义信息
code 里的嵌套和转义容易踩的坑
浏览器解析 code 内容时仍走 HTML 解析流程,所以里面的 、<code>&、> 不自动转义 —— 这是很多人调试半天才发现控制台报错的原因。
- ❌ 错误写法:
<div class="app"> → 实际渲染成 <code><div class="app">,但 DOM 中仍是未闭合标签,可能吃掉后续结构 <li>✅ 正确写法:<code><div class="app">(手动转义)或用 JS 动态插入时调用 <code>textContent而非innerHTML - ⚠️ 不要在
code里嵌套strong或em来“强调关键词”——这违反语义一致性;如需高亮,应由语法高亮库(如 Prism)通过 CSS 类控制,而非改 HTML 结构 - 所有
code块必须紧邻说明性文字,禁止孤零零一行:useState()→ 后面必须跟类似「React Hook,用于声明组件内部状态」的解释 - 命令行示例统一加前缀提示符:
$ git commit -m "feat: add login validation",$表明是终端输入,不是代码逻辑 - 配置项值用
code包裹,但键名不用:html-validate配置中写rules: { "attr-value-quotes": "double" },其中"double"是值,必须code;attr-value-quotes是规则名,也建议code,但rules和{}不包
团队文档中 code 的命名与上下文规范
光标停在 code 上时,阅读者应该立刻知道:这段代码在哪跑、谁写的、为什么放这儿。否则它只是个孤立字符串。
最常被忽略的是:把 code 当作「加粗的等宽字体」来用。一旦脱离语义,它就失去机器可读性,CI 中的 axe 或 html-validate 就无法校验代码引用是否准确,文档生成工具也无法提取 API 示例做自动化测试。











