是行内元素,浏览器会折叠空白符,导致缩进消失、换行塌陷;必须嵌套在中以保留格式并确保语义、SEO和可访问性。

为什么单用 会导致缩进消失、换行塌陷</H3>
<p><code> 是行内元素,浏览器会像处理普通文字一样折叠所有空白符——多个空格变一个,换行当空格,制表符被忽略。哪怕你写成:</p>
<pre class='brush:php;toolbar:false;'>function foo() {
return "hello";
}
实际渲染出来就是 function foo() { return "hello"; },缩进和换行全没了。
- 只适合包裹单个标识符,比如
console.log、useState、JSON.parse - 不能承载多行逻辑,哪怕只有两行带缩进的代码,也必须配合
- 默认样式只是等宽字体,不带背景、边框或内边距,需手动加 CSS 才像“代码块”
为什么必须用 <pre class="brush:php;toolbar:false;"> 嵌套,而不是反过来或单独用 <pre class="brush:php;toolbar:false;"></H3>
<p><pre class="brush:php;toolbar:false;"> 负责保留格式(空格、换行、缩进),但它本身没有语义——屏幕阅读器读不出“这是代码”,搜索引擎也难识别内容类型。W3C 明确推荐 <pre class="brush:php;toolbar:false;"><code> 嵌套结构,而非仅用 <pre class="brush:php;toolbar:false;"> 或 <code><pre class="brush:php;toolbar:false;">。</p>
<ul>
<li>顺序不能错:<pre class="brush:php;toolbar:false;"> 是块级容器,<code> 必须嵌在里面,否则 <code> 的语义无法生效</li>
<li>单独用 <pre class="brush:php;toolbar:false;"> 会保留格式,但 SEO 和可访问性弱,且某些高亮库(如 Prism.js)依赖 <code> 上的 <code>language-js
类来触发解析
标签紧贴 <pre class="brush:php;toolbar:false;"> 开闭标签写,别留换行:写成 <pre class='brush:js;toolbar:false;'>...</pre>,不是 <pre class="brush:php;toolbar:false;">\n<code>...\n</code>\n</pre>HTML 中写代码时,哪些字符必须转义
如果你把真实 HTML 片段(比如含 <div>)直接塞进 <pre class="brush:php;toolbar:false;"><code> 里,浏览器会把它当标签解析,导致结构错乱甚至脚本执行。必须对 <code><</code>、<code>></code>、<code>&</code> 做 HTML 实体转义。</p><div class="aritcle_card flexRow">
<div class="artcardd flexRow">
<a class="aritcle_card_img" href="/xiazai/skill9972" title="Wechat Article Html"><img
src="https://img.php.cn/upload/skill/001/246/273/6adaf20e695c2374.jpg" alt="Wechat Article Html" ></a>
<div class="aritcle_card_info flexColumn">
<a href="/xiazai/skill9972" title="Wechat Article Html">Wechat Article Html</a>
<p>将 Markdown 文章转换为微信公众号兼容的纯 HTML 格式。当用户要求"转成微信格式"、"生成公众号文章 HTML"、"排版到微信草稿箱"、"微信粘贴格式"时触发。输出带内联样式的纯 HTML,微信编辑器可直接渲染,无需额外适配。支持标题、段落、列表、粗体、行内代码、表格、引用块、代码块、配图的完整转换。</p>
</div>
<a href="/xiazai/skill9972" title="Wechat Article Html" class="aritcle_card_btn flexRow flexcenter"><b></b><span>下载</span> </a>
</div>
</div><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><code><</code> → <code><</code></li>
<li><code>></code> → <code>></code></li>
<li><code>&</code> → <code>&</code></li>
<li>常见错误:复制一段 React JSX 到 <code> 标签里,忘了转义 <code><Component /></code>,结果页面直接渲染出空组件或报错</li>
<li>服务端渲染时建议用 <code>textContent</code> 插入或模板引擎自动转义;前端 JS 动态插入可用 <code>document.createTextNode()</code> 避免风险</li>
</ul>
<H3>长代码行溢出、复制体验差,怎么快速修</H3>
<p>没加样式控制的 <pre class="brush:php;toolbar:false;"><pre class="brush:php;toolbar:false;"> 容易撑破容器,尤其 JSON 或日志类宽文本。用户想复制还常误选到行号或空格。</p>
<ul>
<li>加 <code>overflow-x: auto</pre> 和 <code>white-space: pre(不要用 pre-wrap,它会破坏缩进对齐)
tab-size: 4 统一制表符宽度,避免不同编辑器缩进不一致navigator.clipboard.writeText() + 按钮绑定,注意权限提示textContent 渲染后再加,否则空行或首尾换行会错位最常被跳过的细节是:嵌套结构中 的 class 名(如 <code>language-py)必须写在 上,不是 <pre class="brush:php;toolbar:false;"> 上;高亮库靠这个识别语言。漏了就只能灰底白字,语法零高亮。</pre>


















