HTML中显示多个空格需用 实体或CSS控制: 防合并换行,但模板中易被二次转义;CSS用white-space、text-indent或padding/margin更可靠,辅以 、 等字符适配排版需求。
普通键盘敲空格,在 HTML 中会被浏览器自动合并成一个空格,连续多个 或空格键输入都无效。要显示“多个可见空格”,必须用 HTML 实体或 CSS 控制。
是最常用方案,代表 No-Break Space,不会被换行、也不会被合并,每个 渲染为一个固定宽度空格 ,而不是敲四次空格键 是 UTF-8 字符,不是 ASCII 空格(U+0020),某些后端模板(如 Jinja2、Django)若未设好编码,可能渲染异常 容易踩的坑在 Django、Vue、React、Jinja2 等模板里直接写 ,看似简单,实则受转义逻辑干扰严重。
是 HTML 实体,必须确保它没被当成纯文本再转义一次 → 结果变成显示 字面量v-html 渲染含 的字符串才生效;直接插值 {{ text }} 会原样输出字符,不解析实体 ,要用 |safe 过滤器,否则会被转义成
需要控制空格宽度、响应式缩进、或与文字对齐时, 很难维护,CSS 更可靠。
margin-left 或 padding-left 替代前置空格(比如缩进段落)white-space: pre / pre-wrap 保留原始空白(适合代码块、日志等场景)text-indent 控制首行缩进,比堆 干净得多white-space: nowrap 会阻止换行,但不改变空格合并行为 —— 还得配合 或 (窄空格)才能保多空格除了 ,还有几个常被忽略但实用的空格符号:
:半个汉字宽(约 0.5em),适合中英文混排时微调间距 :一个汉
:更窄(约 1/6em),适合紧贴标点微调,比如 “问号 ?” (Unicode U+2001)是 Thin Space,和 效果类似,但更通用,部分字体支持更好姓名:张三 工号:1001
复杂点在于:不同浏览器对这些空格字符的宽度渲染略有差异,移动端尤其明显;如果设计要求像素级对齐,优先用 ch 或 em 单位的 padding/margin,而非依赖实体宽度。