2 回答
TA贡献1873条经验 获得超9个赞
skobaljic 的评论是一种更简单的方法。我保留这个答案,因为它仍然有效。
我假设你想要这样的东西:
* {
box-sizing: border-box;
}
.b {
height: 100vh;
margin: 0;
padding: 0;
}
.app-container {
height: 100vh;
padding: 10px;
background-color: blue;
overflow: hidden;
display: flex;
flex-direction: column;
}
.contentpanel {
max-height: 75vh;
background-color: green;
padding: 10px;
flex: 0 1 75vh;
overflow-y: scroll;
}
.lowerpanel {
max-height: 25vh;
background-color: red;
padding: 10px;
flex: 0 1 25vh;
overflow-y: scroll;
}
<body class="b">
<div class="app-container">
<div class="contentpanel">
App tiles<br /><br /> App tiles<br /><br /> App tiles<br /><br /> App tiles<br /><br /> App tiles<br /><br /> App tiles<br /><br /> App tiles<br /><br /> App tiles<br /><br /> App tiles<br /><br /> App tiles<br /><br /> App tiles<br /><br /> App
tiles<br /><br /> App tiles<br /><br /> App tiles<br /><br /> App tiles<br /><br />
</div>
<div class="lowerpanel">
Logtail stuff<br /><br /> Logtail stuff<br /><br /> Logtail stuff<br /><br /> Logtail stuff<br /><br /> Logtail stuff<br /><br /> Logtail stuff<br /><br /> Logtail stuff<br /><br /> Logtail stuff<br /><br /> Logtail stuff<br /><br /> Logtail stuff<br
/><br /> Logtail stuff<br /><br /> Logtail stuff<br /><br /> Logtail stuff<br /><br /> Logtail stuff<br /><br />
</div>
</div>
</body>
几个问题:
您将高度设置
.app-container
为 100%,但是是什么。你需要设置一个参考,所以在body/html上设置高度是必要的。flex
属性是简写 - 所以你设置了 flex Growth (你可能知道),但这就是它将增长的比率。将 flex-basis 属性设置为高度可能是更好的方法。我将高度值更改为
vh
单位以使用视口高度作为参考。设置
max-height
元素而不是高度,允许它们缩小/增长,但停止在特定的高度值。
TA贡献1851条经验 获得超3个赞
如果使用flex,则可以在主容器上使用flex:1;或flex-grow:1来代替设置固定,并且仅在可以隐藏的第二个容器上height设置height/ 。min-height为了填充窗口,height:100vh 和 body 的边距重置在这里也很有效。如果涉及border和,还要注意型号,将它们包含在您的尺码中。paddingbox-sizing
这是一个带有复选框的演示,用于切换第二个容器的隐藏/显示,并box-sizing注意padding计算.app-container100vh 高度。
body {
margin: 0;
}
.app-container {
height: 100vh;
padding: 10px;
background-color: blue;
overflow: hidden;
display: flex;
flex-direction: column;
box-sizing: border-box;
}
.contentpanel {
background-color: green;
padding: 10px;
flex: 1;
overflow-y: scroll;
}
.lowerpanel {
height: 20%;
background-color: red;
padding: 10px;
min-height: 4em;
overflow-y: scroll;
}
/* demo purpose CSS to use input/label to toggle display of lowerpanel */
#hide {
position: absolute;
right: 100vw;
}
[for="hide"] {
cursor: pointer;
background: #bee;
border: 1px solid;
border-radius: 5px;
padding: 0.25em;
display: block;
width: max-content;
margin: auto;
}
#hide:checked~.lowerpanel {
display: none;
}
<div class="app-container">
<input type="checkbox" id="hide"><!-- input for demo purpose -->
<div class="contentpanel">
<label for="hide">toggle red container</label><!-- label for demo purpose -->
App tiles<br /><br /> App tiles<br /><br /> App tiles<br /><br /> App tiles<br /><br /> App tiles<br /><br /> App tiles<br /><br /> App tiles<br /><br /> App tiles<br /><br /> App tiles<br /><br /> App tiles<br /><br /> App tiles<br /><br /> App tiles
<br /><br /> App tiles<br /><br /> App tiles<br /><br /> App tiles<br /><br />
</div>
<div class="lowerpanel">
Logtail stuff<br /><br /> Logtail stuff<br /><br /> Logtail stuff<br /><br /> Logtail stuff<br /><br /> Logtail stuff<br /><br /> Logtail stuff<br /><br /> Logtail stuff<br /><br /> Logtail stuff<br /><br /> Logtail stuff<br /><br /> Logtail stuff<br
/><br /> Logtail stuff<br /><br /> Logtail stuff<br /><br /> Logtail stuff<br /><br /> Logtail stuff<br /><br />
</div>
</div
添加回答
举报