当宽度值应用于表格单元格时,一旦表格宽度达到视口宽度,规则就会被忽略,例如
td, th { width: 400px; }
我希望10列的表格大约为4000px,但Firefox和Chrome只会将表格延伸到视口宽度(see Fiddle)。在此基础上,单元格宽度实际上不设置为400px。我在下面的问题中读到table-layout:fixed
用于强制单元格宽度,但它在这里不起作用。
存在两个类似的问题here和here,但它们只解决了初始宽度,并没有讨论视口限制。
为什么会这样?我看到有一个解决方法......
td, th { min-width: 400px; max-width:400px; }
......但只有width
才能实现这个目的,这似乎很奇怪。
答案 0 :(得分:1)
display:table-cell(td
元素的默认值)使td
的宽度限制为table
宽度。如果表的宽度为100px,则它们将保持100px宽度。但是如果你将它们设置为400px的宽度并且表格的宽度为100px,它们将忽略表格的宽度并且不受限制地扩展。见第一个答案
width:0
添加到table
并且它会起作用,因为表格单元格无法相对于width:0
展开,因此它们可以不受限制地展开请参阅下面的代码段或jsFIddle
table {
table-layout:fixed;
border-collapse: collapse;
background-color: white;
width:0;
}
td,
th {
border: 1px solid #999;
padding: 0.25em;
text-align: left;
width: 400px; // If uncommented, rule is ignored
}
<div>
<table>
<thead>
<tr>
<th> </th>
<th>aaa</th>
<th>aaa</th>
<th>aaa</th>
<th>aaa</th>
<th>aaa</th>
<th>aaa</th>
<th>aaa</th>
<th>aaa</th>
<th>aaa</th>
</tr>
</thead>
<tbody>
<tr>
<td>Cell</td>
<td>Cell</td>
<td>Cell</td>
<td>Cell</td>
<td>Cell</td>
<td>Cell</td>
<td>Cell</td>
<td>Cell</td>
<td>Cell</td>
<td>Cell</td>
</tr>
<tr>
<td>Cell</td>
<td>Cell</td>
<td>Cell</td>
<td>Cell</td>
<td>Cell</td>
<td>Cell</td>
<td>Cell</td>
<td>Cell</td>
<td>Cell</td>
<td>Cell</td>
</tr>
</tbody>
</table>
</div>
请参阅下面的代码段或jsFiddle
table {
table-layout:fixed;
border-collapse: collapse;
background-color: white;
}
div {
width:4000px;
overflow:auto;
}
td,
th {
border: 1px solid #999;
padding: 0.25em;
text-align: left;
width: 400px;
}
<div>
<table>
<thead>
<tr>
<th> </th>
<th>aaa</th>
<th>aaa</th>
<th>aaa</th>
<th>aaa</th>
<th>aaa</th>
<th>aaa</th>
<th>aaa</th>
<th>aaa</th>
<th>aaa</th>
</tr>
</thead>
<tbody>
<tr>
<td>Cell</td>
<td>Cell</td>
<td>Cell</td>
<td>Cell</td>
<td>Cell</td>
<td>Cell</td>
<td>Cell</td>
<td>Cell</td>
<td>Cell</td>
<td>Cell</td>
</tr>
<tr>
<td>Cell</td>
<td>Cell</td>
<td>Cell</td>
<td>Cell</td>
<td>Cell</td>
<td>Cell</td>
<td>Cell</td>
<td>Cell</td>
<td>Cell</td>
<td>Cell</td>
</tr>
</tbody>
</table>
</div>
width
动态div
} widths 请参阅下面的代码段或jsFiddle
td
var tdWidthTotal = 0;
$('td').each(function(index) {
tdWidthTotal += parseInt($(this).width(), 10);
});
$("div").width(tdWidthTotal)
table {
table-layout:fixed;
border-collapse: collapse;
background-color: white;
}
div {
overflow:auto;
}
td,
th {
border: 1px solid #999;
padding: 0.25em;
text-align: left;
width: 400px;
}
答案 1 :(得分:0)
显然display: table-cell
忽略了宽度。您可以在第th个元素中添加display: block
和width: 400px
的元素,它将起作用:
th div{
width: 400px;
}