Flex-box:3 列高度相同,页面滚动

Flex-box: 3 columns of same height with page scroll

我是 Flexbox 的新手,我正在研究 3 列布局。

这就是我的目标:

这是我的 HTML 代码:

<html>
    <head>
        <title>
            FlexBox
        </title>
        <link rel="stylesheet" href="./styles.css">
    </head>
    <body>
        <div class="container">
            <div class="cols">
                1<br>1<br>1<br>1<br>1<br>1<br>1<br>1<br>1<br>1<br>1<br>
                1<br>1<br>1<br>1<br>1<br>1<br>1<br>1<br>1<br>1<br>1<br>
                1<br>1<br>1<br>1<br>1<br>1<br>1<br>1<br>1<br>1<br>1<br>
                1<br>1<br>1<br>1<br>1<br>1<br>1<br>1<br>1<br>1<br>1<br>
                1<br>1<br>1<br>1<br>1<br>1<br>1<br>1<br>1<br>1<br>1<br>
                1<br>1<br>1<br>1<br>1<br>1<br>1<br>1<br>1<br>1<br>1<br>
            </div>
            <div class="cols">
                text
            </div>
            <div class="cols">
                text
            </div>
        </div>
    </body>
</html>

和CSS:

body, html {
    background-color: seashell;
    margin: 0;
}

.container {
    display: flex;
    justify-content: center;
    height: 100%;
}

.container .cols {
    flex: 1 0 auto;
    background-color: burlywood;
    margin: 10px 10px 0 10px;
    padding: 10px;
}

在这种情况下发生的情况是内容溢出列(达到屏幕高度的 100%):

我尝试解决的问题:

  1. .container中删除height: 100%:当内容高时会导致正确的外观并拉伸列,但如果内容小 - 列将不是100%屏幕高度。所以它对我不起作用。

  2. align-items: flex-start 添加到 .container:所以现在内容会拉伸该列,但是,如果内容很小 none 列的 100% 屏幕高度。

我该如何解决?

PS:奇怪的是,当我尝试 this example in jsfiddle 它按预期工作但是当我 运行 它在我的浏览器中时 - 我得到了上面描述的内容。

谢谢!

height:100%更改为.containermin-height:100%,同时将height:100%添加到body, html

.container {
    display: flex;
    justify-content: center;
    min-height: 100%;
}

body, html {
    background-color: seashell;
    margin: 0;
    height: 100%
}

在容器上添加最大高度。并在列

上滚动滚动

body, html {
    background-color: seashell;
    margin: 0;
}

.container {
    display: flex;
    justify-content: center;
    height: 100%;
    max-height: 100vh;
}

.container .cols {
    flex: 1 0 auto;
    background-color: burlywood;
    margin: 10px 10px 0 10px;
    padding: 10px;
    
    overflow: scroll;
}
<div class="container">
  <div class="cols">
    1<br>1<br>1<br>1<br>1<br>1<br>1<br>1<br>1<br>1<br>1<br>
    1<br>1<br>1<br>1<br>1<br>1<br>1<br>1<br>1<br>1<br>1<br>
    1<br>1<br>1<br>1<br>1<br>1<br>1<br>1<br>1<br>1<br>1<br>
    1<br>1<br>1<br>1<br>1<br>1<br>1<br>1<br>1<br>1<br>1<br>
    1<br>1<br>1<br>1<br>1<br>1<br>1<br>1<br>1<br>1<br>1<br>
    1<br>1<br>1<br>1<br>1<br>1<br>1<br>1<br>1<br>1<br>1<br>
  </div>
  <div class="cols">
    text
  </div>
  <div class="cols">
    text
  </div>
</div>