colspan="n" 是让单元格占据 n 列位置并跳过后续 n−1 个单元格,需确保每行总列数一致;浏览器按标签结构渲染,不自动修正逻辑列数错位。
它不是“拉宽”,而是“占位+跳过”。colspan="3" 表示这个 <td> 或 <code><th> 吃掉自己位置 + 右边两个单元格的位置,后续同级单元格自动右移。浏览器不会帮你删掉多余的 <code><td>,只会按你写的标签逐个渲染。<ul><li>写 <code><td colspan="3">标题</td><td>A</td><td>B</td> → 这行实际有 5 列(3+1+1)
大概率不是属性写错了,而是整行“逻辑列数”没对齐。浏览器只认结构,不猜意图。
width 是否明显变宽;没变,说明被后续单元格挤回去了<td> 和 <code><th> 的列贡献:没写 <code>colspan 算 1,写了 colspan="2" 算 2,总和必须等于你设计的总列数(比如 5)col-span、colspan="2px" 或 colspan="two" —— 必须是纯数字字符串<thead> 和 <code><tbody> 不是独立系统,它们共享同一套列坐标。表头合并了几列,数据行就得按展开后的列数来填。<ul><li>错误写法:<code><th colspan="2">姓名</th><th>班级</th>(逻辑列数 = 3),接着写 <td>张三</td><td>李四</td><td>高三(1)</td><td>多余</td>(4 个 <td>)→ 第四列会右推,整行偏移<li>正确做法:先确定最大逻辑列数(这里是 3),然后每行 <code><td> 的 <code>colspan 值之和必须等于 3