【发布时间】:2019-04-18 19:26:40
【问题描述】:
我遇到了,我认为是 flex 的一个小问题。我正在尝试获得一个简单的布局(如链接的 jsfiddle 所示)。但是,当右侧的 div(红色)在其高度溢出时,该元素会在视口中溢出,并且只有在它溢出视口的高度时才能滚动。
我很确定这是因为我在很多元素中使用了height: 100%;,但我需要它们尽可能大(以完全填充视口高度)。
我想要的是由这三个部分完全填充的视口:导航、左侧栏和右侧内容(见下图)。当右内容部分溢出视口时应该可以滚动的位置。
所以,得出一个结论。这里的问题是可滚动内容首先溢出视口,当 div (看起来)与视口相同高度时,它开始可滚动。我显然希望 div 在溢出视口时可以滚动。
我将如何实现这一目标?感谢您的宝贵时间。
代码(JSFiddle 中也有)
HTML
<div id="content-container">
<div id="content">
<div id="left">
IM LEFT
</div>
<div id="right">
<div id="inner">
IM RIGHT
</div>
IM RIGHT
</div>
</div>
</div>
</div>
CSS
html, body {
height: 100%;
width: 100%;
margin: 0;
padding: 0;
overflow: hidden;
}
#main {
height: 100%;
background: black;
display: flex;
flex-direction: column;
justify-content: flex-start;
align-items: flex-start;
width: 100vw;
height: 100vh;
}
#main nav {
background: orange;
width: 100%;
height: 96px;
}
#main #content-container {
background: darkgreen;
color: white;
width: 100%;
flex-grow: 1;
max-height: 100%;
}
#main #content-container #content {
display: flex;
flex-direction: row;
justify-content: flex-start;
align-items: flex-start;
height: 100%;
max-height: 100%;
}
#main #content-container #content #left {
background: darkblue;
width: 30%;
height: 100%;
}
#main #content-container #content #right {
background: darkred;
height: 100%;
flex-grow: 1;
overflow-y: scroll;
}
#main #content-container #content #right #inner {
font-size: 25rem;
}
【问题讨论】: