常见问题
script 和 style 里的代码会被重新排版吗?
不会。这两块内容原样保护,避免把 JS 或 CSS 里的换行和缩进改坏。
内联标签会强制换行吗?
不会。块级标签换行缩进,span、a 这类内联标签保持在同一行,符合实际渲染效果。
压缩后页面显示会变吗?
不会。行内元素之间的空白会保留(压缩掉会让 a b 粘成 ab),只去掉块级标签之间的空白与注释。
关于这个工具
排版先给标签分类:块级(div、p、ul、li、table、tr、td、各级标题等)各占一行并按层级缩进;行内(span、a、b、em、code、img 等)留在同一行。这样输出与浏览器的实际排版一致,不会把一句话拆成七八行。
script、style、pre、textarea 的内容整段原样保留,一个字符都不动:JS 的换行、CSS 的缩进、<pre> 里的空格都有意义,重排一次就可能改掉运行结果或显示效果。
空白必须分情况处理,这是最容易做错的地方:行内元素之间的空白是排版的一部分,<span>x</span> <span>y</span> 和两个标签紧贴,渲染出来不一样。所以压缩只在相邻标签是块级时才丢空白,行内之间保留一个空格 —— 早先版本一律删空白,a <b>b</b> c 会被压成 abc,那是改渲染结果,不是压体积。
标签会做规范化:属性统一写成 name="value"、完全相同的属性对去重、布尔属性(hidden、disabled)保留、自闭合标签保持自闭合。它不修正语义:缺闭合标签、嵌套不合法、属性值写错都只会照原样排版,不会替你补标签,也不会报错。