应使用 实体实现真正的空格,因其为不可换行空格,能抵抗浏览器空白合并;而 等同普通空格仍会被压缩,css外边距是首选方案, 仅作css不可达时的兜底。

HTML 里怎么打出真正的空格(不是自动合并的)
浏览器默认会把连续的普通空格、换行、制表符全部压缩成一个空格,所以直接敲空格键没用。要让空格“显形”且不被折叠,得用 HTML 实体或 CSS 控制。
-
是最常用也最稳妥的选择,代表 No-Break Space,强制显示一个不可换行的空格 - 多个
连用(比如)能模拟多个空格效果,适合简单对齐或微调间距 - 避免用
或做列表项间空隙——它们语义是排版单位(对应 2/4 字符宽),在不同字体下表现不稳定 - 注意:
在<pre class="brush:php;toolbar:false;"></code> 或 <code>white-space: pre</code> 环境里和普通空格行为一致,不会额外生效</li> </ul> <H3>列表项(<code><li></code>)之间加空格的推荐做法</H3> <p>别在 <code><li></code> 标签之间硬塞 <code> </code>,既难维护又语义错乱。真正干净的做法是用 CSS 控制间距:</p> <ul> <li>给 <code><ul></code> 或 <code><ol></code> 设置 <code>margin-bottom</code> 或 <code>padding-bottom</code>,统一控制项间距离</li> <li>更精准的做法是给 <code><li></code> 加 <code>margin-bottom</code>(比如 <code>margin-bottom: 0.5em;</code>),最后一项用 <code>:last-child</code> 清掉,避免多余空白</li> <li>如果必须用内联空格(比如纯文本场景),只在 <code><li></code> 内容末尾加 <code> </code>,而不是放在标签之间——后者会被浏览器忽略或归为无效空白</li> </ul> <H3><code> </code> 和 <code>&#32;</code> 有什么区别?该选哪个?</H3> <p><code>&#32;</code> 是空格字符的十进制 HTML 实体,等价于键盘空格,仍受浏览器空白合并规则约束;而 <code> </code> 是专门设计来“抵抗合并”的。实际效果差异明显:</p> <pre class="brush:php;toolbar:false;"><p>hello<span> </span>world</p><div class="aritcle_card flexRow"> <div class="artcardd flexRow"> <a class="aritcle_card_img" href="/ai/745" title="What-the-Diff"><img src="https://img.php.cn/upload/ai_manual/001/503/042/68b6dc516822a519.png" alt="What-the-Diff" onerror="this.onerror='';this.src='/static/lhimages/moren/morentu.png'" ></a> <div class="aritcle_card_info flexColumn"> <a href="/ai/745" title="What-the-Diff">What-the-Diff</a> <p>检查请求差异,自动生成更改描述</p> </div> <a href="/ai/745" title="What-the-Diff" class="aritcle_card_btn flexRow flexcenter"><b></b><span>下载</span> </a> </div> </div><p><span>立即学习</span>“<a href="https://pan.quark.cn/s/cb6835dc7db1" style="text-decoration: underline !important; color: blue; font-weight: bolder;" rel="nofollow" target="_blank">前端免费学习笔记(深入)</a>”;</p> ← 显示为 “hello world”(三个可见空格) <p>hello<span>&#32;&#32;&#32;</span>world</p> ← 显示为 “hello world”(只剩一个空格)</pre> <ul> <li>需要“可见、稳定、不合并”的空格,一律用 <code> -
几乎没优势,还容易让人误以为它比普通空格更“强” - XML/XHTML 场景下
也更通用,不用查编码表
为什么不用 <br> 或外边距替代空格?
<br> 是换行符,不是空格,用它分隔列表项会破坏语义结构,导致屏幕阅读器误读、SEO 权重分散;而外边距(margin)虽是首选方案,但若遇到内联元素、行高干扰或 legacy 模板无法改 CSS 的情况, 就是唯一可靠兜底。
- 纯文本邮件模板、CMS 富文本编辑器输出、老系统前端嵌入等场景,
是事实标准 - 用
margin时注意:IE8 及更早版本对:last-child支持差,需用:first-child反向处理或 JS 补丁 - 移动端小屏下,固定像素的
margin可能不如相对单位(如em或rem)灵活
只在 CSS 不可达时才出手。









