<colgroup>和<col>用于声明表格列结构并支持有限样式(如width、background-color),不渲染内容,必须置于caption后、thead前,且col数量须与实际列数匹配。
colgroup 和 col 标签本身不渲染任何可见内容,也不创建单元格;它们只在表格解析早期向浏览器提供列的元信息——比如“这组有 3 列”“第 2 列宽度应为 80px”“最后两列背景统一设为浅灰”。实际显示仍完全依赖 tr 内的 td/th。如果漏写 col 或数量对不上,浏览器会自动补全,但样式可能错位。
想让第 1 列固定宽 120px、第 2–4 列背景色统一、第 5 列右对齐,就得这样组织:
<table> <colgroup> <col style="width: 120px"> <col span="3" style="background-color: #f9f9f9"> <col style="text-align: right"> </colgroup> <thead><tr><th>姓名</th><th>部门</th><th>职级</th><th>入职日</th><th>薪资</th></tr></thead> <tbody><tr><td>王五</td><td>研发</td><td>P6</td><td>2024-03-15</td><td>25000</td></tr></tbody></table>
span="3" 表示该 col 覆盖接下来连续的 3 列(即第 2、3、4 列),不是“从第 2 列开始跨 3 列”col 必须按顺序严格对应表格实际列数,否则样式会偏移(例如表格有 5 列但只写了 4 个 col,最后一列将无样式继承)colgroup 必须放在 caption 之后、thead/tbody/tr 之前,放错位置会被浏览器忽略col 支持的样式非常有限,不是所有写在 td 上的属性都能平移过来:
width(推荐用 px 或 %)、background-color、border(仅影响列边缘,非单元格内边框)color、font-size、padding、margin、vertical-align
text-align 在部分浏览器中表现不稳定,Chrome 支持但 Safari 可能忽略;如需可靠居中,仍得在 td 或 th 上设置最常踩的坑不是语法错,而是优先级和覆盖逻辑问题:
立即学习“前端免费学习笔记(深入)”;
background-color,会直接覆盖 col 的同名样式align 或 width(带引号的字符串值),HTML5 中完全不解析col 写在 tbody 里面,或放在 tr 后面——它只在表格顶部声明阶段起作用colgroup,这类现代布局根本不识别 col 标签真正关键的点在于:col 是结构前置声明,不是样式钩子;它省不了多少代码,但能统一列宽和基础背景,精细控制还得回到 td/th 上动手。