在3行布局中:
- 第一行应根据其内容调整大小
- 最下面一行的像素高度应固定
- 中间行应扩大以填充容器
问题在于,随着主要内容的扩展,它压缩了页眉和页脚行:
HTML:
<section>
<header>
header: sized to content
<br>(but is it really?)
</header>
<div>
main content: fills remaining space<br>
x<br>x<br>x<br>x<br>x<br>x<br>x<br>x<br>x<br>x<br>
<!-- uncomment to see it break - ->
x<br>x<br>x<br>x<br>x<br>x<br>x<br>x<br>x<br>
x<br>x<br>x<br>x<br>x<br>x<br>x<br>x<br>x<br>
x<br>x<br>x<br>x<br>x<br>x<br>x<br>x<br>x<br>
x<br>x<br>x<br>x<br>x<br>x<br>x<br>x<br>x<br>
<!-- -->
</div>
<footer>
footer: fixed height in px
</footer>
</section>
CSS:
section {
display: flex;
flex-flow: column;
align-items: stretch;
height: 300px;
}
header {
flex: 0 1 auto;
background: tomato;
}
div {
flex: 1 1 auto;
background: gold;
overflow: auto;
}
footer {
flex: 0 1 60px;
background: lightgreen;
/* fixes the footer: min-height: 60px; */
}
小提琴:
- http://jsfiddle.net/7yLFL/1/ (有效,内容较少)
- http://jsfiddle.net/7yLFL/ (已损坏,内容较大)
我很幸运,我可以使用最新的CSS,而无需考虑旧版浏览器。我以为我可以使用flex布局来最终摆脱旧的基于表的布局。由于某种原因,它没有满足我的要求...
记录下来,SO上有许多与“填充剩余高度”有关的问题,但是没有什么可以解决我在flex中遇到的问题。参考:
似乎在提琴琴上按预期工作。
—
2014年
是的,您需要取消注释<div>其余内容以查看其中断方式。也许我应该链接损坏的版本。抱歉。
—
Zilk
我已经将两个版本都添加到了问题中。
—
Zilk
我明白你的意思了。
—
2014年