Flexbox - 儿童扩展到填充高度

时间:2016-07-10 18:30:43

标签: html css css3 flexbox

我的页面上有一个动态页脚,我希望它上面的内容可以扩展到页脚的顶部,这很好,但是我遇到了问题:

#snippet-container {
  height: 300px;
  width: 200px;
}

#page {
  display: flex;
  flex-flow: column;
  height: 100%;
}

#content {
  flex: 1 1 auto;
  background: blue;
}

#content .test {
  width: 100%;
  height: 100%;
  background: yellow;
  border: 2px solid red;
}

#footer {
  flex: 0 1 10vh;
  background: black;
}
<div id="snippet-container">
  <div id="page">
    <div id="content">
      <div class="test"></div>
    </div>
    <div id="footer"></div>
  </div>
</div>

我希望.test元素填充#content元素,因此100%/100% width/height但不会填充.test

您可以看到这反映为我在代码段中为Dim MissDataCode As Object = Nothing If objx(i, j) = MissDataCode And MissDataCode IsNot Nothing Then x(i, j) = Nothing If objx(i, j) Is MissDataCode And MissDataCode Is Nothing Then x(i, j) = Nothing 元素添加了红色边框。

2 个答案:

答案 0 :(得分:20)

<强>问题:

问题是你的#page弹性容器不是到达 .test元素,因为.test不是孩子,它是flex的后代项目

  

Flex容器的内容由零个或多个弹性项组成:   Flex容器的每个子节点都变为弹性项目。

每个弹性项目都受弹性容器的影响,但弹性项目的后代不受此影响。

<强> SOLUTION:

您还需要将display: flex添加到#content

<强> JSFiddle

CODE SNIPPET

#snippet-container {
  height: 300px;
  width: 200px;
}
#page {
  display: flex;
  flex-flow: column;
  height: 100%;
}
#content {
  display: flex;
  height: 100%;
  background: blue;
}
#content .test {
  width: 100%;
  background: yellow;
  border: 2px solid red;
}
#footer {
  flex: 0 1 10vh;
  background: black;
}
<div id="snippet-container">
  <div id="page">
    <div id="content">
      <div class="test"></div>
    </div>
    <div id="footer"></div>
  </div>
</div>

答案 1 :(得分:6)

这适合你:

https://jsfiddle.net/wjr0wwht/2/

为了让'test'db增长到全高,你需要将内容设为display: flex,如下所示:

#content {
  flex: 1 1 auto;
  background: blue;
  display: flex;
  flex-direction: column; 

}

然后让测试本身成长:

#content .test {
  background: yellow;
  border: 2px solid red;
  flex-grow: 1;
}