首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使Flexbox容器占据父容器的全部高度并可滚动?

如何使Flexbox容器占据父容器的全部高度并可滚动?
EN

Stack Overflow用户
提问于 2022-01-04 12:24:29
回答 1查看 558关注 0票数 0

body标记被设置为溢出:隐藏,这使得页面不可滚动。我有几个嵌套容器,它们占用了所有可用的空间。

HTML:

代码语言:javascript
复制
<div class="app">
  <div class="container-1">
    <div class="container-2">
      <div class="container-3">
        <div class="container-4">
          <div class="container-5">
            <p>Test</p>
            <p>Test</p>
            <p>Test</p>
            <p>Test</p>
            <p>Test</p>
            <p>Test</p>
            <p>Test</p>
            <p>Test</p>
            <p>Test</p>
            <p>Test</p>
            <p>Test</p>
          </div>
        </div>
      </div>
    </div>
  </div>
</div>

CSS:

代码语言:javascript
复制
body {
  overflow: hidden;
}

p {
  padding: 30px 0;
  background: lightGray;
}

.app {
  display: flex;
  height: 100%;
}

.container-1 {
  position: relative;
  height: 100%;
  width: 100%;
}

.container-2 {
  display: flex;
  flex: 1 1 auto;
}

.container-3 {
  display: flex;
  flex: 1 1 auto;
}

.container-4 {
  display: flex;
  flex: 1 1 auto;
}

.container-5 {
  display: flex;
  flex: 1 1 auto;
  flex-direction: column;
  overflow: auto;
}

科德芬

现在我要容器-5是可滚动的。但是,只有当我为容器-5指定一个高度,比如高度:100 if时,它才能工作。相反,我希望容器-5占用父服务器中所有可用的空间,并且可以滚动。有什么办法可以做到吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-01-04 12:30:17

我将简化您的代码,并使用CSS网格而不是柔性盒。

代码语言:javascript
复制
body {
  overflow: hidden;
  margin:0;
}

p {
  padding: 30px 0;
  background: lightGray;
}

.app {
  display: grid;  /* grid container */
  height: 100vh; /* height on the upper container */
}

.app * {
  display: inherit; /* cascading grid */
  min-height: 0; /* related question : https://stackoverflow.com/a/43312314/8620333 */
}

.container-5 {
  overflow: auto; /* scroll here */
}
代码语言:javascript
复制
<div class="app">
  <div class="container-1">
    <div class="container-2">
      <div class="container-3">
        <div class="container-4">
          <div class="container-5">
            <p>Test</p>
            <p>Test</p>
            <p>Test</p>
            <p>Test</p>
            <p>Test</p>
            <p>Test</p>
            <p>Test</p>
            <p>Test</p>
            <p>Test</p>
            <p>Test</p>
            <p>Test</p>
          </div>
        </div>
      </div>
    </div>
  </div>
</div>

对于柔性箱,它将如下所示:

代码语言:javascript
复制
body {
  overflow: hidden;
  margin:0;
}

p {
  padding: 30px 0;
  background: lightGray;
}

.app {
  display: flex;  /* flex container */
  height: 100vh; /* height on the upper container */
}

.app * {
  display: inherit; /* cascading flex */
  flex-direction: column;
  flex: 1;
  min-height: 0; /* related question : https://stackoverflow.com/q/36247140/8620333 */
}

.container-5 {
  overflow: auto; /* scroll here */
}
代码语言:javascript
复制
<div class="app">
  <div class="container-1">
    <div class="container-2">
      <div class="container-3">
        <div class="container-4">
          <div class="container-5">
            <p>Test</p>
            <p>Test</p>
            <p>Test</p>
            <p>Test</p>
            <p>Test</p>
            <p>Test</p>
            <p>Test</p>
            <p>Test</p>
            <p>Test</p>
            <p>Test</p>
            <p>Test</p>
          </div>
        </div>
      </div>
    </div>
  </div>
</div>

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/70578759

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档