【发布时间】:2018-02-06 21:03:58
【问题描述】:
我需要一个绝对定位的容器,它只与它的内容一样大(以便尽可能地与容器后面的东西交互),但永远不会超过最大高度(窗口的高度)。
内容有三个子 DIV,前两个是静态高度,如果超出父级的最大高度,则底部会使用滚动条占用剩余空间,内容会隐藏或显示。如果容器具有静态高度,这可以正常工作,但如果容器只有最大高度,则似乎孩子的 calc 不起作用并且内容只是被裁剪。
编辑:需要支持 IE 9+。
小提琴:https://jsfiddle.net/z87cnmr2/1/
#container {
position: absolute;
top: 0;
left: 0;
max-height: 100%;
/* uncomment this static height to see it work */
/* height: 100%; */
width: 100px;
overflow: hidden;
}
#tip {
background: #ff0;
height:20px;
}
#top {
background: #f00;
height:20px;
}
#btm {
background: #0f0;
max-height: calc(100% - 40px);
overflow-y: auto;
}
html, body {
padding: 0;
margin: 0;
height:100%;
width:100%;
}
<div id="container">
<div id="tip">Tips</div>
<div id="top">Tops</div>
<div id="btm">
Btm<br>
Btm<br>
Btm<br>
Btm<br>
Btm<br>
Btm<br>
Btm<br>
Btm<br>
Btm<br>
Btm<br>
Btm<br>
Btm<br>
Btm<br>
Btm<br>
Btm<br>
Btm<br>
Btm<br>
Btm<br>
Btm<br>
Btm<br>
Btm<br>
Btm<br>
Btm<br>
Btm<br>
Btm<br>
Btm<br>
Btm<br>
Btm<br>
Btm<br>
Btm<br>
Btm<br>
Btm<br>
Btm<br>
Btm<br>
Btm<br>
Btm<br>
Btm<br>
Btm<br>
Btm<br>
Btm<br>
Btm<br>
Btm<br>
Btm<br>
Btm<br>
Btm<br>
</div>
</div>
【问题讨论】: