【问题标题】:Flexbox layout overflowing window [duplicate]Flexbox布局溢出窗口[重复]
【发布时间】:2020-09-09 07:13:11
【问题描述】:

创建了一个简单的 flexbox 布局,其中包含 2 行、1 个标题行、1 个主要内容,第二行包含 2 个列,其中 1 个我想 100% 拉伸到窗口的高度(因此它可以有可滚动的项目)和第二列位于内容的右侧(再次可滚动)。我已将html, body 设置为:

height: 100%; margin: 0; overflow: hidden;

帮助实现布局。

除了布局将窗口底部推到标题高度之外,一切似乎都很好。如果我删除标题,则不会将任何内容推到视野之外。

是否可以保留标题行并使第二行留在窗口内?

jsFiddle to try and illustrate the issue.

【问题讨论】:

    标签: html css flexbox height overflow


    【解决方案1】:

    默认情况下,弹性项目的最小高度/宽度等于内容,换句话说,弹性项目不能小于它的内容。

    要覆盖该行为,请使用 min-height:0;.sectionRow2

    html,
    body {
      height: 100%;
      margin: 0;
      overflow: hidden;
    }
    
    .page {
      display: flex;
      flex-direction: column;
      flex-grow: 1;
      height: 100%;
    }
    
    .sectionRow1 {
      display: flex;
      flex-direction: row;
      flex-grow: 0;
      background-color: yellow;
      border-bottom: 1px solid silver;
    }
    
    .sectionRow2 {
      min-height: 0;
      /* New */
      display: flex;
      flex-direction: row;
      flex-grow: 1;
      background-color: blue;
      height: 100%;
    }
    
    .sectionRow2Col1 {
      display: flex;
      flex-direction: column;
      background-color: silver;
      border-right: 1px solid silver;
      width: 250px;
      height: 100%;
    }
    
    .sectionRow2Col2 {
      display: flex;
      flex-direction: column;
      flex-grow: 1;
      height: 100%;
      background-color: lightgrey;
    }
    
    .menuitems {
      flex: 1 1 auto;
      overflow-y: auto;
      height: 100%;
    }
    
    .menufoot {
      display: flex;
      background-color: lavender;
      height: 40px;
    }
    
    .link {
      display: flex;
      flex-direction: row;
      align-items: center;
      padding: 4px 4px 4px 4px;
      font-size: .9rem;
      background-color: white;
      border-bottom: 1px solid silver;
    }
    
    .content {
      display: flex;
      flex-grow: 1;
      align-items: stretch;
      overflow-y: auto;
    }
    
    .headerlogo {
      display: flex;
      flex-direction: row;
      align-items: center;
      height: 48px;
      width: 250px;
    }
    <div class="page">
    
      <header class="sectionRow1">
        <div class="headerlogo">
          <a href="#">Header</a>
        </div>
      </header>
    
      <section class="sectionRow2">
        <nav class="sectionRow2Col1">
          <div class="menuitems">
            <a href="#" class="link">Link</a>
            <a href="#" class="link">Link</a>
            <a href="#" class="link">Link</a>
            <a href="#" class="link">Link</a>
            <a href="#" class="link">Link</a>
            <a href="#" class="link">Link</a>
            <a href="#" class="link">Link</a>
            <a href="#" class="link">Link</a>
            <a href="#" class="link">Link</a>
            <a href="#" class="link">Link</a>
            <a href="#" class="link">Link</a>
            <a href="#" class="link">Link</a>
            <a href="#" class="link">Link</a>
            <a href="#" class="link">Link</a>
            <a href="#" class="link">Link</a>
            <a href="#" class="link">Link</a>
            <a href="#" class="link">Link</a>
            <a href="#" class="link">Link</a>
            <a href="#" class="link">Link</a>
            <a href="#" class="link">Link</a>
            <a href="#" class="link">Link</a>
            <a href="#" class="link">Link</a>
            <a href="#" class="link">Link</a>
            <a href="#" class="link">Link</a>
            <a href="#" class="link">Link</a>
            <a href="#" class="link">Link</a>
            <a href="#" class="link">Link</a>
            <a href="#" class="link">Link</a>
            <a href="#" class="link">Link</a>
            <a href="#" class="link">Link</a>
            <a href="#" class="link">Link</a>
            <a href="#" class="link">Link</a>
            <a href="#" class="link">Link</a>
            <a href="#" class="link">Link</a>
            <a href="#" class="link">Link</a>
          </div>
          <div class="menufoot">Footer</div>
        </nav>
    
        <section class="sectionRow2Col2">
          <div class="content">
            Content..
            <br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br />
            <br /><br /><br /><br /><br /><br />
            <br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br />
            <br /><br /><br /><br /><br /><br />
            <br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br />
            <br /><br /><br /><br /><br /><br /> Content..
          </div>
        </section>
    
      </section>
    
    </div>

    【讨论】:

      猜你喜欢
      • 2018-12-09
      • 1970-01-01
      • 2016-06-03
      • 2016-02-24
      • 2020-03-15
      • 2018-08-11
      • 2017-12-10
      • 2017-08-25
      • 2016-11-08
      相关资源
      最近更新 更多