使flex子元素占用父Flex {100}的高度

时间:2015-08-08 19:54:14

标签: css css3 flexbox

我有一个内容弯曲的容器flex。如何使内容flex占据容器弯曲的整个宽度和高度。

<div id="main">
<div id="main-nav">
</div>
<div class="container">
    <div class="content"></div>
    <div class="content"></div>
</div>
</div>

#main{
   display: flex;
   flex-direction: column;
   height: 100vh;
   width: 100vw;
}
#main-nav{
    width: 100%
    height: 50px; 
}
.container{
display: flex;
flex-direction: row;
flex-wrap: wrap;
flex: 1;
}
.content{
display: flex;
width: 100%;
height: 100%;
}

上述代码使内容占据容器的100%宽度,但高度取决于内容中的文本。我尝试了类似问题中提到的解决方案,但没有运气,但仍然是相同的。

基本上,我希望每个内容占据视口高度中容器占用的相同高度。我也试过jQuery,

var rht = $("#container").height();
$(".content").height(rht);

它会正确地改变高度,但会增加一个水平滚动条,宽度会增加。

2 个答案:

答案 0 :(得分:2)

对原始问题进行了几次更新后:

* {
  box-sizing: borderbox;
  margin: 0;
  padding: 0;
}
#main {
  display: flex;
  flex-direction: column;
  border: 1px solid red;
  min-height: 100vh;
}
#main-nav {
  flex: 0 0 50px;
}
.container {
  display: flex;
  flex-direction: column;
  flex: 1;
  border: 1px solid green;
}
.content {
  flex: 1;
  border: 1px solid orange;
}
<div id="main">
  <div id="main-nav"></div>
  <div class="container">
    <div class="content"></div>
    <div class="content"></div>
  </div>
</div>

JSfiddle Demo

答案 1 :(得分:0)

你不能设置flex的宽度或高度的孩子更大(flex的大小)/(flex的孩子的数量),但是你可以将position: absolute添加到.contentposition: relative进入.container,然后为width设置height.content。第一个.content位于第二个.content之下,您可以使用propety z-indexdisplay: none来控制。

&#13;
&#13;
* {
  box-sizing: borderbox;
  margin: 0;
  padding: 0;
}
#main {
  display: flex;
  flex-direction: column;
  background: red;
  min-height: 100vh;
}
#main-nav {
  flex: 0 0 50px;
}
.container {
  position: relative;
  display: flex;
  flex: 1;
  background: green;
}
.content {
  position: absolute;
  left: 0px;
  top: 0px;
  height: 100%;
  width: 100%;
  flex: 1;
  background: orange;
}
&#13;
<div id="main">
  <div id="main-nav"></div>
  <div class="container">
    <div class="content">left</div>
    <div class="content">right</div>
  </div>
</div>
&#13;
&#13;
&#13;