code标签不提供高亮,仅作语义标记和等宽渲染;实现HTML代码语法高亮需pre嵌套code、外部高亮库(如Highlight.js)及正确转义三者缺一不可。

code 标签本身**不提供高亮**,它只做语义标记和等宽字体渲染。真要让 HTML 代码在网页上带颜色、有语法区分,必须配合 pre 结构 + 外部高亮库(如 Highlight.js)+ 正确转义,缺一不可。
为什么单独用 code 标签无法高亮 HTML 代码
所有主流高亮库都强制要求 把原始 HTML 字符串(如 安全做法只有两种: 常见“引入了却没颜色”,90% 是这三处断链: 推荐写法:code 是纯语义标签,浏览器只把它当“这段是代码”,不会解析里面是不是 class="foo" 或 // comment。它既不识别语言,也不加 class,更不调用任何着色逻辑。
→ 浏览器会尝试解析 为真实标签,导致 DOM 崩塌、内容消失或 XSS 风险class="html",code 单独存在也不会被 Highlight.js 或 Prism.js 扫描 —— 它们只认 pre 嵌套结构code(比如解释一个属性名)可以,但那是语义标注,不是语法高亮
pre 和 code 必须嵌套,且 class 要写对pre 包裹 code,因为 pre 保留换行与空格,这是解析缩进、层级、块结构的前提。
<div class="app"></div>
(无 pre,不扫描)<div class="app"></div>
(无 code,无语义,不识别语言)<div class="app"></div>
(highlight.js 要求 language-html 或 lang-html,html 不触发)HTML 特殊字符必须转义,否则直接解析失败
)直接塞进 code 里,浏览器会在 DOM 构建阶段就把它当真实标签处理,导致:
code 内容被截断或丢失
→
,> → >,& → &(注意 & 要写两次)script type="text/plain" 包裹原始代码,再用 JS 提取 textContent 插入 pre>code —— 完全绕过 HTML 解析,最稳Highlight.js 初始化必须等 DOM 就绪,且 CSS 不能漏
hljs.highlightAll() 放在 里执行 → pre>code 还没生成,扫描不到highlight.min.js,没引主题 CSS(如 default.min.css)→ 解析成功但全是黑白hljs.initHighlightingOnLoad() → v11+ 中静默失效,新版文档已移除<script>
document.addEventListener('DOMContentLoaded', () => {
hljs.highlightAll();
});
</script>
或更简单:把 script 放在 前。
真正难的不是加高亮,而是确保 pre>code 结构在 Markdown 渲染、Vue/React 生命周期、CMS 输出或模板引擎中始终不被删空格、不被自动包裹、不被合并标签 —— 一旦结构断裂,高亮就静默消失,连控制台警告都没有。
前端入门到VUE实战笔记:立即使用
在学习笔记中,你将探索 前端 的入门与实战技巧!











