text-align: justify 对纯中文无效,因浏览器默认不在汉字间加弹性间距;需配合 lang="zh" 和 text-justify: inter-character 才能实现字级两端对齐。

text-align: justify 对纯中文段落基本无效,这不是你写错了样式,是浏览器默认不给汉字之间加弹性间距。
为什么 text-align: justify 在中文里没反应
浏览器实现两端对齐时,只会在 Unicode 标记为「单词分隔符」的位置(比如空格、连字符、标点后)插入拉伸间隙。中文字符几乎全属「普通字母」类,没有内置断点,所以 Chrome、Safari、Edge 默认不会在字与字之间调整间距。
结果就是:整段文字像 text-align: left 一样堆在左边,最后一行更是裸露左对齐。
-
<p style="text-align: justify;">这是一段中文</p>渲染后和左对齐几乎一样 - 中英文混排时,英文部分正常拉伸,中文部分挤成一团
- 容器没设
width或max-width,justify失效(“两端”无从谈起) - 单行文本永远不触发
justify行为,哪怕写了也没用
text-justify: inter-character 是目前最干净的解法
现代浏览器(Chrome 120+、Edge 120+、Firefox 110+、Safari 17.4+)支持 text-justify: inter-character,它强制按字断行并均匀分配字间距。
但有两个硬性前提:
-
lang="zh"必须设在标签或最近的块级父容器上,否则 Safari 可能静默失效 - 必须和
text-align: justify同时声明,缺一不可
正确写法示例:
<p lang="zh" style="text-align: justify; text-justify: inter-character;"> 这是一段用于演示两端对齐的中文段落。它需要足够长度才能体现效果。 </p>
别只加 text-justify 而漏掉 lang="zh";也别在短段落里试——text-justify: inter-character 不支持降级,旧版浏览器会直接回退到左对齐。
兼容旧环境的替代方案
如果目标环境包含 iOS Safari 16– 或旧版 Edge,text-justify 不可用,可考虑以下权宜之计:
- 用
text-align-last: justify让最后一行也拉伸(部分缓解突兀感,但不解决中文字距问题) - 配合
@supports not (text-justify: inter-character)包裹降级样式,防止覆盖原生支持环境 - 慎用
letter-spacing模拟“撑满感”,建议值控制在0.03em~0.06em;过大则标点后出现明显空隙(如「。」、「,」) - 避免
word-break: break-all,它会割裂词语,破坏语义
表格单元格里的两端对齐要单独处理
text-align 对 <td> 和 <code><th> 有效,但不会继承自 <code><table> ——你给 <code><table> 设了 <code>text-align: justify,单个单元格依然不会生效。
必须显式写在单元格级:
<td lang="zh" style="text-align: justify; text-justify: inter-character;">表格中的中文内容</td>
而且要注意:表格布局本身会压缩列宽,若内容过短或列宽未固定,justify 仍可能无表现。最稳妥的方式是先设 min-width 或 width,再加对齐声明。
真正容易被忽略的是 lang 属性的作用范围——它得落在实际渲染中文的容器上,而不是只挂在 顶层;一旦嵌套结构里某层漏掉了语言声明,那一块中文就自动退出字级对齐逻辑。
前端入门到VUE实战笔记:立即使用
在学习笔记中,你将探索 前端 的入门与实战技巧!











