colspan属性需写为colspan="N"(N为正整数),合并单元格时须确保每行单元格colspan值之和等于设计总列数,否则表格错位;table-layout: fixed下宽度由首行或<col>定义。

colspan 属性怎么写才有效
必须是纯数字字符串,写成 colspan="2" 才行;colspan=2(不加引号)浏览器也能认,但建议统一加双引号;以下写法全无效:
-
colspan="2px"(带单位) -
colspan="two"(非数字) -
colspan="0"或colspan="-1"(非正整数) -
colspan="undefined"(JS 拼接时变量未定义)
合并后怎么保证表格不乱
每行“真实列数”要一致:把这一行所有单元格的 colspan 值(没写就是 1)加起来,结果必须等于你设计的总列数。例如表头有 4 列,那每一行加起来都得是 4。
- 写
<td colspan="3">A</td><td>B</td>→ 3 + 1 = 4 ✔️ - 写
<td colspan="3">A</td><td>B</td><td>C</td>→ 3 + 1 + 1 = 5 ✘ 错位 -
<thead>用了colspan,<tbody>的每一行也得按展开后的列数来写,不能只看<th>有几个
常见使用场景示例
比如三列表格中,想让某一行前两列合并、第三列独立显示:
- 第一行:
<th>姓名</th><th>年龄</th><th>城市</th> - 关键行:
<td colspan="2">张三 & 李四</td><td>北京</td>
这样视觉上就是左宽右窄两个单元格,结构也完全合规。
立即学习“前端免费学习笔记(深入)”;
table-layout: fixed 下要注意宽度
如果表格设置了 table-layout: fixed,单元格宽度不再由内容撑开,而是由第一行或 <col> 定义。此时 colspan="2" 的实际宽度 = 它所跨的两列基准宽度之和。
- 单独给该单元格设
width通常被忽略 - 想精确控制,优先在第一行用
<col width="120">或<th style="width:120px">定义列宽 - 百分比宽度(如
width: 60%)是指占整个表格宽度的 60%,不是占两列总宽的 60%



















