text-align: justify 对纯中文无效,因浏览器仅在单词分隔符处插入间隙,中文无内置断点;需配合 text-justify: inter-character 和 lang="zh" 才能实现字级两端对齐。

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"必须设在<html>标签或最近的块级父容器上,否则 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> 和 <th> 有效,但不会继承自 <table> ——你给 <table> 设了 text-align: justify,单元格照样左对齐。
数字列(如价格、数量)习惯右对齐,标题栏常用 center,常规描述文字保持 left。若真需表格内某列中文两端对齐,仍得按前述规则加 lang="zh" 和 text-justify,且必须写在 td 或 th 上。
容易被忽略的一点:表格中 vertical-align: middle 和 text-align: justify 可以共存,但 vertical-align 管垂直,text-align 管水平,两者互不干扰——别指望加了居中对齐就能让文字上下左右都“正中”。


















