是“preformatted text”的缩写,核心作用是原样保留空格、换行和制表符;它不是段落标记,语义和 完全不同,适用于终端输出、代码片段、ASCII 表格等需严格保留格式的场景。

pre 标签不是段落标记,而是预格式化容器
很多人看到 <pre class="brush:php;toolbar:false;"></code> 就下意识觉得是“paragraph”的缩写,其实完全不是。<code><pre class="brush:php;toolbar:false;"></code> 是 “preformatted text” 的简写,核心作用只有一个:**原样保留空格、换行、制表符等空白字符**。它和 <code><p></code> 语义完全不同,<code><p></code> 才是真正的段落标记,会自动合并多余空白并按块渲染;而 <code><pre class="brush:php;toolbar:false;"></code> 渲染时连你代码里缩进的 4 个空格、换行后的空行都会照单全收。</p>
<H3>什么时候必须用 pre 而不是 div 或 p</H3>
<p>以下场景不加 <code><pre class="brush:php;toolbar:false;"></code> 很难准确还原格式:</p>
<ul>
<li>显示终端命令输出(含多级缩进和空行)</li>
<li>嵌入代码片段(尤其是 Python、YAML、JSON 等对缩进敏感的语法)</li>
<li>展示带固定列宽的 ASCII 表格或日志时间戳对齐内容</li>
<li>渲染歌词、诗文等需严格保留换行与空格的文本</li>
</ul>
<p>用 <code><div></code> 或 <code><p></code> 包裹这些内容,浏览器会把所有连续空白压缩成一个空格,换行也被忽略——除非你手动加 <code>white-space: pre</code> CSS,但那只是样式模拟,语义上仍不正确。</p><div class="aritcle_card flexRow">
<div class="artcardd flexRow">
<a class="aritcle_card_img" href="/xiazai/skill11445" title="使用华数设计生成高保真HTML原型、演示文稿、动画和设计评审"><img
src="https://img.php.cn/upload/skill/001/246/273/6adaf20e695c2374.jpg" alt="使用华数设计生成高保真HTML原型、演示文稿、动画和设计评审" ></a>
<div class="aritcle_card_info flexColumn">
<a href="/xiazai/skill11445" title="使用华数设计生成高保真HTML原型、演示文稿、动画和设计评审">使用华数设计生成高保真HTML原型、演示文稿、动画和设计评审</a>
<p>使用经过文档化的设计技能,从真实的品牌或项目背景中生成HTML原生原型、幻灯片、动态演示、可视化图表和评审流程。</p>
</div>
<a href="/xiazai/skill11445" title="使用华数设计生成高保真HTML原型、演示文稿、动画和设计评审" class="aritcle_card_btn flexRow flexcenter"><b></b><span>下载</span> </a>
</div>
</div>
<H3>pre 里能嵌套哪些标签?code 是最佳搭档</H3>
<p><code><pre class="brush:php;toolbar:false;"></code> 是块级元素,允许包含行内元素,但禁止直接嵌套 <code><p></code>、<code><h2></code> 这类块级标签(虽多数浏览器能容错渲染,但不符合 HTML5 规范)。</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>推荐组合:<code><pre class="brush:php;toolbar:false;"><code class="js">console.log("hello");</code></pre> —— <code> 提供语义(这是代码),<pre class="brush:php;toolbar:false;"></pre> 提供格式(保留缩进换行)
<span></span>(用于高亮关键词)、<a></a>(跳转到某行)、<img alt="HTML中pre标签作用_HTML保留文本原始格式输出方法" >(行内图标)<div>、<code><section></section>、<blockquote></blockquote> —— 容易破坏预格式化流,也可能触发浏览器解析异常
常见坑:样式冲突、宽度溢出、SEO 影响
<pre class="brush:php;toolbar:false;"></pre> 默认用等宽字体(如 monospace),且不自动换行,容易撑破容器:
- 加 CSS 控制:用
overflow-x: auto防横向滚动条失控,或white-space: pre-wrap允许长行换行(但会轻微改变原始格式) - 别设
width属性 —— HTML5 已废弃<pre class="brush:php;toolbar:false;" width></pre>,无效且可能被忽略 - 搜索引擎能读取
<pre class="brush:php;toolbar:false;"></pre>内文本,但不会把它当正文段落加权;若内容重要(如 API 响应示例),建议额外用<details></details>或 aria-label 补充说明
最常被忽略的一点:pre 本身不提供语法高亮,也不解析 HTML 实体。比如你写 <div>,它会原样显示为 <div>;但如果你直接写 <code><div>,浏览器会尝试解析成真实标签——所以实际使用中,HTML 特殊字符必须手动转义。</div>


















