align属性在HTML5中完全被废弃,W3C不再支持,验证器报错,浏览器仅靠向后兼容“看似有效”,实为非标准行为,新项目必须用text-align和vertical-align等CSS替代。
直接说结论:align 属性(比如 <td align="center">)在 HTML5 中**完全被废弃**,W3C 不再支持,验证器会报错,部分 WebView 或严格模式下直接忽略。你看到它“好像还有效”,只是浏览器做了向后兼容,不是标准行为。
常见错误现象:本地开发时 <td align="right"> 看似居右,上线后被 CSS 覆盖、或在 iOS Safari 某些版本里失效;用无障碍工具检测时,该属性被跳过,影响可访问性。
align 和 valign 都不该出现在新项目里<table align="center"> 是控制整张表在页面中的左右位置,不是单元格内容对齐 —— 这个也已被 margin: 0 auto 取代align,JSX 或模板中写它等于无效代码text-align 必须作用在 <td> 或 <th> 上,<tr> 上设无效,<table> 上设只影响继承行为,不可靠。
实操建议:
立即学习“前端免费学习笔记(深入)”;
<td style="text-align: right;">金额</td>
<col> 标签配类名,例如 <col class="num-col">,再写 CSS .num-col { text-align: right; }
<tr> 加 class,如 <tr class="header-row">,再用 .header-row td, .header-row th { text-align: center; }
!important 强行覆盖 —— 很可能是因为父级 <table> 或 <tbody> 设了 text-align: left 且未被正确重置vertical-align 默认值是 middle,所以表格单元格内容天然垂直居中 —— 但这是“相对于单元格自身”的居中,不是整行统一高度下的视觉居中。
容易踩的坑:
<tr style="vertical-align: top"> 完全无效,vertical-align 对 <tr> 不起作用vertical-align: top,也会看起来“错位”,因为每格高度不同<td> 和 <th> 都设 vertical-align: top
vertical-align: middle 对图片、图标等行内元素有效;但对 <div style="display: block"> 无效 —— 它不是行内元素,得换 flex 或重设 displaytext-align: center 只对“行内内容”起作用:纯文本、<img>(默认 inline)、<span> 都能居中;但 <div>、<p> 默认是块级,不会被居中,只会左对齐。
如果你在 <td> 里嵌套了一个 <div>,又只给 <td> 设了 text-align: center,结果是文字居中了,<div> 还是贴左 —— 因为 text-align 不控制块级子元素的位置。
此时要么:
<div> 加 margin: 0 auto(前提是它有明确宽度)<td> 设成 display: flex,再用 justify-content: center
<div>,改用 <span> + 行内样式真正容易被忽略的点是:对齐从来不是孤立操作,它依赖于元素显示类型、父级继承链、以及是否混用了块级/行内语义 —— 一个 text-align 失效,大概率不是属性写错了,而是上下文没理清。