HTML中用 实体可打出不可合并的空格;CSS推荐white-space: pre-wrap保留空格并自动折行;JS动态插入需用\u00a0或innerHTML避免被忽略。
浏览器默认会把连续多个 、普通空格、制表符、换行都压缩成一个空格。想让空格“可见且保留”,得用 HTML 实体或 CSS 控制。
是最常用方案,代表 No-Break Space,不会被合并,也不会换行,适合单词间防断行或微调间距
(半个汉字宽)、 (一个汉字宽)适合对齐中文内容,但兼容性略弱于
(键盘空格)无效——HTML 解析器会全当一个空格处理 比 更稳妥,避免 Safari 或旧版 Edge 渲染异常white-space 怎么配合用才不翻车光靠实体不够,悬浮层常因父容器限制导致空格失效。关键在控制文本渲染行为。
white-space: pre:保留空格和换行,但不自动换行,容易撑破悬浮层宽度white-space: pre-wrap:推荐首选,保留空格和换行,同时支持自动折行,适配响应式悬浮层white-space: break-spaces:新标准,空格也能折行,但 IE 完全不支持,Chrome 86+ 才稳定overflow: hidden 后还指望空格显示出来——它会直接裁掉超出部分中文排版不用空格分词,但设计稿常要求“标题与单位之间留一格”“图标后空半格”,这时容易误用。
插入“半格”视觉效果,实际宽度 ≈ 0.25em,比中文标点还窄,适合轻量分隔 (Unicode U+2007,Figure Space)更准——等宽数字的空格,中文字体下约等于半个汉字,语义也更清晰 (细空格),某些字体渲染为 0 宽,尤其 Windows + Chrome 组合下不可靠font-feature-settings: "tnum";(等宽数字), 对齐效果更稳悬浮层内容常由 JS 拼接生成,直接拼字符串容易丢空格或被转义。
element.textContent = "价格:" + price + " 元" → 中文冒号后那个空格会被浏览器忽略innerHTML 并显式写 :el.innerHTML = "价格: " + price + " 元"
`价格:${String.fromCharCode(160)}${price}${String.fromCharCode(160)}元`(160 是 的 Unicode){" "} 在 JSX 中仍会被压缩,必须写 {'\u00a0'} 或 字符串/* 示例:悬浮层中安全插入带空格的中文标签 */ 状态:运行中 | CPU:72%
空格不是小事,尤其在高密度信息的悬浮层里——差那半格,可能就让“已启用 | v2.4.1”变成“已启用|v2.4.1”贴死,阅读节奏全乱。实体选 ,CSS 选 pre-wrap,JS 里别信肉眼看到的空格。