pre仅用于精确保留空白符与换行的原始内容,如终端输出、JSON示例;code仅用于内联代码标识符;blockquote专指引用外部来源的完整段落,三者均不可当作视觉“格式化工具”滥用。

HTML 里没有所谓“格式化标签”的通用概念,<pre class="brush:php;toolbar:false;"></pre>、<code>、<blockquote></blockquote> 等标签各自有明确语义和渲染行为,强行归为“格式化”会误导结构设计——文本结构优化的关键是选对语义标签,而不是套用视觉样式。
哪些标签常被误当作“格式化工具”来用?
开发者常把 <pre class="brush:php;toolbar:false;"></pre> 当作“保留空格换行的万能容器”,把 <code> 当作“灰色等宽字体开关”,甚至用 <blockquote></blockquote> 包裹普通引文或强调句。这些做法破坏语义,影响可访问性与 SEO。
-
<pre class="brush:php;toolbar:false;"></pre>只应用于**需要精确保留空白符与换行的原始内容**,如终端输出、JSON 示例、代码片段;普通段落加<pre class="brush:php;toolbar:false;"></pre>会导致缩进错乱、响应式失效、屏幕阅读器重复播报空格 <code>必须包裹**内联级代码标识符**(如函数名querySelectorAll、CSS 属性display: flex),不能用来标记整段说明文字-
<blockquote></blockquote>表示**引用外部来源的完整段落或章节**,需配cite属性或<footer></footer>;用它包自己写的总结句,等于告诉爬虫“这段话不是我的”
怎么判断该用 <pre class="brush:php;toolbar:false;"></pre> 还是 <p></p>?
核心看内容是否“依赖空白符传达意义”。一段 JSON 如果删掉换行和缩进,结构就崩溃,必须用 <pre class="brush:php;toolbar:false;"></pre>;而一句“点击按钮触发 submit() 方法”,哪怕缩进多几格,语义不变,就该用 <p></p> + <code> 组合。
- 正确:
{\n "status": "ok",\n "data": {\n "id": 123\n }\n} - 错误:
<p>调用 <code>fetch()</code> 发起请求</p><div class="aritcle_card flexRow artxards"> <div class="artcardd flexRow"> <a class="aritcle_card_img" rel="nofollow" href="/xiazai/skill9972" title="Wechat Article Html"><img src="https://img.php.cn/upload/skill/001/246/273/6adaf20e695c2374.jpg" alt="Wechat Article Html" onerror="this.onerror='';this.src='/static/lhimages/moren/morentu.png'" ></a> <div class="aritcle_card_info flexColumn"> <a rel="nofollow" href="/xiazai/skill9972" title="Wechat Article Html" class="overflowclass">Wechat Article Html</a> <p class="overflowclass">将 Markdown 文章转换为微信公众号兼容的纯 HTML 格式。当用户要求"转成微信格式"、"生成公众号文章 HTML"、"排版到微信草稿箱"、"微信粘贴格式"时触发。输出带内联样式的纯 HTML,微信编辑器可直接渲染,无需额外适配。支持标题、段落、列表、粗体、行内代码、表格、引用块、代码块、配图的完整转换。</p> </div> <a rel="nofollow" href="/xiazai/skill9972" title="Wechat Article Html" class="aritcle_card_btn flexRow flexcenter"><b></b><span>下载</span> </a> </div> </div>
—— 这里<pre class="brush:php;toolbar:false;"></pre>完全多余,且破坏段落间距继承 - 注意:
<pre class="brush:php;toolbar:false;"></pre>默认无 margin,需手动加margin: 1em 0才与<p></p>视觉对齐;若用 CSS 重置了p的 margin,则<pre class="brush:php;toolbar:false;"></pre>也得同步调整
嵌套 <code> 时容易踩的 CSS 坑
<code> 是行内元素,但浏览器默认设了 font-family: monospace 和 white-space: nowrap,一旦父容器宽度受限,长代码会撑破布局或触发横向滚动条。
- 修复方式:给
<code>加overflow-wrap: break-word,避免单个 URL 或哈希值溢出 - 禁用
white-space: pre类样式直接打在<code>上——它会覆盖浏览器默认的nowrap,导致换行逻辑混乱 - 不要用
font-size: 0.9em粗暴缩小<code>,应通过line-height和padding控制呼吸感;中英文混排时尤其要注意等宽字体对中文显示宽度的影响
真正难的不是记住每个标签怎么写,而是每次敲下 时,先问一句:“这段内容如果剥离所有样式,还剩什么信息?谁会读它?为什么需要这个容器?”——语义结构一旦错位,后续所有样式、JS、SEO 优化都是在补漏洞。
前端入门到VUE实战笔记:立即使用
在学习笔记中,你将探索 前端 的入门与实战技巧!










