HTML中连续空格被压缩为一个空格是规范规定的默认行为,非bug;需用 、<pre>标签或white-space CSS属性(如pre-wrap)来保留空格。

HTML里空格被合并是默认行为
浏览器会把连续的普通空格、制表符、换行都压缩成一个空格,这是HTML规范决定的,不是bug。所以直接敲多个空格键没用, 也不是万能解——它只是不换行空格,照样会被前后空格“挤掉”。
用 要配合其他标记防塌陷
单独写 在标题里仍可能被压缩,尤其前后有文字时。真正起作用的是把它和不可断行的容器绑定:
<h2>左端<span style="white-space: nowrap;"> </span>右端</h2>
或者更稳妥地用 white-space: pre 包住整段:
<h2><span style="white-space: pre">标题 带四空格</span></h2>
-
white-space: pre:保留所有空白符,但会禁用自动换行 -
white-space: pre-wrap:保留空白且允许换行,适合长标题 - 避免只靠
堆砌——它在 flex 容器或某些 CSS 重置下可能失效
语义正确时优先用 CSS 控制间距
如果目标是“让文字之间拉开距离”,而不是“硬塞空格字符”,letter-spacing 或 margin 更可靠:
立即学习“前端免费学习笔记(深入)”;
<h3><span style="letter-spacing: 0.5em">标</span><span style="letter-spacing: 0.5em">题</span></h3>
或者给中间文字加 margin:
<h3>标题<span style="margin: 0 1em"></span>后缀</h3>
-
letter-spacing影响字距,适合均匀拉伸 -
margin更精准控制某两个词之间的间隙 - 这些方式不会污染文本内容,复制出来也不带乱码空格
注意可访问性和 SEO 风险
用一堆 或 pre 包裹纯空格,屏幕阅读器可能读成“空白、空白、空白”,搜索引擎也可能视作低质量内容。真需要视觉留白,CSS 是更干净的选择。
最常被忽略的一点:服务端模板(如 Jinja、ERB)或 CMS 富文本编辑器,常自动过滤多余空格或转义 ,本地测试正常,上线就失效——得查输出源码确认 HTML 是否真的到达了浏览器。



















