我有一个在 CSS 中工作的布局,但我不明白它为什么工作。CSS专家,请阐明这里发生了什么。
我的目标是有这样的布局:
显着特点是:
- 固定窗口顶部和底部的高度页眉和页脚
- 占据页眉和页脚之间全部空间的内容区域
- 内容区域有自己的滚动条(即它不会将页脚向下推到屏幕底部之外)。
我使用 css flex box 和 0% 高度的内容 div 内的 div 组合实现了它。出乎我的意料,0% 的高度 div 延伸到了完整的可用高度。
这是一个 JSFiddle: http: //jsfiddle.net/2wunC/(它看起来不太正确,因为外部height:100%
在 jsfiddle 容器内没有意义)。
HTML
<div id="everything">
<div id="header">fixed-height header</div>
<div id="workspace">
<div class="docstretch"><div class="docwindow">
filler text<br>filler text<br>filler text<br>...
</div></div>
</div>
<div id="footer">fixed-height footer</div>
</div>
CSS
#everything {display:-webkit-flex;-webkit-flex-flow:column;-webkit-align-items:stretch;height:100%;}
#header {height:2em;background:lightgray;}
#footer {height:2em;background:darkgray;}
#workspace {-webkit-flex:1 0 auto;display:-webkit-flex;-webkit-flex-flow:row;}
.docstretch {background:#05c;color:white;width:300px;overflow-y:scroll;}
.docwindow {height:0%;} /* why does this work? */
我的问题:带有内部 div 的嵌套 div(docstretch 和 docwindow)height:0%
创建了我想要的内容 div,占据了页面的完整“内部空间”并拥有自己的滚动条。但为什么?这是一个安全的解决方案吗?