当前位置: 首页 > 知识库问答 >
问题:

CSS高度问题与flex box内部的flex box

斜光耀
2023-03-14

我有一个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上运行。

共有1个答案

邓欣德
2023-03-14

一般来说,当父级有一个很好定义的高度时,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,它应该做您想要的