[英]HTML Table Formatting: 2 colspan cell messes up column width
假设我有以下HTML:
<table>
<tr>
<th>Heading:</th><td>text</td>
</tr>
<tr>
<th>Heading 2:</th><td>text</td>
</tr>
<tr>
<th colspan="2">Really long heading:</th>
</tr>
<tr>
<td></td><td>text</td>
</tr>
</table>
这将创建一个包含两列的表,其中一列用于标题(左),一列用于值(右)-除了一行以外,其中长标题占据了两列,并且该值显示在下一列的最右侧行。 除此之外,我还有一些样式。 最重要的是:
td:last-child {
width: 100%;
}
th, td {
white-space:nowrap;
}
这样一来,最右边的列将占用任何额外的空间。 即使“真正长”的标题比标题列长/宽,我所拥有的也正在工作。 但是,当我在真正的长标题中添加更多单词(但又没有使其足够长以增加整个表的宽度)时,在某一点之后,左列的宽度开始随着long的长度而增加标题,减小右列的宽度。 这是怎么回事?
您无法定义宽度:具有多列的表格单元格的100%。 您应该使用colgroup标记来定义单元格的宽度:
.col-left { width: 20%; } .col-right { width: 80%; }
<table> <colgroup> <col class="col-left"> <col class="col-right"> </colgroup> <tr> <th>Heading:</th><td>text</td> </tr> <tr> <td colspan="2">Really long heading:</td> </tr> <tr> <th>lorem ispum dolores hello</th><td>text</td> </tr> </table>
将一个单元格设置为最小值的另一个技巧是,将另一个单元格占用其余的宽度,这是将第一个单元格设置为1px:
table { width: 200px; } th, td { border: 1px solid #000; } th { width:1px; }
<table> <tr> <th>hello</th> <td>world</td> </tr> <tr> <td colspan="2">hi</td> </tr> <tr> <td></td> <td>text</td> </tr> </table>
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.