如何在 HTML 表格中使用 colspan 和 rowspan?

Posted

技术标签:

【中文标题】如何在 HTML 表格中使用 colspan 和 rowspan?【英文标题】:How do you use colspan and rowspan in HTML tables? 【发布时间】:2012-04-07 11:59:48 【问题描述】:

我不知道如何合并 html 表格中的行和列。

您能帮我用 HTML 制作这样的表格吗?

【问题讨论】:

合并它们对吗?你是说colspan @DavidThomas 我可以制作 5 行 3 列的表格。但我真的不知道在哪里应用rowspan等。 @DAvid:很明显,提问者不知道从哪里开始,当您甚至不知道您正在寻找的属性是否存在时有时会很困难(在这种情况下为rowspan ) 如果您有幸拥有像 Dreamweaver 这样的可视化编辑器,那么了解这一点的一个好方法是创建基本表格网格,然后将所需的单元格合并在一起。然后检查已经生成的代码。您将看到各种单元格的合并位置以及它是如何使用代码完成的。 Dreamweaver 通常会生成干净且合规的代码,因此它将为学习者树立一个好榜样。 【参考方案1】:

如果您对表格布局的工作方式感到困惑,它们基本上从 x=0、y=0 开始,然后依次进行。让我们用图形来解释,因为它们非常有趣!

当你开始一个表格时,你就创建了一个网格。您的第一行和单元格将位于左上角。可以把它想象成一个数组指针,随着 x 的每一个递增值向右移动,随着 y 的每一个递增值向下移动。

对于您的第一行,您只定义了两个单元格。一个跨越 2 行,一个跨越 4 列。因此,当您到达第一行的末尾时,它看起来像这样:

<table>
    <tr>
        <td rowspan="2"></td>
        <td colspan="4"></td>
    </tr>
</table>

现在行已经结束,“数组指针”跳到下一行。由于 x 位置 0 已被前一个单元格占用,因此 x 跳转到位置 1 开始填充单元格。 * 请参阅有关行跨度之间差异的说明。

这一行有四个单元格,它们都是 1x1 的块,填充它上面一行的相同宽度。

<table>
    <tr>
        <td rowspan="2"></td>
        <td colspan="4"></td>
    </tr>
    <tr>
        <td></td>
        <td></td>
        <td></td>
        <td></td>
    </tr>
</table>

下一行是所有 1x1 单元格。但是,例如,如果您添加了一个额外的单元格怎么办?好吧,它会从右边的边缘弹出。

<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>

享受创建表格的美妙世界!

【讨论】:

【参考方案2】:

我建议:

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">&nbsp;</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 element。 th element. tbody element。 thead element。 table element。

【讨论】:

别忘了添加漂亮的颜色。 在这种情况下,我将“漂亮的颜色”留给读者作为练习。 如果有人感兴趣,一般来说这是如何工作的,请参阅下面@animousons 的精彩解释***.com/a/9830847/362951【参考方案3】:

如果有人正在寻找左侧和右侧的行跨度, 你可以这样做:

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>

【讨论】:

【参考方案4】:

如果您想向下扩展单元格,请使用 rowspan 并使用 colspan 扩展。

【讨论】:

【参考方案5】:

您可以在 td 元素上使用 rowspan="n" 使其跨越 n 行,并在 td 元素上使用 colspan="m" 使其跨越 m 列。

看起来您的第一个 td 需要一个 rowspan="2",而下一个 td 需要一个 colspan="4"

【讨论】:

【参考方案6】:

您要查找的第一个 td 属性是 rowspan: http://www.angelfire.com/fl5/html-tutorial/tables/tr_code.htm

<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></tr>
</table>

【讨论】:

【参考方案7】:
<style type="text/css">
     table  border:2px black dotted; margin: auto; width: 100%; 
    tr  border: 2px red dashed; 
    td  border: 1px green solid; 
</style>
<table>
    <tr>
        <td rowspan="2">x</td> 
        <td colspan="4">y</td>
    </tr>
    <tr>
        <td>I</td>
        <td>II</td>
        <td>III</td>
        <td>IV</td>
    </tr>
    <tr>
        <td>nothing</td>
        <td>1</td>
        <td>2</td>
        <td>3</td>
        <td>4</td>
    </tr>
</table>​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​

【讨论】:

【参考方案8】:
<body>
<table>
<tr><td colspan="2" rowspan="2">1</td><td colspan="4">2</td></tr>
<tr><td>3</td><td>3</td><td>3</td><td>3</td></tr>
<tr><td colspan="2">1</td><td>3</td><td>3</td><td>3</td><td>3</td></tr>
</table>
</body>

【讨论】:

【参考方案9】:

Colspan 和 Rowspan 一个表被分成几行,每一行又分成多个单元格。在某些情况下,我们需要表格单元跨越(或合并)多个列或行。在这些情况下,我们可以使用 Colspan 或 Rowspan 属性。

科尔斯潘 colspan 属性定义了一个单元格应该水平跨越(或合并)的列数。也就是说,您想将一行中的两个或多个 Cell 合并为一个 Cell。

<td colspan=2 > 

如何跨度?

<html>
<body >
    <table border=1 >
        <tr>
            <td colspan=2 >
                Merged
            </td>
        </tr>
        <tr>
            <td>
                Third Cell
            </td>
            <td>
                Forth Cell
            </td>
        </tr>
    </table>
</body>
</html>

行跨度 rowspan 属性指定单元格应垂直跨越的行数。也就是说,您想将同一列中的两个或多个单元格垂直合并为一个单元格。

<td rowspan=2 >

如何跨行?

<html>
<body >
    <table border=1 >
        <tr>
            <td>
                First Cell
            </td>
            <td rowspan=2 >
                Merged
            </td>
        </tr>
        <tr>
            <td valign=middle>
                Third Cell
            </td>
        </tr>
    </table>
</body>
</html>

【讨论】:

【参考方案10】:

我已将 ngIf 用于我的类似逻辑之一。如下:

<table>
<tr *ngFor="let object of objectData; let i= index;">
<td *ngIf="(i%(object.rowSpan))==0" [attr.rowspan]="object.rowSpan">object.value</td>
</tr>
</table>

这里, 我正在从我的模型对象中获取 rowspan 值。

【讨论】:

【参考方案11】:

和你的桌子很像

  <table border=1 width=50%>
<tr>
    <td rowspan="2">x</td> 
    <td colspan="4">y</td>
</tr>
<tr>
    <td bgcolor=#FFFF00 >I</td>
    <td>II</td>
    <td bgcolor=#FFFF00>III</td>
    <td>IV</td>
</tr>
<tr>
    <td>empty</td>
    <td bgcolor=#FFFF00>1</td>
    <td>2</td>
    <td bgcolor=#FFFF00>3</td>
    <td>4</td>
</tr>

【讨论】:

以上是关于如何在 HTML 表格中使用 colspan 和 rowspan?的主要内容,如果未能解决你的问题,请参考以下文章

如何使用角度将单元格 colspan 基于条件值?

html如何对表格的一行中的几列进行合并的代码

如何根据媒体查询使用 colspan/rowspan 创建不同的类似表格的布局?

在HTML表格中怎么合并单元格?

如何在表格中选择包括 colspans 的列?

HTML colspan 0 替代