【问题标题】:Complex HTML table with rowspans and colspans is broken具有 rowspan 和 colspan 的复杂 HTML 表已损坏
【发布时间】:2021-03-25 18:57:41
【问题描述】:

我正在努力以 HTML 格式显示一个结构相当复杂的表格,并希望在试图找出问题所在时得到一些帮助。我的目标是用 HTML 打印出下表:

想要的布局

使用 HTML 显示时的实际布局:

table td {
        border: 1px solid black;
    }
    
    table {
        width: 100%;
    }
<table>
    <tr>
        <td rowspan="3" colspan="1">
            1
        </td>
        <td rowspan="3" colspan="2">
            2
        </td>
        <td rowspan="1" colspan="1">
            3
        </td>
        <td rowspan="1" colspan="1">
            4
        </td>
    </tr>
    <tr>
        <td rowspan="2" colspan="2">
            5
        </td>
    </tr>
    <tr>
        <td rowspan="1" colspan="1">
            6
        </td>
        <td rowspan="1" colspan="1">
            7
        </td>
        <td rowspan="1" colspan="1">
            8
        </td>
        <td rowspan="2" colspan="1">
            9
        </td>
        <td rowspan="1" colspan="1">
            10
        </td>
    </tr>
    <tr>
        <td rowspan="1" colspan="1">
            11
        </td>
        <td rowspan="1" colspan="1">
            12
        </td>
        <td rowspan="1" colspan="1">
            13
        </td>
        <td rowspan="1" colspan="1">
            14
        </td>
    </tr>
    <tr>
        <td rowspan="1" colspan="1">
            15
        </td>
        <td rowspan="1" colspan="1">
            16
        </td>
        <td rowspan="1" colspan="1">
            17
        </td>
        <td rowspan="1" colspan="1">
            18
        </td>
        <td rowspan="1" colspan="1">
            19
        </td>
    </tr>
</table>

你可以在这里看到结果:https://codepen.io/lexokag/pen/OJWyojq

你能告诉我在我的 colspans/rowspans 中哪里有错误吗?

【问题讨论】:

  • 图片中的表格有6行但你的html有5行?

标签: html html-table


【解决方案1】:

在这个表中,我必须留下一个空标签&lt;tr&gt;&lt;/tr&gt;,以创建一个不会让你的表中断的行。

table {
    width: 100%;
}

table tr {   
    height: 30px;
}

table td {
    border: 1px solid black;
    text-align: center;
}
<table>
    <tbody>
        <tr>
            <td rowspan="3">test text</td>
            <td colspan="2" rowspan="3">test text</td>
            <td>test text</td>
            <td>test text</td>
        </tr>
        <tr>
            <td rowspan="2" colspan="2">test text</td>     
        </tr>
        <tr></tr>
        <tr>
            <td>test text</td>
            <td>test text</td>
            <td>test text</td>
            <td rowspan="2">test text</td>
            <td>test text</td>
        </tr>
        <tr>
            <td>test text</td>
            <td>test text</td>
            <td>test text</td>
            <td>test text</td>
        </tr>
        <tr>
            <td>test text</td>
            <td>test text</td>
            <td>test text</td>
            <td>test text</td>
            <td>test text</td>
        </tr>
    </tbody>
</table>

【讨论】:

  • 我相信空行是答案的关键,还有其他方法吗?
  • @GauravGupta,是的,也许还有其他方法,但我只是想到了这种方法。
  • @GauravGupta 您可以将所有行跨度减少 1,并将第二行设置为高度的两倍:jsfiddle.net/g62yqorL
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2018-11-02
  • 2013-02-12
  • 1970-01-01
  • 1970-01-01
  • 2016-03-14
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多