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-align: justify同时声明,缺一不可 -
lang="zh"必须设在<html>标签或最近的块级父容器上,否则 Safari 可能静默失效 - 内容长度至少能自然换行出 3 行以上,否则末行仍可能左对齐
- 短段落(如少于 4 行)可能因换行点不足,导致效果不可控
正确写法示例:
立即学习“前端免费学习笔记(深入)”;
使用 Puppeteer + Chrome 将 HTML 渲染为中文 PDF,自动处理图表等待、Tab 展开、动画、测高、白边消除、防分页,适用于看板、报表、网页和交互图表转 PDF。
<p lang="zh" style="text-align: justify; text-justify: inter-character;"> 这是一段用于演示两端对齐的中文段落。它需要足够长度才能体现效果。 </p>
表格单元格里怎么让中文两端对齐
text-align: justify 在 <td> 上基本没反应,不是写错了,是浏览器默认不给汉字之间加间隙——必须组合 text-justify: inter-character 和 lang="zh" 才能生效。
- 必须显式写在
<td>或<th>上,text-align不会从<table>继承 - 单元格需有明确宽度,例如
width: 240px或min-width: 150px - 慎用
letter-spacing模拟撑满,建议值控制在0.03em~0.06em;过大则标点后出现明显空隙(如「。」、「,」) - 避免
word-break: break-all,它会割裂词语,破坏语义;若需防溢出,优先用word-break: keep-all
正确写法示例:
立即学习“前端免费学习笔记(深入)”;
<td lang="zh" style="text-align: justify; text-justify: inter-character; width: 240px;"> 北京市朝阳区建国路8号万豪酒店B座12层 </td>
最后一行怎么也撑满?别只靠 text-align-last: justify
想让末行也两端对齐,text-align-last: justify 确实可用,但它只影响最后一行,且 iOS Safari 14.5+ 才支持,旧版本直接回退为左对齐。
- 别用它去“修复”短段落——如果整段就两行,第二行只有三个字,强行拉伸反而难看
- 更可控的做法是:在合适位置插入
<wbr>,引导浏览器换行点,避免末行孤立单字 - 对固定结构内容(如“姓名:张三”),改用
display: flex; justify-content: space-between模拟首尾贴边 - 若目标环境包含 iOS Safari 16– 或旧版 Edge,
text-justify不可用,需降级处理
真正容易被忽略的是:**中文两端对齐不是“加个样式就能好”,而是一组条件协同生效的结果——宽度、语言标记、浏览器版本、内容长度,缺一不可。**


















