关键在于避开解析失败、缩进错乱、内联内容被破坏三类静默问题:需确保HTML合法(含DOCTYPE、无模板语法、标签闭合、属性带引号),选用仅格式化不转换的工具并关闭XHTML/小写/加引号等选项,格式化后重点核对pre/script/style及内联结构是否被误改。

粘贴前先检查 HTML 是否合法
很多在线工具(比如 htmlformatter.com 或 codebeautify.org)底层用的是 htmlparser2 或 Cheerio,它们对非法结构容忍度低,一粘就崩或输出空白——你却以为是工具坏了。
- 确保有
<!DOCTYPE html>声明(哪怕只是片段,也建议补上) - 检查是否混着服务端模板语法,如
<% if (x) { %>、{{ data }},这些会直接导致解析中断 - 避免未闭合标签,比如只写了
<div>没写</div>;工具可能自动补全,但嵌套层级会错位 - 属性值必须带引号,
class=header要改成class="header",否则部分工具会丢掉该属性
选对工具并关闭“自动转换”开关
不是所有在线工具都默认按 HTML5 语义缩进。有些默认启用“转 XHTML”“小写标签”“加斜杠”等改造逻辑,结果你只想调缩进,它却把 <img src="a.jpg"> 改成 <img src="a.jpg" />,甚至把 <script> 里的 JS 格式也动了。
- 优先选支持“仅格式化、不转换”的工具,例如
https://codebeautify.org/html-beautify或山海云端工具箱的 HTML 格式化页 - 关闭勾选项:✔️ Convert to XHTML、✔️ Lowercase tags、✔️ Add quotes to attributes(除非你真需要)
- 缩进设为
Spaces: 2或4,别选 Tab —— 多数协作项目禁用 Tab - 最大宽度限制建议设为
100或不限制,避免 Prettier 风格的强制折行干扰语义排版
格式化后重点核对三处内容
工具不会告诉你哪段被“好心办坏事”了。尤其当原始 HTML 含 <pre>、<script>、<style> 时,缩进逻辑极易误伤。
-
<pre>和<code>块内的换行和空格必须原样保留,如果被压成一行或删了缩进,说明工具没做特殊处理,换一个 -
<script>标签里的 JS 代码若出现错位、分号被吞、字符串跨行断裂,说明工具把 script 当普通文本递归缩进了 —— 这类工具不适合含内联 JS 的页面 - 检查
<a href="#">文字</a>这类内联结构是否被强行拆成多行(如<a href="#">\n 文字\n</a>),Prettier 默认这么做,但某些邮件模板或 SSR 输出要求扁平化
DOCTYPE、混着模板语法、属性缺引号 —— 这些细节不提前清理,再好的工具也只能返回一堆问号或静默失败。



















