我有一个flex盒子里面的flex盒子的问题。http://jsfidle.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上运行。
一般来说,当父级有一个很好定义的高度时,100%的高度起作用。在您的示例中,最外面的app-content没有显式的高度,这就是为什么其子级的100%高度不起作用的原因。
一个简单的解决方法是使用相对-绝对定位来调整子级的大小:
css lang-css prettyprint-override">#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>
我遇到的问题是,当我在Flexbox中输入内容时,它的高度会增加。我不是100%确定为什么会发生这种情况,但我相信这与它没有处于绝对位置,从而保持其高度属性有关。 包括代码笔,我在这里为我正在制作的Flexbox风格的站点设置了HTML和CSS(也包括下面的代码片段),这里有一些关于它的信息 1-我有一个围绕网站内容的包装div,这样我可以控制背面的流程和背景 2-我为Flexbox的每一“行”设
问题内容: 我正在尝试编写一个分为三部分的搜索菜单。如果没有足够的垂直空间显示结果,则每个部分都会有一个滚动条。 在Chrome和Firefox中,每个菜单都显示其滚动条,但是在IE11上,菜单与包装器重叠。 我已经编写了一个可在Chrome和Firefox上运行的示例(Firefox很棘手,我需要添加多个菜单级别)。 我在IE 11上缺少什么吗? 问题答案: 要在Chrome,Safari,Fi
我试图使用CSS Flexbox(display:flex)占据窗口的剩余高度。我还想滚动可用。。。也许我在这件事上做得不对,但我已经找了这么久,以至于我找不到其他的选择。 这个想法是有一个固定的容器。在那个固定的容器内是一个柔性盒子,占据了100%的高度。我将项目添加到堆叠在列中的灵活框中。我添加的最后一个项目(容器包装器)里面有动态内容,它将通过AJAX调用替换超文本标记语言(否则我只会将操作
我有一个问题,我假设将是一个相对简单的CSS布局。 我想要。。。 底部的页脚(固定高度) 左侧的导航条(固定宽度) 右侧的外部内容窗格(动态大小) 在内容窗格中。。。 顶部的缎带(固定高度) 内部内容div(动态大小) 我正在尝试使用flexbox来实现这一点,因为它似乎是目前最好的选择(网格太不稳定,并且没有得到很好的支持)。 问题是,我的内部内容div(实际上)在外部内容div中有好几层。这意
假设我们有一个垂直的(即flex-direction:column)flexbox容器,具有给定的宽度和高度。flexbox包含div,每个div包含一个图像。 所有DIV和图像都应该以相同的百分比收缩/增长,以填充flexbox的高度,这是通过使用flex-shrink和/或Flex-Grow实现的。 所有图像都应该保持其纵横比(即不拉伸),这是通过不设置其css“width”属性来实现的。 每
问题内容: 在下面的代码中,我希望带有“ y”的div将div的高度与3个“ x”相匹配。 需要注意的是内部div是浮动的。 问题答案: 如果您不反对使用jQuery,可以使用EqualHeight,它应该做您想要的