【问题标题】:'full available height' inner div -- why does this work?'full available height' 内部 div - 为什么这样有效?
【发布时间】:2013-04-04 20:22:31
【问题描述】:

我有一个在 CSS 中工作的布局,但我不明白 为什么 它工作。 CSS 专家,请解释一下这里发生了什么。

我的目标是有这样的布局:

显着的特点是:

  1. 窗口顶部和底部的固定高度页眉和页脚
  2. 内容区域占据了页眉和页脚之间的全部空间
  3. 内容区域有自己的滚动条(即它不会将页脚向下推到屏幕底部之外)。

我使用 css flex box 和内容 div 内的 0% 高度的 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 具有 height:0% 的嵌套 div(docstretch 和 docwindow)创建了我想要的内容 div,占据了页面的完整“内部空间”并拥有自己的滚动条。但为什么?这是一个安全的解决方案吗?

【问题讨论】:

  • 你想要这样吗...babysoftblog.com/tablet/eco_energy
  • 不——eco_energy 模板内部似乎保持了固定高度。我希望滚动条始终占据页眉和页脚之间的全部空间。
  • 一个实例,Flexbox 可用于使用零高度元素获得类似结果,但它仅适用于列方向。看到这个问题:stackoverflow.com/questions/14962468/…
  • 哎呀,我的情况与您链接的答案完全相同。我确实有一个列方向 - flex-flow:row 应用于子元素,它来自一个更复杂的示例。
  • @amwinter 我已经通过 css 尝试过这个,但我没有成功,也许一些自定义 jquery 会有所帮助......我确定......

标签: css flexbox


【解决方案1】:

如果你去掉所有的 Flexbox 属性,你会发现它和 Flexbox 完全没有关系:

http://jsfiddle.net/2wunC/2/

问题是你有height: 0%。删除 % ,它会按您的预期工作:

http://jsfiddle.net/2wunC/1/

【讨论】:

  • 我在一个独立的文档中尝试了你的 fork /2/(0% 的那个)并且内容 div 折叠了。 JSFiddle 通过引入额外的容器来混淆这个问题。
  • 哪个浏览器? Opera、Chrome、Firefox、IE9 都将蓝色 div 显示为完全可见。
  • 铬 '25.0.1364.172 m'。您是在 jsfiddle 中测试还是作为独立的 html 文件进行测试?
  • 两者。 Chrome 版本 26.0.1410.43 m
  • 我错过了一些东西。您是说 fork 2 显示为未折叠?
猜你喜欢
  • 1970-01-01
  • 2012-05-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-08-29
  • 1970-01-01
  • 2014-05-03
  • 1970-01-01
相关资源
最近更新 更多