【发布时间】:2013-06-02 02:32:55
【问题描述】:
我早些时候在这里问了一个关于我正在自定义 drupal 首页中开发的流体 3 列布局的问题,贡献者建议我从使用边距动态调整大小的绝对容器 div 切换到其他东西 - 我选择了 显示:内联块。 (我讨厌浮点数,表格单元格看起来像是倒退了一步)
当我在所有父 div 上指定百分比高度时,我能够均匀地间隔我的三个 div,甚至可以让孩子的 100% 高度与父高度匹配。
但是子 div 中的内容不会将页面包装器 div 向下推,因此它会溢出到页脚并越过页脚。如果我在包装器 div 上设置 overflow:auto ,那么它会正确显示但我在包装器 div 上得到一个我不想要的滚动条。
如果我从页面包装器中删除高度值,子内容会扩展页面包装器,因为它应该但是我失去了我的子 div 的所有高度!!!
是否有一些技巧可以使这项工作(或者我错过了什么),因为我需要它还是我坚持以另一种方式做?我尝试了 min-height:xx%,但它不起作用。
<div id="page-div">
<div id="inline-wrapper">
<div id="top-content">
<div id="left">user picture, links</div>
<div id="center">blah blah blah blah blah</div>
<div id="right">user picture, links</div>
</div>
<div id="a nav menu"></div>
<div id="main-content">
<div id="left">user picture, links</div>
<div id="center">blah blah blah blah blah</div>
<div id="right">user picture, links</div>
</div>
</div>
</div>
<div id="footer"></div>
html, body {height:100%}
#page-div {height:100%;width:80%;margin:0 auto;}
#inline-wrapper {height:100%;width:100%;background-color:#fff;}
#top-content {height:100%; width:98%;}
#top-content div {vertical-align:top;}
#left, #center, #right {display:inline-block;height:100%;}
#left, #right {width:13%;background-color:#000;}
#center {width:74%;}
#footer {height:250px;width:100%;margin-top:3%;}
【问题讨论】:
-
我可以对 :before 或 :after 课程做些什么吗?
-
我不确定你到底想要什么我用你的代码做了一个 jsfiddle
inline-block(没有任何高设置):jsfiddle.net/ZYU4c 这是另一个例子,我在左右列...以便它们可以填充高度:jsfiddle.net/LrFzj/1。 -
最好让您的布局需求更清晰。例如,您希望页脚如何表现,列和页脚之间是否会有内容?也不要被 CSS“表格布局”的概念吓到。它与在布局中使用表格无关。相反,它是另一种用于在屏幕上运行的 CSS 设备。
-
致您的评论 Rich:当然,您也可以使用伪元素(:before 和 :after)来做一些事情,如果将它们绝对定位在列的后面,您可以假装列延伸到整个高度 (jsfiddle.net/ZYU4c/1),但正如 Ralph 所说,方法取决于您想要的结果。
标签: css height overflow parent-child fluid-layout