html - HTML 表格宽度按比例设置
问题描述
我有一个固定布局的表格,有两列。如果我只设置一列的宽度,事情就如预期的那样(至少我预期的那样)。
但是,如果我指定两列的宽度,单元格开始按比例划分自身。
table {
table-layout: fixed;
width: 120px;
border-collapse: collapse;
}
td {
overflow: hidden;
white-space: nowrap;
text-overflow: ellipsis;
padding: 0;
}
td:first-child {
width: 5%;
}
td:nth-child(2) {
width: 2%;
}
<table>
<tr>
<td>Ed</td>
<td>Wood</td>
</tr>
<tr>
<td>Albert</td>
<td>Schweitzer</td>
</tr>
<tr>
<td>Jane</td>
<td>Fonda</td>
</tr>
<tr>
<td>William</td>
<td>Shakespeare</td>
</tr>
</table>
我的意图是让第一列占据行宽的 5%(120 像素),第二列占据行宽的 2%。但是,第一个占行宽的 5/7,第二个占行宽的 2/7。
是否有一些规范详细说明了这种行为?
解决方案
正如 Itay 所提到的,总宽度必须与桌子的宽度相匹配。当您设置一列的宽度时,唯一发生的事情是第一列占 5%,其他列占剩余的 95%,如果您将宽度添加到所有列,它们会逐个拆分空间,直到达到 100%。
你可以得到你想要达到的一种方法是有一个像这样的空列
table {
table-layout: fixed;
width: 120px;
border-collapse: collapse;
background: whitesmoke;
}
td {
overflow: hidden;
white-space: nowrap;
text-overflow: ellipsis;
padding: 0;
}
td:first-child {
width: 5%;
}
td:nth-child(2) {
width: 2%;
}
td:last-child {
width: auto;
}
<table>
<tr>
<td>Ed</td>
<td>Wood</td>
<td></td>
</tr>
<tr>
<td>Albert</td>
<td>Schweitzer</td>
<td></td>
</tr>
<tr>
<td>Jane</td>
<td>Fonda</td>
<td></td>
</tr>
<tr>
<td>William</td>
<td>Shakespeare</td>
<td></td>
</tr>
</table>
这样,空列将占用剩余空间,并让您的其他列具有您指定的宽度。如果您确实决定希望行跨越表格的整个宽度,width: auto
则将为 0 并且不应该给您带来任何问题。
推荐阅读
- javascript - 如何在 Javascript 中访问这些数据?
- timescaledb - 具有大型数据集的 timescaledb 的性能
- google-chrome - chrome是否会停止重定向的请求?
- grails - grailsApplication.config.grails.binRange 处的代码失败。任何人都可以解决这个问题?
- android - 在使用 React Native 时实现 SSL 证书固定
- angular - 将 DIV 元素附加为 typeScript 中自动完成容器的子元素
- html - 如何在不影响弹性项目元素对齐的情况下减少最后一行的背景颜色宽度?
- javascript - 将响应式表单与自定义输入等绑定
- firebase - Firebase Cloud Functions 和 Cloud Firestore 区域
- javascript - Node.js 在一个循环中多次调用 MySQL 存储过程