我正在尝试创建一个具有固定列宽的表,以及一个固定的最大高度,它会滚动到最大高度以上。
环顾四周,我会使用表格布局:固定和指定列宽来完成第一项任务。我会设置最大高度,溢出:自动和显示:块在表上完成第二个.
然而,他们似乎并不是在一起工作。这些列大约是预期宽度的一半。
我的尝试:https://jsfiddle.net/d3y5g9fq/
<table>
<colgroup>
<col style="width: 30%">
<col style="width: 50%">
<col style="width: 20%">
</colgroup>
<thead>
<tr>
<th>Col A</th>
<th>Col B</th>
<th>Col C</th>
</tr>
</thead>
<tbody>
<tr><td>1</td><td>2</td><td>3</td></tr>
</tbody>
</table>table {
table-layout: fixed;
display: block;
max-height: 100px;
overflow: auto;
}发布于 2019-03-10 05:58:41
如果将列宽从百分比更改为视口宽度(vw),则应按预期工作,但不能完全按照预期工作。视图大小应该根据整个视图端口的大小进行大小调整,但如果将其包装在div中,width为70%,则在此场景中,它将以百分比的方式工作,而不是vw。
使用父vw为100%的width:
table {
table-layout: fixed;
display: block;
max-height: 100px;
overflow: auto;
}
p {
background-color: blue;
width: 100%;
}
table, td, th {
text-align: center;
border: 1px solid black;
}<p>Hi! </p>
<table>
<colgroup>
<col style="width: 30vw">
<col style="width: 50vw">
<col style="width: 20vw">
</colgroup>
<tbody>
<tr>
<th>Col A</th>
<th>Col B</th>
<th>Col C</th>
</tr>
<tr><td>1</td><td>2</td><td>3</td></tr>
<tr><td>1</td><td>2</td><td>3</td></tr>
<tr><td>1</td><td>2</td><td>3</td></tr>
<tr><td>1</td><td>2</td><td>3</td></tr>
<tr><td>1</td><td>2</td><td>3</td></tr>
<tr><td>1</td><td>2</td><td>3</td></tr>
<tr><td>1</td><td>2</td><td>3</td></tr>
<tr><td>1</td><td>2</td><td>3</td></tr>
<tr><td>1</td><td>2</td><td>3</td></tr>
</tbody>
</table>
使用父vw为70%的width:
table {
table-layout: fixed;
display: block;
max-height: 100px;
overflow: auto;
}
p {
background-color: blue;
width: 100%;
}
table, td, th {
text-align: center;
border: 1px solid black;
}<p>Hi! </p>
<div style="width: 70%">
<table>
<colgroup>
<col style="width: 30vw">
<col style="width: 50vw">
<col style="width: 20vw">
</colgroup>
<tbody>
<tr>
<th>Col A</th>
<th>Col B</th>
<th>Col C</th>
</tr>
<tr><td>1</td><td>2</td><td>3</td></tr>
<tr><td>1</td><td>2</td><td>3</td></tr>
<tr><td>1</td><td>2</td><td>3</td></tr>
<tr><td>1</td><td>2</td><td>3</td></tr>
<tr><td>1</td><td>2</td><td>3</td></tr>
<tr><td>1</td><td>2</td><td>3</td></tr>
<tr><td>1</td><td>2</td><td>3</td></tr>
<tr><td>1</td><td>2</td><td>3</td></tr>
<tr><td>1</td><td>2</td><td>3</td></tr>
</tbody>
</table>
<div>
不是你所期望的那样..。为什么?在很多情况下,vw和vh不按预期工作。我从来没有完全弄清楚为什么是我自己,但我想它是误解了视口作为一个单一的因素,出于某种原因。
如果您希望语法正确,也可以使用em而不是vw,这将给出完全相同的结果:
使用父em为100%的width:
table {
table-layout: fixed;
display: block;
max-height: 100px;
overflow: auto;
}
p {
background-color: blue;
width: 100%;
}
table, td, th {
text-align: center;
border: 1px solid black;
}<p>Hi! </p>
<table>
<colgroup>
<col style="width: 30em">
<col style="width: 50em">
<col style="width: 20em">
</colgroup>
<tbody>
<tr>
<th>Col A</th>
<th>Col B</th>
<th>Col C</th>
</tr>
<tr><td>1</td><td>2</td><td>3</td></tr>
<tr><td>1</td><td>2</td><td>3</td></tr>
<tr><td>1</td><td>2</td><td>3</td></tr>
<tr><td>1</td><td>2</td><td>3</td></tr>
<tr><td>1</td><td>2</td><td>3</td></tr>
<tr><td>1</td><td>2</td><td>3</td></tr>
<tr><td>1</td><td>2</td><td>3</td></tr>
<tr><td>1</td><td>2</td><td>3</td></tr>
<tr><td>1</td><td>2</td><td>3</td></tr>
</tbody>
</table>
使用父em为70%的width:
table {
table-layout: fixed;
display: block;
max-height: 100px;
overflow: auto;
}
p {
background-color: blue;
width: 100%;
}
table, td, th {
text-align: center;
border: 1px solid black;
}<p>Hi! </p>
<div style="width: 70%">
<table>
<colgroup>
<col style="width: 30em">
<col style="width: 50em">
<col style="width: 20em">
</colgroup>
<tbody>
<tr>
<th>Col A</th>
<th>Col B</th>
<th>Col C</th>
</tr>
<tr><td>1</td><td>2</td><td>3</td></tr>
<tr><td>1</td><td>2</td><td>3</td></tr>
<tr><td>1</td><td>2</td><td>3</td></tr>
<tr><td>1</td><td>2</td><td>3</td></tr>
<tr><td>1</td><td>2</td><td>3</td></tr>
<tr><td>1</td><td>2</td><td>3</td></tr>
<tr><td>1</td><td>2</td><td>3</td></tr>
<tr><td>1</td><td>2</td><td>3</td></tr>
<tr><td>1</td><td>2</td><td>3</td></tr>
</tbody>
</table>
<div>
https://stackoverflow.com/questions/55084819
复制相似问题