我正在嘗試實現可以伸展以填充屏幕的佈局,但是當內容大於可用窗格時會滾動。帶有可滾動面板的Flexbox
我有一個基於this answer的基本flexbox
方法,它填補了屏幕很好的工作,但溢出的內容導致整個屏幕滾動,而不僅僅是自己的容器。
如果我將.outer
高度更改爲像200px
這樣的文字值,那麼我會得到我想要的滾動行爲,但底部內容窗格不再填滿屏幕。
我已經嘗試過使用display: table
和相關的CSS而不是flexbox,但最終獲得了相同的結果。
我也對內容窗格的高度使用calc
認爲 - 像
height: calc(100% - 60px);
,但我想報頭能夠與它的含量增加,所以我沒有硬值因爲它的高度來計算。
我在這裏尋找一個純粹的CSS解決方案,而不是用一些味道的Javascript來調整窗口大小。
html,
body {
height: 100%;
margin: 0
}
.box {
display: flex;
flex-flow: column;
height: 100%;
}
.box .row {
border: 1px dotted grey;
flex: 1 1 auto;
}
.box .row.header {
background: aliceblue;
}
.box .row.content {
background: pink;
}
.box .row.content .title {
height: 40px;
background: yellow;
}
.outer {
height: -webkit-calc(100% - 40px);
height: -moz-calc(100% - 40px);
height: -o-calc(100% - 40px);
height: calc(100% - 40px);
overflow-y: auto;
}
.inner {
height: 100%;
}
.text {
height: 100px;
margin-top: 10px;
border: 1px solid gold;
}
<div class="box">
<div class="row header">
<p><b>header</b>
<br />
<br />(sized to content)</p>
</div>
<div class="row content">
<div class="title">
<b>content</b>
(fills remaining space)
</div>
<div class="outer">
<div class="inner">
<div class="text">Bacon ipsum dolor amet tongue corned beef landjaeger sausage beef meatball, kielbasa pastrami turkey boudin hamburger ham hock chuck tail pork. Shankle tail cupim ribeye.</div>
<div class="text">Bacon ipsum dolor amet tongue corned beef landjaeger sausage beef meatball, kielbasa pastrami turkey boudin hamburger ham hock chuck tail pork. Shankle tail cupim ribeye.</div>
<div class="text">Bacon ipsum dolor amet tongue corned beef landjaeger sausage beef meatball, kielbasa pastrami turkey boudin hamburger ham hock chuck tail pork. Shankle tail cupim ribeye.</div>
<div class="text">Bacon ipsum dolor amet tongue corned beef landjaeger sausage beef meatball, kielbasa pastrami turkey boudin hamburger ham hock chuck tail pork. Shankle tail cupim ribeye.</div>
<div class="text">Bacon ipsum dolor amet tongue corned beef landjaeger sausage beef meatball, kielbasa pastrami turkey boudin hamburger ham hock chuck tail pork. Shankle tail cupim ribeye.</div>
<div class="text">Bacon ipsum dolor amet tongue corned beef landjaeger sausage beef meatball, kielbasa pastrami turkey boudin hamburger ham hock chuck tail pork. Shankle tail cupim ribeye.</div>
<div class="text">Bacon ipsum dolor amet tongue corned beef landjaeger sausage beef meatball, kielbasa pastrami turkey boudin hamburger ham hock chuck tail pork. Shankle tail cupim ribeye.</div>
</div><!-- inner -->
</div><!-- outer -->
</div>
</div>
嗯......近了,但我期待的只是粉紅色部分是滾動的。另外,你能特別指出你做了什麼改變嗎? – Danny
確定更新了我的答案片段。請測試它。 –
看起來新版本的伎倆。簡而言之,它看起來像一個flex內的flex? – Danny