【发布时间】:2018-02-25 02:34:42
【问题描述】:
默认的 html <table> 元素似乎可以直接设置我想要/期望的列宽。当我尝试将整个表格宽度设置为 100% 时会出现问题,在这种情况下,每个合理大小的列都会对齐到总宽度的 1/n %。
这是我所说的一个例子
第二张桌子看起来很糟糕。绝对没有必要在第一列开始换行,尤其是当现在有 更多 可用空间时。
唯一的区别是第二个表设置为width:100%。当然,您可以在每列上设置精确的像素或百分比尺寸以相对于彼此进行缩放,但这开始硬编码一些关于每列有多大的猜测工作。在这种情况下,只有 View 或 Edit 链接的列可以非常小,不需要占用任何额外的空间,而有些可以使用更多空间增长,例如可能具有其他更长/更短值的名称/类型。
问:我能否以某种方式保持成比例的列格式,同时允许将整个表格的大小调整为可用宽度的 100%?
Demo in jsFiddle
堆栈片段中的演示
table {
border-collapse: collapse;
border-spacing: 0;
table-layout: fixed;
}
table th {
background: lightblue;
}
table th, table td {
border: lightgrey 1px solid;
padding: .1em 0.2em;
}
<h4>Width Not Set</h4>
<table id="example1" >
<thead>
<tr>
<th>Name</th>
<th>Type</th>
<th>Start</th>
<th>Stop</th>
<th>View</th>
<th>Edit</th>
</tr>
</thead>
<tbody>
<tr>
<td>Regular Size Name</td>
<td>Order</td>
<td>01/01/2017</td>
<td>02/02/2017</td>
<td><a href="#View">View</a></td>
<td><a href="#Edit">Edit</a></td>
</tr>
<tr>
<td>Pretty Long Name Size Actually</td>
<td>Adjustment</td>
<td>01/01/2017</td>
<td>04/03/2018</td>
<td><a href="#View">View</a></td>
<td><a href="#Edit">Edit</a></td>
</tr>
<tr>
<td>Regular Size Name</td>
<td>Adjustment</td>
<td>08/01/2017</td>
<td>02/02/2019</td>
<td><a href="#View">View</a></td>
<td><a href="#Edit">Edit</a></td>
</tr>
<tr>
<td>Pretty Long Name Size Actually</td>
<td>Order</td>
<td>08/01/2017</td>
<td>02/02/2019</td>
<td><a href="#View">View</a></td>
<td><a href="#Edit">Edit</a></td>
</tr>
</tbody>
</table>
<h4>Width 100%</h4>
<table id="example2" style="width:100%">
<thead>
<tr>
<th>Name</th>
<th>Type</th>
<th>Start</th>
<th>Stop</th>
<th>View</th>
<th>Edit</th>
</tr>
</thead>
<tbody>
<tr>
<td>Regular Size Name</td>
<td>Order</td>
<td>01/01/2017</td>
<td>02/02/2017</td>
<td><a href="#View">View</a></td>
<td><a href="#Edit">Edit</a></td>
</tr>
<tr>
<td>Pretty Long Name Size Actually</td>
<td>Adjustment</td>
<td>01/01/2017</td>
<td>04/03/2018</td>
<td><a href="#View">View</a></td>
<td><a href="#Edit">Edit</a></td>
</tr>
<tr>
<td>Regular Size Name</td>
<td>Adjustment</td>
<td>08/01/2017</td>
<td>02/02/2019</td>
<td><a href="#View">View</a></td>
<td><a href="#Edit">Edit</a></td>
</tr>
<tr>
<td>Pretty Long Name Size Actually</td>
<td>Order</td>
<td>08/01/2017</td>
<td>02/02/2019</td>
<td><a href="#View">View</a></td>
<td><a href="#Edit">Edit</a></td>
</tr>
</tbody>
</table>
【问题讨论】:
-
神秘的否决票?嘿,至少这里有一个minimal reproducible example 和一些现有的调试步骤。不要看到不知道的危害。
-
同意,也许这不是有史以来最有见地的 CSS 问题,但样本无可挑剔,问题也不是太明显,我认为
table-layout不在这个最常用的 CSS 列表中特性。我似乎有很多质量较差的问题,没有任何反对意见。
标签: html css css-tables