是行内元素,仅适合单个标识符;多行函数体必须用组合包裹,并手动转义HTML特殊字符,否则缩进丢失、解析失败。

把多行函数体塞进 里</H3>
<p>这是最常被忽略的语义错误。<code> 是行内元素,只适合包裹单个函数名、变量或短命令。一旦往里面塞 <code>function hello() { console.log('hi'); } 这类多行代码,浏览器会强行压成一行,缩进全丢,还可能因未转义 或 <code>> 导致 HTML 解析失败。
- 正确做法:用
包裹多行内容,<pre class="brush:php;toolbar:false;"> 保格式,<code> 定语义</li>
<li>必须手动转义 HTML 特殊字符:比如写 <code>x < 5 && y > 0
,不能直接写 x 0
- 别给
加 <code>white-space: pre —— 它会让长命令横向溢出容器,且基线和周围文字对不齐
用 标记非源代码内容</H3>
<p><code> 的语义是“计算机源代码片段”,不是“加粗强调”或“UI 文字”。把它用于按钮文案、HTML 标签字符串、甚至路径名,都会破坏可访问性与 SEO。</p>
<ul>
<li>❌ <code>点击【确定】按钮
→ 应该用 <button></button> 元素或普通文本
包裹多行内容,<pre class="brush:php;toolbar:false;"> 保格式,<code> 定语义</li> <li>必须手动转义 HTML 特殊字符:比如写 <code>x < 5 && y > 0,不能直接写
x 0
加 <code>white-space: pre —— 它会让长命令横向溢出容器,且基线和周围文字对不齐
标记非源代码内容</H3> <p><code> 的语义是“计算机源代码片段”,不是“加粗强调”或“UI 文字”。把它用于按钮文案、HTML 标签字符串、甚至路径名,都会破坏可访问性与 SEO。</p> <ul> <li>❌ <code>点击【确定】按钮→ 应该用
<button></button> 元素或普通文本
<div class="header"></div> → 必须先转义:
fetch()、AbortSignal、process.env.NODE_ENV 这类真实参与执行的标识符才适用嵌套错位导致 DOM 被浏览器悄悄改写
哪怕只是漏一个 ,浏览器也会在 Elements 面板里渲染出灰色斜体标签——那是它自动修复后留下的“伤疤”。这时你写的 querySelector('form + p') 很可能返回 null,因为实际 DOM 中 form 和 p 已不在同一层级。
- 检查真实 DOM 结构,别信源码缩进:右键父容器 → “Edit as HTML”,删一个字符再回车,看子树是否整体重排
- 运行
document.body.innerHTML,和本地文件逐行比对,多出来的闭合标签或消失的容器就是线索 - W3C Validator 报 “End tag for element 'section' seen…” 时,问题往往不在提示行,而在前面几十行漏闭合的
div或非法嵌套的p里
混淆 与 <pre class="brush:php;toolbar:false;"> 的职责边界</H3>
<p><code> 不负责换行、缩进、高亮;<pre class="brush:php;toolbar:false;"> 不自带语义。两者必须配合使用,缺一不可。单独用任何一个,都会让代码片段失去结构完整性或可读性。</p><p><span>立即学习</span>“<a href="https://pan.quark.cn/s/cb6835dc7db1" style="text-decoration: underline !important; color: blue; font-weight: bolder;" rel="nofollow" target="_blank">前端免费学习笔记(深入)</a>”;</p>
<ul>
<li>✅ 正确组合:<pre class="brush:php;toolbar:false;"><code>console.log('done');
:<code>console.log('done'); → 单行渲染,无缩进,无语言识别
:<pre class="brush:php;toolbar:false;">console.log('done'); → 搜索引擎当普通预格式文本,高亮库无法注入 class 标签本身不解析语法,也不加颜色;高亮依赖 Prism.js 或 highlight.js 这类 JS 库+正确嵌套结构
,而是每次复制粘贴代码片段时,都下意识判断:这是单个标识符,还是带结构的代码块?要不要转义?有没有被浏览器悄悄修正过 DOM?这些细节不盯住,排版错位、JS 失效、读屏器读错,就都成了“不知道为什么”的玄学问题。



















