HTML默认将连续空白字符(空格、制表符、换行)压缩为单个空格,这是规范行为而非bug;可用 实现不可折叠空格,或用white-space: pre-wrap等CSS属性控制整段文本的空白显示。

为什么普通空格在HTML里会合并成一个
HTML默认把连续的空白字符(空格、制表符、换行)压缩成单个空格,这是规范行为,不是bug。所以写 或敲三下空格键,浏览器只显示一个空格。
用 实现固定宽度空格
是不间断空格(non-breaking space),它不会被折叠,也不会在行尾换行。适合少量、确定数量的空格需求:
- 每多一个
就多显示一个空格,比如渲染为三个空格 - 它宽度等于当前字体的常规空格宽度,受
font-family和font-size影响 - 不适合动态生成大量空格——可读性差,维护成本高
用white-space控制整块文本的空白处理
当需要保留一段文本中所有空格、缩进和换行时,改CSS比堆 更可靠:
- 给容器加
style="white-space: pre;":保留空格和换行,但不自动换行 - 用
white-space: pre-wrap;:保留空格和换行,且内容过长时正常折行 - 避免用
white-space: pre-line;——它会合并连续空格,达不到“连续显示”目的 - 注意:该属性作用于整个元素,不是单个空格;如果只有一两个空格要突出,别滥用这个
用 和 控制空格宽度
当需要比普通空格更宽、且语义明确的间隔时,HTML实体更精准:
立即学习“前端免费学习笔记(深入)”;
-
≈ 半个汉字宽(en空格),约等于当前字号的0.5em -
≈ 一个汉字宽(em空格),约等于当前字号的1em - 它们和
一样不会被折叠,也不会断行 - 比纯CSS的
margin或padding更适合内联文本中的语义化留白
容易忽略的是:这些实体的宽度是相对的,依赖父元素的font-size。如果父元素用了rem或缩放,它们也会同比例变化——这不是缺陷,但调试时得意识到源头在哪。



















