我有一个容器,它的大小是灵活增长的,以填补一个固定大小容器中的剩余空间。
在flex-grow容器中,我有另一个div,它比flex大小的容器大得多。如何使content-wrapper
元素可滚动,而不是子元素溢出?
谢谢大家!
.main-content-container {
padding: 0 20px;
display: flex;
flex-flow: column nowrap;
grid-gap: 10px;
height: 550px;
background: green;
}
.sub-content-container {
width: 300px;
background: grey;
flex-grow: 1;
display: flex;
flex-flow: column nowrap;
}
.content-wrapper {
flex-grow: 1;
display: flex;
flex-flow: column nowrap;
overflow: auto;
}
.content-container {
height: 10000px;
background: #555;
}
body {
background: black;
color: white;
padding-bottom: 30px;
}
<div class='main-content-container'>
<p>stuff</p>
<div class='sub-content-container'>
<p>header</p>
<div class='content-wrapper'>
<div class="content-container">I WANT THIS TO STAY WITHIN THE CONTENT-WRAPPER</div>
</div>
</div>
</div>
1条答案
按热度按时间q3qa4bjr1#
一般来说,要使
overflow
属性起作用,容器需要溢出。这要求容器具有固定的长度。没有固定的长度(高度或宽度),就不会触发溢出。flex-grow
属性没有建立固定的长度,因此它不起作用。当然,如果您想要动态布局,则不能在容器上设置固定高度。
因此,要解决这两个问题,请将容器设置为
height: 1px
。flex-grow
属性将容器扩展到全高但是还有一个问题。列方向嵌套的flex容器似乎忽略了
overflow
属性。这可能是因为嵌套在flex上下文中。因此,如果可能,将该容器切换回块格式上下文中。对代码进行以下调整:
x一个一个一个一个x一个一个二个x
jsFiddle demo