不能直接用了。HTML5已废弃valign属性,W3C不支持且校验报错;现代浏览器虽可能兼容渲染,但在Flex/Grid布局中完全失效;应改用CSS的vertical-align(单行文本)或display: flex + align-items(复杂内容)替代。

HTML 中 <td> 的 valign 属性还能用吗?
不能直接用了。HTML5 已废弃 valign 这类表现型属性,浏览器虽可能兼容渲染,但 W3C 不再支持,校验会报错,且在现代 CSS 布局(如 Flex、Grid)中完全失效。
用 CSS 替代 valign 的三种可靠方式
核心是给 <td> 设置 vertical-align,它才是标准方案。注意:该属性只对「表格单元格」和「行内/替换元素」生效,对普通 <div> 无效。
-
基础写法:直接在
<td>上加内联样式style="vertical-align: middle;",支持值包括top、middle、bottom、baseline -
批量控制:用 CSS 选择器统一设置,例如
td { vertical-align: middle; }或更精确的table.data-table td { vertical-align: top; } -
配合 line-height 失效场景:如果单元格里只有单行文字且高度不均,仅靠
vertical-align可能不够,需确保父<tr>或<table>有明确高度,或改用 Flex 布局包裹内容(见下一条)
当 vertical-align 不起作用时,该检查什么?
常见失效不是代码写错,而是上下文限制导致:
-
<td>内容是块级元素(比如嵌套了<div>),而vertical-align默认只作用于行内内容——此时需给内部<div>加display: inline-block;,或改用 Flex - 表格设置了
border-collapse: collapse;但没影响对齐,真正干扰的是padding和line-height,可临时设line-height: 1;排查 - 使用了
display: table-cell;模拟表格但忘了加vertical-align,这种模拟必须显式声明,CSS 表格模型不会继承 HTML 表格默认行为
更现代的替代方案:用 Flex 布局彻底绕过表格对齐限制
如果你的表格语义不强(比如只是排版需要),或要支持复杂垂直居中(如多行文本+图标+按钮),直接用 Flex 更可控:
<td style="display: flex; align-items: center; justify-content: center; height: 60px;"> <span>居中内容</span> </td>
注意:align-items 控制交叉轴(即垂直方向),justify-content 控制主轴(水平)。这里依赖 <td> 有明确高度,否则 Flex 容器高度由内容撑开,看起来仍像顶部对齐。
真正容易被忽略的是:表格单元格的 vertical-align 是相对整行基线计算的,而 Flex 的 align-items 是相对容器自身高度计算的——两者逻辑不同,混用时结果可能出人意料。

















