col的span属性用于声明该col规则生效的连续列数,不合并单元格,只批量应用有限样式(如width、background-color);其总和须等于表格实际列数,且必须置于colgroup内。

col 的 span 属性不是跨列合并,而是批量声明“接下来连续几列”共用同一条样式规则。它不改变表格结构,只简化样式绑定。
span 是列数计数器,不是像素或百分比
它只表示该 col 元素的样式将作用于多少个**连续的、物理存在的列**。值必须是正整数,默认为 1。
-
<col span="3">表示:第 1、2、3 列都按这条规则渲染(比如统一设width: 120px) -
<col span="1">可省略,直接写<col> -
span="0"或负数无效,浏览器会忽略该col - 多个
col的span总和必须等于表格实际列数,否则末尾列可能无样式控制
必须嵌套在 colgroup 中,且位置严格
col 单独写在 table 内部(不在 colgroup 里)是非法的,现代浏览器基本忽略。
- 合法位置只有两个:
<colgroup><col span="2"></colgroup>,或作为table的第一个子元素(但规范更推荐前者) -
colgroup必须出现在thead或第一行tr之前,否则解析时可能失效 -
colgroup不支持嵌套,但可以有多个——例如固定列一组、滚动列一组,各自用独立colgroup
哪些样式真正生效?别白费劲设 color 或 font-size
col 支持的 CSS 属性非常有限,很多常见样式写了也无效,不是 bug,是规范限制。
- ✅ 稳定生效:
width(优先级高于td)、background-color(但会被td自身背景覆盖)、visibility: collapse(隐藏整列) - ⚠️ 部分生效:
text-align(仅部分浏览器支持,且效果不稳定,建议仍写在th/td上) - ❌ 完全无效:
color、font-size、border(Firefox 基本不认,Chrome/Edge 仅对左右边框有微弱表现) - ? 实际建议:用
class替代内联style,便于复用和响应式覆盖,例如<col class="name-col">
搭配 table-layout: fixed 时最容易踩坑
启用后,列宽完全由 col 或第一行单元格决定,但这也放大了配置疏漏的影响。
- 如果某列
col没设width,该列宽度可能变成0(Safari 尤其明显) -
width: auto在col上无效,只能用具体值(px、%、em) - 百分比宽度依赖
table的显式宽度:没设table的width,width: 30%就没意义 - 动态生成表格(如 React/Vue)时,
colgroup必须与列数同步更新,否则样式“漂移”
真正容易被忽略的是:一旦你开始用 col 控制宽度,就别再在 td 上设 width——冲突时行为不可预测,尤其在不同浏览器间。统一入口才可控。
前端入门到VUE实战笔记:立即使用
在学习笔记中,你将探索 前端 的入门与实战技巧!











