我在柔韧性盒中包含的柔韧性盒有问题。 http://jsfiddle.net/fr077nn2/上的JS小提琴包含以下代码:
#container{
position: absolute;
height: 100%;
width: 100%;
border: 3px solid yellow;
}
.app {
display: flex;
flex-direction: column;
height: 100%;
border: 3px solid black;
}
.app-header {
border: 3px solid red;
}
.app-content {
border: 3px solid green;
flex: 1;
overflow: hidden;
}
.app-footer {
border: 3px solid blue;
}
<div id="container">
<div class="app">
<div class="app-header">HEADER1</div>
<div class="app-content">
<div class="app">
<div class="app-header">HEADER2</div>
<div class="app-content">CONTENT2</div>
<div class="app-footer">FOOTER2</div>
</div>
</div>
<div class="app-footer">FOOTER1</div>
</div>
</div>
我试图让.app-content DIV填充父.app DIV的剩余空间。如小提琴所示,它适用于外箱。但是,对于内部盒子,CONTENT2没有填充剩余空间。我怀疑height:100%在这种情况下不起作用,因为未正确知道父DIV的高度...任何建议如何正确实现上述目标?
编辑:在Firefox上工作正常,与预期的在Chrome上不同。
最佳答案
一般而言,当 parent 具有明确定义的高度时,高度为100%即可。在您的示例中,最外面的应用程序内容没有明确的高度,这就是为什么其子级上的100%高度不起作用的原因。
一个简单的解决方法是使用相对绝对定位来确定子对象的大小:
#container {
position: absolute;
height: 100%;
width: 100%;
border: 3px solid yellow;
}
.app {
display: flex;
flex-direction: column;
height: 100%;
border: 3px solid black;
}
.app-header {
border: 3px solid red;
}
.app-content {
border: 3px solid green;
flex: 1;
/* added property */
position: relative;
}
.app-footer {
border: 3px solid blue;
}
/* added rule */
.app-content > .app {
height: auto;
position: absolute;
left: 0;
right: 0;
top: 0;
bottom: 0;
}
/* scrollbar and border correction */
body {
margin: 0;
padding: 0;
}
div {
box-sizing: border-box;
}
<div id="container">
<div class="app">
<div class="app-header">HEADER1</div>
<div class="app-content">
<div class="app">
<div class="app-header">HEADER2</div>
<div class="app-content">CONTENT2</div>
<div class="app-footer">FOOTER2</div>
</div>
</div>
<div class="app-footer">FOOTER1</div>
</div>
</div>
关于html - Flex框内的Flex框的CSS高度问题,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/27493509/