white-space: pre-wrap 是最稳妥的批量控制方案:保留所有空白字符且允许自动折行,需作用于块级元素,避免与 overflow: hidden 等冲突;精确空格用 ,禁用 套普通文本。

white-space: pre-wrap 是最稳妥的批量控制方案
连续空格被压缩不是 bug,是 HTML 解析器执行「空白折叠」的规范行为。想让整段文本里的多个空格、换行、制表符都原样呈现,white-space: pre-wrap 是当前最平衡的选择:它保留所有空白字符,又允许自动折行,不会撑破容器。
常见错误现象:用 white-space: pre 后长文本溢出屏幕,或在 iOS Safari 里遇到 base64 字符串不折行;用 white-space: pre-line 则空格仍被合并,达不到“连续”效果。
- 必须作用于包裹文本的块级元素(如
<div>、<code><p></p>、<td>),不能只加在内联标签上 <li>若父容器设了 <code>overflow: hidden或text-overflow: ellipsis,可能截断内容,需补word-break: break-word - 动态插入内容时,用
innerHTML赋值才生效;textContent会把空格当纯字符串,不触发 CSS 规则 - 要 3 个空格,就写
,不要嵌套或混用普通空格 - 避免在
<input>的value属性或<button></button>标签内使用——属性值里的不会被解析 - 大量使用会增加 HTML 体积,且影响可访问性(屏幕阅读器可能读作“不间断空格”)
- 如果只是想让
<td> 里多几个空格,给 <code><td> 加 <code>white-space: pre-wrap即可,别包<pre class="brush:php;toolbar:false;"></pre> - 要用
<pre class="brush:php;toolbar:false;"></pre>,务必重置字体:font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif; - 用户输入或 API 返回的内容,必须先做 HTML 实体转义(
→ <code><),再塞进<pre class="brush:php;toolbar:false;"></pre> - 临时加
border: 1px solid red查看真实边界,确认空格是否真的没渲染,还是被视觉遮挡 - 若用了
border-collapse: collapse,记得检查padding是否为 0 —— 表格默认 padding 很小,容易掩盖空格宽度 - 避免在
<table> 上全局设 <code>white-space,应只作用于具体<td> 或用类选择器精准控制 真正难的不是让空格显示出来,而是判断该用 <code>控制语义间距、用white-space: pre-wrap保真格式,还是该重构结构——比如用flex对齐代替空格堆砌。多数时候,空格问题暴露的是布局逻辑没理清。
需要精确控制空格数量时,用 而不是敲空格键
是唯一能确保“这里就是 1 个可见、不可折行、不被合并”的空格实体。它不依赖字体、不触发换行逻辑,适合单位分隔、防断词、字段对齐等小范围场景。
常见错误现象:写成 &nsbp(漏分号)→ 浏览器不识别;在 React/Vue 模板里直接写 ,但没用 v-html 或 dangerouslySetInnerHTML → 被当作文本字面量渲染;中英文混排时用太多 做缩进 → 宽度不一致、响应式错位。
别用 标签强行套普通文本
<pre class="brush:php;toolbar:false;"></pre> 本质是 white-space: pre + 等宽字体 + 默认 margin,它只适合真正需要「原样复刻」的场景,比如代码、日志、ASCII 图形。拿它包一段带空格的普通段落,等于主动引入样式副作用。
常见错误现象:<pre class="brush:php;toolbar:false;"><p>姓名 年龄</p></pre> —— <p></p> 在 <pre class="brush:php;toolbar:false;"></pre> 内非法嵌套,浏览器会自动闭合;加了 <pre class="brush:php;toolbar:false;"></pre> 后中文发虚、字号变小、垂直对齐异常;内容含未转义的 或 <code>> → 被当成 HTML 标签解析,结构崩坏。
表格单元格里空格显示异常,先查 border-collapse 和 padding
在 <td> 或 <code><th> 中敲空格无效,是因为表格单元格同样受空白折叠影响。但即使加了 <code>white-space: pre-wrap,也可能因表格自身样式导致空格“看不见”。
常见错误现象:明明写了 <td>姓名 年龄</td>,却看不出三个空格;用 pre-wrap 后单元格高度莫名变高;相邻单元格边框塌陷后,空格间距被 border 遮盖。











