结论:align和valign在HTML5中已废弃,不可靠;text-align(作用于td/th)是水平对齐唯一标准方式,vertical-align仅对td/th等有效,表格整体居中须用margin:0 auto或flex布局。

直接说结论:别学 align 和 valign 属性,它们在 HTML5 中已废弃,浏览器行为不一致,调试时容易误判为“有时有效”,实际是兼容性残留,不是标准行为。
text-align 是控制文字/行内内容水平对齐的唯一可靠方式
它只作用于块级容器(如 <div>、<p>、<th>、<td>),影响其内部的文本、<span>、<img>(需是行内或 inline-block)等。
-
text-align: left/right/center/justify都是合法值,justify对单行效果不明显,适合多行段落 - 写在
<td>上比写在<tr>或<table>上更可控——后者可能被子元素样式覆盖或忽略 - 对金额列右对齐,推荐用语义类:
<td class="amount">¥12,345.67</td>+.amount { text-align: right; font-family: monospace; },防小数点错位 - 注意:
text-align对<div>子元素(如另一个<div>)无效,除非子元素是inline-block或设了display: inline
vertical-align 不是给表格整体用的,只管单元格内部内容
vertical-align 的生效前提很具体:目标元素必须是 display: inline、inline-block 或 table-cell;它不作用于 <table>、<div> 这类块级容器,加了也白加。
- 在
<td>里写style="vertical-align: middle;"才有效,写在<table>标签上完全没用 - 可选值只有
top、middle、bottom、baseline——center是常见错误写法,会失效 - 如果单元格高度未显式设定(比如只靠内容撑开),
vertical-align: middle可能“看起来没动”,因为没有足够空间做垂直居中计算 - 图文混排时,
<img>默认vertical-align: baseline,常导致底部留白,统一设vertical-align: middle是最简解法
表格整体居中只能靠 margin: 0 auto 或 flex 布局
<table align="center"> 是浮动模拟居中,HTML5 已废弃,W3C 验证器报错,且在 flex 或 grid 父容器中必然失效。
立即学习“前端免费学习笔记(深入)”;
- 最简方案:
<table style="margin: 0 auto; width: 800px;">——width必须设,否则auto失效 - 响应式友好方案:
<div style="display: flex; justify-content: center;"><table></table></div>,无需固定宽,IE11+ 支持 - 旧屏兼容方案:
<div style="text-align: center;"><table style="display: inline-table;"></table></div>,但窄屏下可能换行,慎用于大表 - 别用
colgroup控制对齐——它只支持有限样式(如text-align),不支持vertical-align或margin
最容易被忽略的一点:所有对齐行为都依赖上下文渲染模型。比如 text-align 在 flex 容器里对子项无效,vertical-align 在非行内流中不触发。与其死记属性,不如先确认目标元素的 display 值和父容器布局类型。



















