不能安全使用。valign="middle" 在 HTML5 中已被废弃,现代浏览器兼容性差且行为不可控,应改用 CSS 的 vertical-align: middle 或 Flexbox 实现垂直居中。

valign="middle" 在 <td> 中还能用吗?
不能安全使用。现代浏览器虽可能“偶然”渲染出效果,但该属性在 HTML5 中已被正式废弃,W3C 不再保证其行为一致性,且部分新版本浏览器(如 Chrome 120+、Firefox 115+)已开始弱化支持或移除解析逻辑。
为什么 valign 会失效或表现异常?
根本原因是:浏览器现在优先按 CSS 渲染流程处理表格单元格,而 valign 属于内联呈现指令,既无级联机制,也无法继承或被重置。它和 CSS 的 vertical-align 冲突时,结果取决于解析顺序和浏览器实现细节——不是“谁写在后面谁生效”,而是“谁被忽略谁赢”。
-
valign="middle"对多行文本、带 padding 的单元格、设置了height的<td>常常完全没反应 - 当单元格内含
<img>或<input>等替换元素时,valign可能只影响文字基线,不控制整个内容块的垂直位置 - 配合
display: table-cell手动模拟表格的布局中,valign完全无效
替代方案:用 CSS 实现等效的垂直居中
必须用 vertical-align: middle,但它只对 display: table-cell 元素(包括原生 <td>、<th>)起作用,且仅控制单元格内行盒(line box)的对齐,不是“让内容在单元格高度里绝对居中”。
- 对单行纯文本:
<td style="vertical-align: middle;">内容</td>够用 - 对图片/表单控件/多行内容:需确保父
<td>有明确高度,且内容不溢出;否则建议改用 Flexbox:<td style="display: flex; align-items: center; height: 60px;"><div>内容</div></td> - 不要给
<tr>设vertical-align——它不接受该属性,写了也无效
容易被忽略的兼容性陷阱
很多人以为把 valign 换成 vertical-align 就万事大吉,其实还有两个隐藏雷区:
-
vertical-align默认值是baseline,不是middle;显式写vertical-align: middle才能覆盖默认行为 - 如果表格用了
border-collapse: collapse,某些旧版 Safari 会对vertical-align渲染错位,加padding-top/padding-bottom微调比硬调vertical-align更可靠

















