text-align: justify 单独用于中文段落基本无效,因浏览器默认不在汉字间插入弹性间距;必须配合 text-justify: inter-character 和 lang="zh" 才能实现可靠两端对齐。
text-align: justify 单独用在中文段落上基本无效——这不是你写错了,是浏览器默认不给汉字间加弹性间距。
text-align: justify 在中文里看起来没反应浏览器实现 text-align: justify 时,只会在 Unicode 中被标记为「单词分隔符」的位置(比如空格、连字符)插入拉伸间隙。中文字符几乎全属「普通字母」类,没有内置断点,所以 Chrome、Safari、Edge 默认不会在字与字之间调整间距。结果就是:整段文字像左对齐一样堆在左边,最后一行更是裸露左对齐。
常见错误现象:<p style="text-align: justify;">这是一段中文</p> 渲染后和 text-align: left 几乎一样;中英文混排时,英文部分正常拉伸,中文部分挤成一团。
width 或 max-width),否则“两端”无从谈起text-justify: inter-character
Chrome 120+、Edge 120+、Firefox 110+、Safari 17.4+ 支持 text-justify: inter-character,它强制按字断行并均匀分配字间距,是目前最干净的解法。
立即学习“前端免费学习笔记(深入)”;
但有个硬性前提:lang="zh" 必须设在 <html> 标签或最近的块级父容器上,否则部分浏览器不启用该策略。
正确写法示例:
<p lang="zh" style="text-align: justify; text-justify: inter-character;">这是一段用于演示两端对齐的中文段落。它需要足够长度才能体现效果。</p>
text-justify 而漏掉 lang="zh",否则 Safari 可能静默失效text-justify: inter-character 不支持降级,旧版浏览器会直接回退到左对齐letter-spacing 模拟当目标环境包含 iOS Safari 16– 或旧版 Edge,text-justify 不可用,可考虑用 letter-spacing 微调视觉“撑满感”,但这是权宜之计。
关键限制:
text-align: justify 基础声明0.03em ~ 0.06em,过大则标点后出现明显空隙(如「。 」、「, 」)@supports not (text-justify: inter-character) 包裹,防止覆盖原生支持环境出版级需求(如电子书导出、PDF 渲染、长文阅读页)下,text-align: justify 加任何 CSS 都无法稳定控制断行位置和字距分布。真实可靠的方案是结构化处理:用 JavaScript 按容器宽度逐行切分文本,在汉字间插入零宽空格()或窄空格( ),再交由浏览器渲染。
这个过程绕开了浏览器断行黑盒,但代价是增加 JS 计算、影响首屏性能,且需监听窗口 resize 重排。多数 CMS 或静态站点生成器已内置类似逻辑,自行实现前先查插件。
真正容易被忽略的点:中文两端对齐从来不是“加个 CSS 就完事”的事,它本质是排版引擎能力边界问题。浏览器支持度每年在变,但语义断词缺失、字体度量差异、渲染管线优化这些底层限制,短期内不会消失。