细空格的 HTML 实体是 ,宽度约 1/6 em,用于数字与单位等需语义窄距处;须带分号,兼容性好,不可用作视觉留白或堆叠。

细空格用 ,不是
细空格(thin space)的 HTML 实体是 ,宽度约为 1/6 em,在排版中常用于数字与单位之间(如 “100 px”)、标点前后(如 “Fig. 5”),视觉上比 更轻、更克制。它和 的核心区别在于:前者是语义明确的“窄间距”,后者是“不可换行占位符”,宽度固定但偏宽,且容易被误用于纯视觉留白。
的实际写法和常见错误
必须带分号,写成 ,不能漏掉末尾的 ;;也不能写成 (无分号)或 (该命名实体在部分旧浏览器中不支持)。 是十进制数值实体,兼容性好,从 IE6 到现代 Chromium 都能正确渲染。
- ✅ 正确:
100 px→ 显示为 “100 px” - ❌ 错误:
100 px(少分号)→ 浏览器可能忽略或解析失败 - ❌ 错误:
→ Safari 12 及更早版本不识别 - ⚠️ 注意:
在小字号(如 12px)下可能肉眼难辨,别堆叠多个来凑宽度
和 、 、 的宽度对比
不同空格实体的视觉宽度取决于当前字体和字号,但相对关系稳定: ≈ 1/6 em, (en space, )≈ 1/2 em, (em space, )≈ 1 em,而 宽度通常接近普通空格(≈ 1/4–1/3 em),但行为完全不同——它强制不断行。
- 需要“数字+单位”间呼吸感 → 用
- 需要中文段落首行缩进两个字 → 用
或更推荐text-indent: 2em - 需要防止“100 px”在行尾断成两行 → 用
,不是 - 想模拟等宽字符对齐 → 优先考虑
white-space: pre-wrap+ 真空格,而非堆实体
JavaScript 动态插入细空格要小心编码
如果用 JS 拼接字符串插入细空格,别用 String.fromCharCode(8201) —— 它返回的是 UTF-16 码点,但在 HTML 文本节点中会被当作普通字符处理,可能因编码环境出错。稳妥做法是直接拼接字符串 " ",或用 DOM 方法设置 textContent 后再替换:
立即学习“前端免费学习笔记(深入)”;
const el = document.getElementById("unit");
el.innerHTML = "100" + " " + "px"; // ✅ 安全
// el.textContent = "100\u2009px"; // ⚠️ \u2009 是 Unicode,需确保页面编码为 UTF-8 且 meta 声明正确
细空格真正的难点不在“怎么打出来”,而在“该不该用”——它解决的是排版语义问题,不是视觉对齐问题。一旦开始用多个 模拟 margin,就该停下来改用 CSS 了。



















