text-align: right 是唯一可靠、语义正确且兼容性最好的表格内容右对齐方式;应直接作用于 td/th 元素,禁用已废弃的 align="right" 属性,避免混淆整表定位与单元格内容对齐。

text-align: right 是唯一可靠、语义正确、浏览器兼容性最好的方式,其他方法要么只作用于整表位置(不是内容),要么破坏可访问性。
给 td 或 th 直接加 text-align: right
这是最稳的写法,不依赖父级、不改 display、不影响屏幕阅读器或打印样式。
- 内联写法:
<td style="text-align: right;">123.45</td> - CSS 类写法:
.num-col { text-align: right; },然后<td class="num-col">123.45</td> - 全局写法:
table td, table th { text-align: right; },但注意这会覆盖所有单元格,包括表头——如果表头需居中,就得单独重置th { text-align: center; }
为什么 align="right" 不能用
HTML5 已废弃 align 属性,现代浏览器虽多数仍渲染,但:
- W3C 验证失败,CI/CD 流水线可能报错
- 某些严格模式(如 XHTML 或部分 SSR 框架)直接忽略
- VS Code、WebStorm 等编辑器会标黄警告
- 和 CSS 优先级冲突时行为不可控,比如
td[align="right"] { text-align: left !important; }就会让它失效
table 整体靠右 vs 单元格内容靠右,别混
这是两个完全不同的需求,代码和效果完全不同:
立即学习“前端免费学习笔记(深入)”;
- 整张表在页面里靠右:用
table { display: block; margin-left: auto; }或父容器display: flex; justify-content: flex-end; - 表格内部文字靠右:必须作用于
td/th,用text-align: right - 常见错误:给
table加text-align: right—— 这只对 inline 子元素有效;而td默认是 table-cell,不继承该属性,所以毫无效果
数字列右对齐的隐藏坑
看着只是加个 text-align: right,但实际容易出问题:
- 小数点不对齐?
text-align: right不解决这个问题,得用等宽字体 +font-family: 'SFMono-Regular', Consolas, monospace; - 负号飘?确保用 ASCII 减号
-123.45,别用 Unicode 全角减号−123.45(宽度不同) - 右边多空白?检查
<td> 123.45 </td>里有没有首尾空格,HTML 会保留这些空白并参与对齐 - 框架覆盖?Bootstrap 的
td默认设了text-align: inherit,结果继承自table(默认 left),得显式写td { text-align: right !important; }或改用更具体的类选择器
真正麻烦的从来不是怎么写,而是写完发现小数点没对齐、负号错位、或者换了个 UI 框架就全乱了——这些细节不查 computed styles 根本看不出来。



















