text-align: justify对中文无效,因浏览器仅在空格等分隔符间拉伸,中文无天然断点;需配合text-align-last: justify或text-justify: inter-character(Chromium支持)等方案。

直接用 text-align: justify 不够,中文段落基本没反应——这不是你写错了,是浏览器默认不给中文字间加空隙。
为什么 text-align: justify 对中文无效
Chrome/Edge 默认只在空格、连字符这类“单词分隔符”之间插入可伸缩空白,而中文没有天然词界,整段文字被当成一个超长“单词”,justify 就不拉伸。结果看起来和 text-align: left 一模一样。
- 不是 bug,是 CSS 规范 + 浏览器实现共同决定的行为
-
text-align-last: justify单独写也无效——它必须依赖text-align: justify已生效的前提 - 哪怕加了
text-align: justify,如果段落太短、容器太宽、或设置了white-space: nowrap,依然只有一行,也就没有“最后一行”可对齐
text-justify: inter-character 是最直接的解法
这个属性强制在每个字符之间插入可伸缩空白,专为中文、日文等无空格语言设计。
- 仅 Chromium 内核(Chrome/Edge 120+)支持;Firefox 128 忽略;Safari 完全不支持
- 稳妥写法是:
text-align: justify; text-justify: inter-character; - 现代 Chromium 用户立刻见效,其他浏览器自动退回到基础
justify行为(也就是看起来还是左对齐,但至少不报错) - 别全局设在
body或p上——长文渲染可能轻微卡顿,尤其移动端
让最后一行也撑满的两种可靠方式
text-align: justify 默认最后一行左对齐,这是规范定义,不是缺陷。想让它也两端对齐,得主动干预:
立即学习“前端免费学习笔记(深入)”;
- 加
text-align-last: justify:Chrome/Edge/Firefox 都支持,Safari 16.4+ 开始支持;但注意它只对多行文本的最后一行起作用,单行无效 - 用
::after伪元素兜底:.p-justify::after { content: ""; display: block; width: 100%; }——这样原文本变成倒数第二行,justify就会拉伸它;末行空块自然左对齐,视觉上更可控 - 别硬凑:如果段落只有两行,第二行就三个字,强行
text-align-last: justify会导致字间距爆炸,反而难看
这些坑千万别踩
<p align="justify"> 在所有现代浏览器里完全无效——HTML5 已废弃 align 属性,必须用 CSS 控制。
-
text-align控制的是段内文字对齐,不是<p>自身在页面中的位置(那得靠margin、flex或grid) - 安卓旧 Webview(如 UC、QQ 浏览器)在
font-size < 14px或line-height < 1.3时会跳过 justify 计算,不是 bug,是性能妥协 - 用
rem时小心根字号设太小(比如html { font-size: 10px; }),容易触发底层限制
真正麻烦的从来不是“怎么写”,而是“什么时候不该写”:中文字数少、容器窄、响应式断点频繁变化时,justify 很容易失效或反效果。先确认场景是否真需要两端对齐,再选方案。



















