text-align必须显式作用于td或th才生效,table{ text-align:right }无效,因td默认继承inherit而table无实际text-align值;禁用html5已废弃的align="right";右对齐数字需配合等宽字体与干净数据。

text-align 必须加在 td 或 th 上才生效
text-align 不会从 table 继承,哪怕你写了 table { text-align: right; },td 也不一定右对齐——因为浏览器默认 td 的 text-align 是 inherit,而 table 元素本身不渲染文本,它的 text-align 值实际是 left(或未定义),导致继承后还是左对齐。
真正起效的写法是显式作用于单元格级:
-
td, th { text-align: right; }—— 全局统一 -
th { text-align: center; } td.num { text-align: right; }—— 表头居中、数字列右对齐 -
<td style="text-align: right;">123.45</td>—— 单元格内联,优先级最高,适合临时调试
别用 align="right",它在 HTML5 中已失效
虽然 <td align="right"> 在部分旧浏览器里还能“看起来有效”,但这是危险的假象:
<ul>
<li>W3C 验证器直接报错,CI/CD 流程可能拦截</li>
<li>Outlook 和某些 Android WebView 会优先读取 <code>align 属性,反而覆盖你写的 text-align CSS
align 在 table 标签上控制浮动,在 td 上却控制文字对齐,语义割裂,维护时极易出错现代项目里留着 align 属性,等于主动放弃样式可预测性。
右对齐数字时,text-align: right 只是第一步
单纯右对齐,小数点和负号容易错位,尤其混入全角空格或 Unicode 减号(−)时。要真正整齐,还得配合:
- 用等宽字体:
font-family: 'SFMono-Regular', Consolas, monospace; - 确保数据干净:
<td>-123.45</td>,不是<td> −123.45 </td>(注意前后空格和减号类型) - 避免
display: flex或float破坏text-align效果——一旦单元格内部用了这些,text-align就完全失效
为什么有时加了 text-align: right 还是左对齐?
大概率是 CSS 优先级被覆盖,尤其是用了 UI 框架(如 Bootstrap 的 table-sm、Ant Design 的 ant-table-cell)之后:
- 检查 computed styles,看最终生效的是哪条规则
- 常见干扰源:
td { text-align: inherit !important; }或框架设了text-align: left且带!important - 临时验证可用:
<td style="text-align: right !important;">,但上线前务必定位并替换为更合理的类名方案 <p>表格对齐真正的复杂点不在写法,而在「谁在管它」——HTML 属性、全局重置、组件库样式、内联 style,四层叠加下,不看 computed styles,光靠猜永远调不准。</p> </td>
前端入门到VUE实战笔记:立即使用
在学习笔记中,你将探索 前端 的入门与实战技巧!











