单独使用 code 标签无法实现语法高亮,因其为行内元素会压缩空白符,且 highlight.js 等库默认只解析 pre>code 嵌套结构;必须配合 pre 保留格式、正确 class(如 language-js)、html 字符转义、css 主题引入及恰当执行时机。

code 标签本身**不实现高亮**,它只声明语义、应用等宽字体,真正实现语法高亮必须配合
pre 结构、第三方库和正确配置。
为什么单独用 code 标签永远无法高亮
code 是行内元素,浏览器会压缩所有换行和多余空格,多行代码直接塌成一行;更重要的是,highlight.js、Prism.js 等主流库**默认完全忽略单独的 code 标签**——它们只扫描 pre 嵌套结构。常见错误包括:<p><code class="js">const x = 1;
、
<div><code><div></div> ,这两者都不会触发任何解析。
必须写对 precode 嵌套结构
这是高亮生效的底层前提,不是可选项:
html-ppt-to-pdf
将使用 `` 约定的 HTML 幻灯片转换为高保真、矢量文本 PDF(使用 Playwright + Chromium 原生 PDF 功能)。
下载
-
pre 保留原始缩进、换行、空格,为语法分析提供结构依据
-
code 声明内容是计算机代码,而非普通文本,赋予语义和基础样式
- 二者缺一不可:
<pre class="brush:php;toolbar:false;"><code class="html"><div id="app"></div></code></pre>
- HTML 特殊字符必须提前转义:
→ <code><,> → >,& → &(注意 & 要写两次)
class 值必须匹配高亮库规则
highlight.js 严格识别 language- 或 lang- 前缀,Prism.js 略宽松但推荐统一风格:
- ✅ 正确:
class="js"、class="lang-python"、class="bash"
- ❌ 无效:
class="js"、class="javascript"、class="HTML"(大小写敏感)、class="html5"
- 不确定语言时可用
class="plaintext" 防止误解析
- 服务端渲染或 Markdown 解析器输出时,务必校验生成的 class 是否符合该格式
加载时机、CSS、动态内容三处最容易漏掉
即使结构和 class 全对,以下任一缺失都会导致“有代码无颜色”:
- 脚本必须在 DOM 就绪后执行:
hljs.highlightAll() 不能放在 里直接调;稳妥做法是把 <script></script> 放在 前,或用 document.addEventListener('DOMContentLoaded', () => hljs.highlightAll());
- CSS 主题文件必须显式引入:只引
highlight.min.js 不引 github-dark.min.css,结果就是纯黑字白底
- 动态插入的代码块(如 Vue
v-html、React dangerouslySetInnerHTML、fetch 后渲染)不会被自动捕获,需手动调 hljs.highlightElement(el),且 el 必须是带正确 class 的 code 元素
真实项目里最常卡住的地方不是语法写错,而是 HTML 字符没转义就塞进
code,或者以为引入 JS 就万事大吉,忘了 CSS 和执行时机。这两点不检查,再准的 class 名也没用。
前端入门到VUE实战笔记:立即使用
在学习笔记中,你将探索 前端 的入门与实战技巧!