表示不可折叠、不换行的空格,每个实体渲染为一个独立空格;普通空格则被html解析器自动合并压缩为单个,这是规范行为而非bug;典型用途包括防断行(如“第1 章”)、表格补位、微调内联间距,兼容性优于 等其他空格实体。

直接用 ,每个对应一个不可折叠、不换行的空格。浏览器会把它当作文本内容渲染,而不是结构空白,所以能稳定输出你想要的数量和位置。
为什么普通空格在HTML里不生效
HTML解析器默认会把连续空格、制表符、换行符全压缩成单个空格,这是规范行为,不是bug。比如你在源码里写 hello<space><space><space>world</space></space></space>,最终页面只显示“hello world”中间一个空格。
这种压缩发生在所有文本节点中,包括 <p></p>、<span></span>、<div> 里——除非你显式干预。
<ul>
<li>它不影响标签属性值里的空格(比如 <code>class="a b c" 中的空格仍被当作分隔符)
<pre class="brush:php;toolbar:false;"></pre> 或设置了 white-space: pre 的元素 是最轻量、最兼容的绕过方式
的典型使用场景
适合需要精确控制内联空格数量的地方,比如对齐、防断行、微调间距:
- 防止“第1 章”在行尾被拆成“第1
章”,写成“第1章” - 让两个英文单词之间留出两个视觉空格:
Hello<code>World - 表格单元格中补位,避免纯空格被吃掉导致 td 看起来“没内容”
- 配合
<span></span>做局部空格控制,比如<span>Name:</span><code>John
别混淆 和其他空格实体
是最常用、最稳妥的选择;其他实体有特定宽度或语义,用错反而容易出问题:
-
:标准不间断空格,宽度随字体变化,兼容性 100% -
:en 空格,约等于当前字体半个字宽,IE 不支持 -
:em 空格,约等于当前字体一个字宽,同样存在兼容风险 -
:细空格,1/6 字宽,CSSletter-spacing更可控,不建议混用
除非你明确需要固定比例空格且已做兼容测试,否则一律用 。它不会因为字体切换突然变宽或失效,也不会在旧版 Safari 或微信内置浏览器里渲染异常。
常见错误:复制粘贴导致的隐形字符
从 Word、WPS 或某些编辑器里直接粘贴含空格的文本,常会带入真正的 或 Unicode 不间断空格(U+00A0),但源码里看不到——它们看起来像空格,实际是不同字符,可能引发样式错乱或 JS 字符串比对失败。
遇到奇怪的“空格不生效”或“空格宽度异常”,先检查是否误粘了富文本空格:
- 在 VS Code 或 Chrome DevTools 的 Elements 面板里右键“Edit as HTML”,看空格是否显示为
- 用正则
/[\u00A0\u2000-\u200B\u202F\u2060]/g检测隐藏空格字符 - 手动重敲空格,或用编辑器“显示不可见字符”功能确认
真正的问题往往不在怎么加空格,而在怎么确保加的是你认为的那个空格。











