html5 中禁用 align 属性,应改用 text-align 控制水平对齐、vertical-align 控制垂直对齐,且必须作用于 td/th 元素本身;复杂布局推荐 flex。

别用 align 属性——它在 HTML5 中已废弃,写了也不保证生效,还可能干扰 CSS 样式。
为什么 align 在 td 上不能用了
浏览器虽仍兼容解析 align="right" 这类写法,但本质是“兜底行为”,不是标准支持:
- W3C 验证器会报错,构建工具(如 Vite)常发 warning
- Firefox 新版本在严格 Doctype 下直接忽略
align - 与 CSS 的
text-align同时存在时,优先级混乱,Chrome 和 Safari 渲染结果可能不一致 - 邮件客户端(如 Outlook)、Android 低版本 WebView 等环境完全不识别,或按旧 quirks mode 错误解析
text-align 才是控制水平对齐的唯一可靠方式
它必须作用于 td 或 th 元素本身,而非父级 tr 或 table:
- 单个单元格右对齐:
<td style="text-align: right">¥1,234.56</td> - 整列右对齐:用
<col class="amount">+.amount { text-align: right; }(注意 IE8 不支持col上的text-align,需退回到td.amount类) - 金额列建议加等宽字体:
.amount { text-align: right; font-family: monospace; },防小数点错位 - 若单元格内有
<div style="display: block">,<code>text-align对它无效——得给该div自己加margin: 0 auto或display: flex; justify-content: centervertical-align控制垂直对齐,但只对td/th生效它不是让内容“绝对居中”,而是相对于单元格行高基线计算:
- 必须写在
td或th上:<td style="vertical-align: middle">文本</td>;写在table或tr上无效 - 若效果“看不见”,先检查单元格是否有足够高度支撑——
height、padding或内容撑开都行 - 含多行文本或图片时,
vertical-align: middle会让整块内容垂直居中;baseline适合图文混排场景 - 复杂结构(按钮+图标+文字)建议改用
display: flex:<td style="display: flex; align-items: center; justify-content: center">,但慎用于大量单元格,渲染开销略高 <p>真正容易被忽略的是:对齐效果取决于内容类型和显示模型。同一 <code>td里,纯文本、<img>(默认 inline)、<div>(默认 block)响应规则完全不同,没法靠一个 <code>text-align统一解决。
- 必须写在











