html - 如何使表格内的div填满剩余空间
问题描述
鉴于下面的 HTML 结构,我如何td.expand
填充剩余的垂直空间#outer
?我尝试了各种解决方案(包括 Flexbox),但对我没有任何效果。不幸的是,我被这两个表卡住了,所以假设 HTML 结构不能改变。另外,假设它#outer
在一个可以调整大小的模态中,所以它的高度是动态的(即,当用户调整模态的大小时,高度#outer
会改变,并且td.expand
应该不断填充垂直空间,这样页眉和页脚将始终分别位于 的顶部和底部#outer
。
#outer {
height: 400px; /* dynamic */
background: skyblue;
}
.fixed {
height: 20px;
}
header,
footer {
height: 50px;
border: 1px solid black;
}
<div id="outer">
<div id="container">
<header>Header</header>
<table class="outer-table">
<tr>
<td>
<div class="content">
<table class="inner-table">
<tr><td class="expand">This should fill up remaining vertical space.</td></tr>
</table>
</div>
</td>
</tr>
<tr class="fixed"><td>Fixed height</td></tr>
<tr class="fixed"><td>Fixed height</td></tr>
</table>
<footer>Footer (should be pushed to the bottom)</footer>
</div>
</div>
输出应如下所示,其中td.expand
填充了 的剩余空间#outer
:
解决方案
只需通过从父项中减去和和两个height
占用height
来计算footer
header
tr
height
#outer {
height: 400px;
background: skyblue;
}
header,
footer {
height: 50px;
border: 1px solid black;
}
.content {
background: red;
height: 245px;
}
<div id="outer">
<div id="container">
<header>Header</header>
<table class="outer-table">
<tr>
<td>
<div class="content">
<table class="inner-table">
<tr>
<td class="expand">This should fill up remaining height of #outer (blue)</td>
</tr>
</table>
</div>
</td>
</tr>
<tr>
<td>Fixed height</td>
</tr>
<tr>
<td>Fixed height</td>
</tr>
</table>
<footer>Footer</footer>
</div>
</div>
推荐阅读
- c# - 添加cryptostream C#后,streamwriter继续分配流
- go - 是否可以解析 k8s 非结构化的状态字段。非结构化
- amazon-web-services - 我在谷歌的 ip 是什么给了我我的 Ip。如果我将其作为入站规则放在 AWS RDS 安全组中,是否只允许访问我的计算机
- javascript - if...else 在 JavaScript 中的逻辑问题
- git - git tortoise:2.1 错误代码128,“致命:远程端意外挂断”
- gatsby - 使用 gatsby-source-figma 插件运行 Gatsby 服务器时重复出现错误
- c# - Windows 窗体控件自定义集合正在使设计器崩溃而不报告任何错误
- ms-word - 有没有办法编写 Microsoft Word 脚本来自动保存所有打开的文档?
- java - 将 Spring Boot 从 2.1.x 升级到 2.3.3 时无法获取云配置
- java - 将 JWT 部署为远程服务或公共库