我无法相信这让我很难过。
我有一张宽度为100%的桌子。 我有列,其中一些列的宽度已定义。 我的表中有两种类型的行。有些总是可见的,有些会在点击它们上面的行时出现。
HTML:
<table border="1" style="width: 100%;">
<tr class="a">
<td colspan="2" style="width: 50px">
A
</td>
<td style="width: 40px">
A
</td>
<td>
A
</td>
</tr>
<tr class="b">
<td>
A
</td>
<td style="width: 10px;">
A
</td>
<td>
A
</td>
<td>
A
</td>
</tr>
</table>
JS:
$(function(){
$(".b").hide();
$(".a").click(function(){
$(".b").toggle();
})
})
这是一个JSFiddle:
它不会更简单......但我无法理解为什么这不会按照我想要的方式行事。
有人可以提出建议吗?
答案 0 :(得分:1)
如果您希望表格列符合CSS设置的宽度,您可以定义fixed table layout:
table {
table-layout: fixed;
}
答案 1 :(得分:1)
您可以使用&#34; colgroup&#34;和&#34; col&#34;用于定义表结构的标记。那么你将不会遇到这个问题,因为结构将由这些标签修复。例如:
<colgroup>
<col span="2" style="width:50px" >
<col style="width:30px">
</colgroup>
答案 2 :(得分:0)
这是因为表格始终保持其结构,具体取决于其中的列数和数据。您可以从以下几点简要总结您遇到此问题的原因: -
首先,第一行中有三列。
其次,第二行有四列。
第三,td
的宽度各不相同(我在谈论同一td
中的columns
。
要维护tr-td
结构,Table会自行调整。在您的情况下,当您单击第一行时,第二行有四列(4 td
s)打开,调整前一个tr
。前两个td
的第二行在第一行的第一个td
下面。尝试在第二行添加更多列,您将相应地看到更改,但表结构不会受到干扰。它将始终保持100%。
table-layout:fixed
将解决您的问题,但在每种情况下都不是一个好的做法。它不适用于跨浏览器。此外,您不希望宽度在toggle
上进行更改,table-layout:fixed
将无法解决您的问题。