溢出滚动-y不适用于flexbox

问题描述 投票:1回答:2

我正在尝试将div叠加在彼此之上,因为新的div框(.dialog-box)被添加到父容器(.dialog-container)。

要堆叠元素,我在父级上使用以下内容:

display: flex;
flex-direction: column;
justify-content: flex-end;

我想滚动容器为.dialog-boxs溢出,但使用flex-box overflow-y: scroll;不滚动。

两个盒子:(按预期从底部到顶部填充容器):

enter image description here

六个盒子(扩展到容器的高度之外并且应该滚动):

enter image description here

SCSS:

.dialog-container {
    border: 4px solid rgba(255, 255, 255, .4);
    border-radius: 5px;
    width: 300px;
    height: 340px;
    position: relative;
    top: -50px;
    margin: 0 auto;
    overflow-y: scroll;
    z-index: 5;
    display: flex;
    flex-direction: column;
    justify-content: flex-end;

    .dialog-box {
        width: 90%;
        background: $dialogBoxWhite;
        margin-bottom: 20px;
        border-radius: 8px;
        border: 5px solid $dialogBoxGreenBorder;
        color: $dialogBoxGreenFont;
        text-align: center;
        margin-left: 5px;
        padding: 5px;
        display: inline-block;
        p {}
    }
}

HTML:

<div class="dialog-container">
   <div class="dialog-box"></div>
   <div class="dialog-box"></div>
   <div class="dialog-box"></div>
   <div class="dialog-box"></div>
   <div class="dialog-box"></div>
   <div class="dialog-box"></div>
</div>
html css css3 flexbox
2个回答
-2
投票

更新答案,我混淆了flex-direction的值。

'row'右边不是'column'

在.dialog-container中添加css

flex-direction: row;

flex-wrap : wrap;

要么

flex-flow: row wrap

-3
投票

尝试将display: flex;更改为display: flex-box;

这将为您提供实际滚动的滚动条。此外,您的示例div都缺少结束标记。

https://jsfiddle.net/Lpw0726j/23/

<div class="dialog-container">
   <div class="dialog-box">9</div>
   <div class="dialog-box">8</div>
   <div class="dialog-box">7</div>
   <div class="dialog-box">6</div>
   <div class="dialog-box">5</div>
   <div class="dialog-box">4</div>
   <div class="dialog-box">3</div>
   <div class="dialog-box">2</div>
   <div class="dialog-box">1</div>
</div>


.dialog-container {
    border: 4px solid rgba(255, 255, 255, .4);
    border-radius: 5px;
    width: 300px;
    height: 340px;
    position: relative;
    top: 50px;
    margin: 0 auto;
    z-index: 5;
    display: flex-box;
    flex-direction: column;
    justify-content: flex-end;
    overflow-y: auto;
    background-color: teal;


    .dialog-box {
        width: 90%;
        background: black;
        margin-bottom: 20px;
        border-radius: 8px;
        border: 5px solid red;
        color: green;
        text-align: center;
        margin-left: 5px;
        padding: 5px;
        display: inline-block;
        p {}
    }
}
© www.soinside.com 2019 - 2024. All rights reserved.