问题描述
我不知道如何合并 HTML 表格中的行和列。
你可以帮助我在 HTML 中制作这样的表格吗?
最佳解决方案
我建议:
table {
empty-cells: show;
border: 1px solid #000;
}
table td,
table th {
min-width: 2em;
min-height: 2em;
border: 1px solid #000;
}
<table>
<thead>
<tr>
<th rowspan="2"></th>
<th colspan="4"> </th>
</tr>
<tr>
<th>I</th>
<th>II</th>
<th>III</th>
<th>IIII</th>
</tr>
</thead>
<tbody>
<tr>
<td></td>
<td>1</td>
<td>2</td>
<td>3</td>
<td>4</td>
</tr>
</tbody>
</table>
参考文献:
-
td
元素。 -
th
元素。 -
tbody
元素。 -
thead
元素。 -
table
元素。
次佳解决方案
如果您对表格布局如何工作感到困惑,那么他们基本上从 x = 0 开始,y = 0 并且跨越它们。让我们用图形来解释,因为他们很有趣!
当你开始一张桌子,你做一个网格。你的第一行和单元格将在左上角。想像它像一个数组指针,向右移动每个递增的值 x,并向下移动每个递增的值 y 。
对于您的第一行,您只定义两个单元格。一个跨越 2 行,一个跨越 4 列。所以当你到达第一行的末尾时,它看起来像这样:
<table>
<tr>
<td rowspan="2"></td>
<td colspan="4"></td>
</tr>
</table>
现在该行已经结束,”array pointer” 向下跳到下一行。由于 x 位置 0 已被前一个单元占用,所以 x 跳转到位置 1 以开始填充单元格。 *请参阅注意行范围之间的区别。
该行在其中有四个单元格,全部为 1×1 块,填充与其上方相同宽度的行。
<table>
<tr>
<td rowspan="2"></td>
<td colspan="4"></td>
</tr>
<tr>
<td></td>
<td></td>
<td></td>
<td></td>
</tr>
</table>
下一行是 1×1 单元格。但是,例如,如果你添加了一个额外的单元格呢?那么它会弹出右边的边。
<table>
<tr>
<td rowspan="2"></td>
<td colspan="4"></td>
</tr>
<tr>
<td></td>
<td></td>
<td></td>
<td></td>
</tr>
<tr>
<td></td>
<td></td>
<td></td>
<td></td>
<td></td>
<td></td>
</tr>
</table>
*但是,如果我们改为 (而不是添加额外的单元格) 使所有这些单元格的行数为 2?你需要考虑的事情是,即使你不会在下一行添加任何更多的单元格,行仍然必须存在 (即使它是一个空行) 。如果您尝试立即在行中添加新的单元格,则会注意到它将开始将它们添加到底行的末尾。
<table>
<tr>
<td rowspan="2"></td>
<td colspan="4"></td>
</tr>
<tr>
<td></td>
<td></td>
<td></td>
<td></td>
</tr>
<tr>
<td rowspan="2"></td>
<td rowspan="2"></td>
<td rowspan="2"></td>
<td rowspan="2"></td>
<td rowspan="2"></td>
</tr>
<tr>
<td></td>
</tr>
</table>
享受创造桌子的美好世界!
第三种解决方案
如果有人在左边和右边找一个行列,这里是怎么做的呢?
table {
border-collapse: collapse;
}
td {
padding: 20px;
border: 1px solid black;
text-align: center;
}
<table>
<tbody>
<tr>
<td rowspan="2">LEFT</td>
<td> 1 </td>
<td> 2 </td>
<td> 3 </td>
<td> 4 </td>
<td rowspan="2">RIGHT</td>
</tr>
<tr>
<td> 5 </td>
<td> 6 </td>
<td> 7 </td>
<td> 8 </td>
</tr>
<tr>
<td> - </td>
<td> - </td>
<td> - </td>
<td> - </td>
<td> - </td>
<td> - </td>
</tr>
</tbody>
</table>
或者,如果要将 LEFT 和 RIGHT 添加到现有行集中,则可以通过将折叠的 colspan
投掷在一起,实现相同的结果:
table {
border-collapse: collapse;
}
td {
padding: 20px;
border: 1px solid black;
text-align: center;
}
<table>
<tbody>
<tr>
<td rowspan="3">LEFT</td>
<td colspan="4" style="padding: 0; border-bottom: solid 1px transparent;"></td>
<td rowspan="3">RIGHT</td>
</tr>
<tr>
<td> 1 </td>
<td> 2 </td>
<td> 3 </td>
<td> 4 </td>
</tr>
<tr>
<td> 5 </td>
<td> 6 </td>
<td> 7 </td>
<td> 8 </td>
</tr>
<tr>
<td> - </td>
<td> - </td>
<td> - </td>
<td> - </td>
<td> - </td>
<td> - </td>
</tr>
</tbody>
</table>
第四种方案
如果要扩展单元格,colspan
可以使用 rowspan
进行扩展。
第五种方案
您可以在 td 元素上使用 rowspan="n"
使其跨越 n
行,并在 td 元素上使用 colspan="m"
,使其跨越 m
列。
看起来你的第一个 td 需要一个 rowspan="2"
,下一个 td 需要一个 colspan="4"
。
参考文献
注:本文内容整合自 Google/Baidu/Bing 辅助翻译的英文资料结果。如果您对结果不满意,可以加入我们改善翻译效果:薇晓朵技术论坛。