rowspan不是拉伸而是逻辑占位,需填正整数且≤当前行起剩余行数;被跨行列必须彻底省略td/th,否则错位;混用colspan时覆盖二维网格空间,总列数须全表一致。

直接说结论:rowspan 不是“拉伸”,而是让一个 <td> 或 <code><th> 占据多行的逻辑位置——它靠删掉后续行中对应列的单元格来实现视觉上的纵向延伸,不是 CSS 那种弹性拉伸。
<h3>rowspan 的值填多少才有效?</h3>
<p>必须填正整数,且不能超过从当前行到表格末尾的剩余行数(含当前行)。<code>rowspan="0" 无效,浏览器会当 rowspan="1" 处理;rowspan="999" 在 Chrome/Firefox 中会按实际剩余行数渲染,但语义已损坏,IE 可能错乱。
文章转信息图。将文章/笔记转化为手机可读的 HTML 信息图,自动匹配视觉风格。触发场景:文章转图、笔记转图、信息图、转小红书图、做张图、可视化这篇文章、文生图。
- 想跨 3 行?先确认起始行下面至少还有 2 行 —— 总共得有 3 行空间
- 动态生成时,得在 JS 或模板里提前算好重复值连续出现的行数,再决定写
rowspan="N" - 服务端渲染时,别硬编码
rowspan="5"后加新数据行却不更新该值,否则列会偏移
为什么写了 rowspan 表格却错位了?
最常见原因是:被跨过的行里,没跳过对应列的 <td>。浏览器不会自动“对齐”,它只按 HTML 结构逐行解析,多写一个 <code><td> 就多占一列,整行右移。
<ul><li>✅ 正确:<code><tr>
<td rowspan="3">A</td>
<td>B1</td>
</tr>
<tr><td>B2</td></tr>
<tr><td>B3</td></tr> —— 第二、三行完全省略左列 <td>
<li>❌ 错误:<code><tr>
<td rowspan="3">A</td>
<td>B1</td>
</tr>
<tr>
<td>C</td>
<td>B2</td>
</tr> —— 第二行多了一个 <td>,C 被挤到第二列
<li>空 <code><td></td> 或 <td> </td> 也不行,照样占位,破坏结构
rowspan 和 colspan 一起用要注意什么?
二者叠加不是简单相乘,而是占据二维网格空间:rowspan="2" colspan="3" 意味着这个单元格覆盖 2 行 × 3 列共 6 个逻辑位置,后续行/列中这 6 个格子都不可再写 <td>。
<ul>
<li>起始位置必须是“左上角”那个单元格,<code>rowspan 和 colspan 都只能写在它上面
colspan 值之和 + 未合并单元格数,这个总数必须全表一致,否则 tbody 和 thead 会脱节真正难的不是写对 rowspan,而是当表格从 JSON 动态渲染时,要确保聚合逻辑正确、跳过时机精准——漏一次 <td>,整张表的 <code>tr.cells.length 和 CSS 选择器都会失效。
前端入门到VUE实战笔记:立即使用
在学习笔记中,你将探索 前端 的入门与实战技巧!










