align属性在HTML5中已废弃,表格对齐必须用CSS:text-align仅对td/th有效,整表居中用margin:0 auto(需设width),vertical-align控制单元格内内容垂直对齐,align-content对table无效。

直接说结论:align 属性在现代 HTML 中已完全废弃,所有对齐必须用 CSS 控制;用错位置(比如加在 <table> 上想居中整表)或混用旧写法,是 90% 对齐失效的根源。
text-align 只对 td/th 生效,table 上设无效
text-align 是控制单元格内文字、图片等行内内容水平对齐的唯一标准方式,但它只在 <td> 或 <th> 上起作用。
- ✅ 正确:
<td style="text-align: right;">¥123.45</td> - ❌ 无效:
<table style="text-align: right;">——<table>不渲染文本,无继承值可传 - ⚠️ 危险:
<tr align="right">—— HTML5 废弃属性,部分 WebView 会覆盖你写的 CSS - 若用了 UI 框架(如 Ant Design),检查 computed styles,常见干扰是
td { text-align: inherit !important; }
margin: 0 auto 是表格整体居中的唯一可靠方式
让整张 <table> 在页面中水平居中,不能靠 align="center",必须用 margin: 0 auto,但有两个硬性前提:
- 必须显式设置
width,例如width: 80%、width: 600px或响应式组合width: 100%; max-width: 800px; - 父容器不能有
float、display: inline或overflow: hidden等干扰布局的样式 - 别用
display: flex包裹<table>来居中——它会破坏colspan/rowspan渲染,打印和屏幕阅读器可能出错 - 更推荐方案:
<div style="display: flex; justify-content: center;"><table></table></div>(IE11+ 支持,无需固定宽)
vertical-align: middle 仅作用于 td/th 内部,且需高度支撑
vertical-align 控制的是单元格内内容相对于该单元格自身的垂直对齐,不是整行统一居中,也不是让表格在页面中垂直居中。
立即学习“前端免费学习笔记(深入)”;
- 只能写在
<td>、<th>或<tr>上,写在<table>上完全无效 - 合法值只有
top、middle、bottom、baseline;center是错的,写了也不生效 - 若单元格内容只有一行文本,
vertical-align: middle看起来没变化——因为默认就是middle,且行高由内容撑开 - 含图片时注意:
vertical-align作用于图片盒模型整体;若图片设了display: block,该属性即失效
align-content 在 table 中完全不生效
align-content 是 Flexbox 和 Grid 的属性,对原生 <table> 布局没有任何效果,浏览器会直接忽略。
- 常见错误:
<table style="align-content: center;">—— computed styles 里根本看不到该属性值 - 想用
align-content?说明你其实不需要<table>,该换结构了:用display: grid配grid-auto-rows+align-content: center,或display: flex; flex-wrap: wrap配明确高度容器 - 表格语义是“关系型数据”,不是“视觉网格”;强行套 Flex/Grid 会牺牲可访问性和打印兼容性
- 真正难的不是写对一行样式,而是确认「谁在管这个对齐」——是 CSS 规则?框架默认?还是残留的
align属性在暗中干扰?



















