【问题标题】:inline-block fluid layout, child content will not expand parent containerinline-block 流体布局,子内容不会展开父容器
【发布时间】: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


【解决方案1】:

不太确定表格不合适,它完全符合您的要求,它需要 100%,并且会增长所有内容。

http://codepen.io/gcyrillus/pen/hsEbJ(显示表用于它能够从任何给定高度增长)

http://codepen.io/gcyrillus/pen/udvgj(display:inline-block,如果给定高度,则推送不多:))

element {display:inline-block;}
            /* or ? */
element {display:table;}

事实上(恕我直言),存在 display 和 float 并且每个值都有不同的行为,应该在需要它们的地方选择它们,而不是“炒作”或“已经存在”。
复古很酷;)。

display:flex 很快就会下单 :)

【讨论】:

  • 我正在寻找的是一个完全响应的网站,随着更多内容添加到子 div 中,它会垂直增长,并随着页脚的增长向下推。你的 display:table 看起来很棒,除了你必须声明一个 1700px 的高度。我正在寻找高度只是一个百分比。
  • 高度是为了显示它的增长并将页脚向下推,不是吗? |删除它:) 并在这 3 个 div 中的任何一个中添加虚假内容
  • 我将中心高度更改为 100%,它也可以按我的需要工作......我将把它合并到我的网站中,看看它是否能与其他所有东西放在一起。谢谢!
  • 很高兴我给了你一些建议:)
  • 我使用您制定的框架重新编码了网站 - 谢谢!一个问题;如果我为内联包装器 div 应用 90% 的宽度,以控制布局宽度,我似乎无法将其置于页面包装器 div 的中心。它走到最右边。我这样做是因为我有一个与内联包装顶部重叠的徽标图像:/
猜你喜欢
  • 2017-02-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-01-09
  • 1970-01-01
  • 2014-12-01
  • 2017-05-14
  • 1970-01-01
相关资源
最近更新 更多