展示完整html源码必须用嵌套并手动转义四个字符:→>、"→"、&→&,或用javascript的textcontent自动转义,避免innerhtml解析风险。

直接用 标签包裹 HTML 源码会出错
不能把整段 HTML 源码(比如 <h1>Hi</h1>)直接塞进单个 <code><code> 标签里。浏览器会尝试解析其中的 和 <code>>,导致标签被提前闭合、内容截断,甚至破坏后续 DOM 结构。
- 现象:页面只显示部分代码,或完全空白,控制台可能报错
Unclosed element或Unexpected token - 原因:
<code>是行内元素,不保留换行缩进,且不做 HTML 实体转义 - 适用场景仅限:短小技术名词,如
document.querySelector()、class="container"
展示完整 HTML 源码必须用 组合 + 手动转义
要原样呈现一个 HTML 文件的全部源码(含 DOCTYPE、缩进、多行结构),唯一合规方式是 <pre class="brush:php;toolbar:false;"><code></code> 嵌套,并确保所有 HTML 特殊字符已转义。</pre>
- 必须转义的字符只有四个:
→ <code><,>→>,"→",&→& - 漏转义
&会导致后续转义失效(例如<可能被解析成) - 示例正确写法:
<pre class="brush:php;toolbar:false;"><!DOCTYPE html> <html> <head><title>Demo</title></head> <body><h1>Hello</h1></body> </html>
JavaScript 动态插入时用 textContent 自动转义更安全
如果 HTML 源码来自变量或用户输入,手动转义易出错,推荐用 JS 的 textContent 属性自动处理。
- 原理:
textContent把字符串当纯文本写入,浏览器自动完成所有必要转义 - 操作步骤:创建
<pre class="brush:php;toolbar:false;"><code></code> 容器 → 获取其 <code>textContent</code> → 赋值原始 HTML 字符串</pre> - 示例:
const raw = "<div id='\"app\"'><p>Hi & you</p></div>"; const container = document.querySelector("#code-display"); container.textContent = raw; - 注意:别用
innerHTML,否则又会触发解析
加 CSS 控制可读性,但别依赖 white-space: pre
<pre class="brush:php;toolbar:false;"></pre> 默认有横向溢出风险,需加样式保障体验;但别给 <code> 单独设 white-space: pre —— 它会让行内代码撑破段落布局。
- 推荐最小 CSS:
pre { background: #f6f8fa; padding: 12px; border-radius: 4px; overflow-x: auto; tab-size: 2; } code { font-family: "SFMono-Regular", Consolas, "Liberation Mono", monospace; } - 关键点:
overflow-x: auto防止长行溢出,tab-size: 2让缩进清晰可控 - 语法高亮需额外引入 Prism.js 或 highlight.js,且仍要基于
<pre class="brush:php;toolbar:false;"><code class="html"></code> 结构</pre>
& 的双重角色:它既是转义符本身,又是需要被转义的字符。漏掉它,整个代码块就不可靠。前端入门到VUE实战笔记:立即使用
在学习笔记中,你将探索 前端 的入门与实战技巧!











