在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年