我在柔韧性盒中包含的柔韧性盒有问题。 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/

10-12 00:13
查看更多