text-justify不是标准CSS属性,表格中无效;真正起作用的是text-align: justify配合text-justify: inter-character,且必须同时声明、设置lang="zh"、显式width并确保多行换行,缺一不可。

text-justify 不是标准 CSS 属性,表格中根本不能用它优化排版——浏览器会直接忽略。真正起作用的是 text-align: justify 配合现代浏览器支持的 text-justify: inter-character,且必须满足硬性前提,否则表格单元格里的中文照样左对齐。
为什么给 <td> 加 text-justify: inter-character 没反应
常见错误现象:<td style="text-align: justify; text-justify: inter-character;">中文文本</td> 在 Safari 或旧版 Edge 里完全无效,甚至在 Chrome 120+ 里也“看起来没变化”。
-
text-justify: inter-character必须和text-align: justify同时声明,缺一不可 -
lang="zh"必须设在<table>、<tr>或<td>上(推荐设在<table lang="zh">),否则 Safari 17.4+ 会静默失效 - 单行文本不触发两端对齐行为——表格单元格若高度固定或内容过短,实际只渲染一行,
justify失效 - 表格单元格默认
white-space: normal,但若父级设了white-space: nowrap或overflow: hidden,会阻止换行,导致无法拉伸
<td> 里中文两端对齐的最小可行写法
不是加个样式就行,得控制上下文。以下写法在 Chrome 120+ / Firefox 110+ / Safari 17.4+ 中可稳定生效:
<table lang="zh">
<tr>
<td style="text-align: justify; text-justify: inter-character; width: 300px;">
这是一段用于演示表格内中文两端对齐的示例文本。它需要足够长度才能体现效果,且不能被强制截断。
</td>
</tr>
</table>
-
width(或min-width)必须显式设置,否则单元格宽度由内容撑开,justify无参照基准 - 避免在
<td>上同时设word-break: break-all或overflow: hidden,它们会破坏换行逻辑 - 若单元格含图标、
<img>或inline-block元素,需确保它们不干扰行内流布局;建议用vertical-align: top统一对齐基线
兼容 iOS Safari 16– 或旧版 Edge 的降级方案
这些环境不支持 text-justify: inter-character,强行使用会回退到左对齐,且无任何警告。稳妥做法是用 @supports 隔离现代样式:
立即学习“前端免费学习笔记(深入)”;
td {
text-align: left;
}
@supports (text-justify: inter-character) {
td {
text-align: justify;
text-justify: inter-character;
}
table {
lang: "zh";
}
}
- 别用
letter-spacing模拟对齐:表格列宽固定时,它会让标点(如「,」、「。」)后出现肉眼可见空隙 - 慎用
::after补宽技巧(如content: ""; display: inline-block; width: 100%):表格单元格的display: table-cell会限制伪元素行为,多数情况下失效 - 如果数据来自 CMS 或用户输入,优先在后端做「按字插入零宽空格」(
\u200B)处理——但注意复制粘贴时可能带出异常字符
表格里实现中文两端对齐,核心不是“怎么加属性”,而是“让浏览器承认这段文字有可拉伸的断点”。lang="zh" 和 text-justify: inter-character 是当前唯一语义正确、无需 hack 的解法,但它的生效链条极脆弱:缺一个条件,就退回左对齐。别指望它在所有设备上自动工作,尤其移动端小屏下,字距拉伸容易失真,建议用媒体查询在 max-width: 480px 时强制降级为 text-align: left。



















