2 回答

TA貢獻(xiàn)1873條經(jīng)驗(yàn) 獲得超9個(gè)贊
skobaljic 的評(píng)論是一種更簡(jiǎn)單的方法。我保留這個(gè)答案,因?yàn)樗匀挥行А?/p>
我假設(shè)你想要這樣的東西:
* {
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>
幾個(gè)問(wèn)題:
您將高度設(shè)置
.app-container
為 100%,但是是什么。你需要設(shè)置一個(gè)參考,所以在body/html上設(shè)置高度是必要的。flex
屬性是簡(jiǎn)寫 - 所以你設(shè)置了 flex Growth (你可能知道),但這就是它將增長(zhǎng)的比率。將 flex-basis 屬性設(shè)置為高度可能是更好的方法。我將高度值更改為
vh
單位以使用視口高度作為參考。設(shè)置
max-height
元素而不是高度,允許它們縮小/增長(zhǎng),但停止在特定的高度值。

TA貢獻(xiàn)1851條經(jīng)驗(yàn) 獲得超3個(gè)贊
如果使用flex,則可以在主容器上使用flex:1;或flex-grow:1來(lái)代替設(shè)置固定,并且僅在可以隱藏的第二個(gè)容器上height設(shè)置height/ 。min-height為了填充窗口,height:100vh 和 body 的邊距重置在這里也很有效。如果涉及border和,還要注意型號(hào),將它們包含在您的尺碼中。paddingbox-sizing
這是一個(gè)帶有復(fù)選框的演示,用于切換第二個(gè)容器的隱藏/顯示,并box-sizing注意padding計(jì)算.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
添加回答
舉報(bào)