我有这些嵌套的div,我需要主容器扩展(在高度),以适应内部的div

    <!-- head -->
    ...
    <!-- /head -->

    <body class="main">
      <div id="container">
        <div id="header">
          <!--series of divs in here, graphic banner etc. -->
        </div>

    <div id="main_content"> <!-- this DIV _should_ stretch to accommodate inner divs -->
      <div id="items_list" class="items_list ui-sortable">
        <div id="item_35" class="item_details">
        </div>
        <div id="item_36" class="item_details">
        </div>        
        <div id="item_37" class="item_details">
        </div>
        <!-- this list of DIVs "item_xx" goes on for a while
             each one representing a photo with name, caption etcetc -->
      </div>
    </div>
    <br class="clear"/>

    <div id="footer">
    </div>
  </body>
</html>

CSS是这样的:

* {
    padding: 0;
    margin: 0;
}

.main {
    font: 100% Verdana, Arial, Helvetica, sans-serif;
    background: #4c5462;
    margin: 0; 
    padding: 0;
    text-align: center; 
    color: #000000;
}
.main #container {
    height: auto;
    width: 46em;
    background: #4c5462;
    margin: 0 auto; 
    border: 0px solid #000000;
    text-align: left;       
}

.main #main_content {
    padding: 5px;
    margin: 0px;
}
#items_list {
    width: 400px;
    float: left;
}

.items_list {
    width: 400px;
    float: left;
}
.item_details {
    margin-top: 3px;
    margin-bottom: 3px;
    padding: 3px;
    float: left;
    border-bottom: 0.5px solid blue;
}

我的问题是,#main_content没有拉伸以适应所有的内部div,其结果是它们一直在与背景相反。

考虑到上述情况,我该如何解决这个问题?


当前回答

我自己在一个项目上遇到了这个问题-我在一个div里面有一个表,它是从div的底部溢出来的。我尝试过的高度修复都没有工作,但我发现了一个奇怪的修复方法,那就是在div的底部放一个段落,里面只有一个句号。然后将文本的“颜色”设置为与容器的背景相同。工作整齐如你所愿,不需要javascript。不间断的空间是不行的,透明的图像也不行。

显然,它只需要看到表下面有一些内容,以便拉伸以包含它。我想知道这对其他人是否也适用。

这是一种让设计师求助于基于表格的布局的事情——我花了大量的时间来解决这个问题,并使它跨浏览器兼容,这快把我逼疯了。

其他回答

使用span标签,并附上display:inline-block css。然后你可以使用CSS和操作它像一个div在很多方面,但如果你不包括宽度或高度,它会根据它的内容展开和缩回。

希望这能有所帮助。

我尝试了上面列出的每一条建议,但没有一条奏效。然而,“display: table”对我来说很管用。

你需要在关闭#main_content div之前强制执行clear:both。我可能会移动<br class="clear" />;进入#main_content div并设置CSS为:

.clear { clear: both; }

更新:这个问题仍然有相当多的流量,所以我想用一个现代的替代方案来更新答案,在CSS3中使用一个新的布局模式,称为Flexible boxes或Flexbox:

身体{ 保证金:0; } .flex-container { 显示:flex; flex-direction:列; 最小高度:100 vh; } 标题{ background - color: # 3 f51b5; 颜色:# fff; } 部分。{内容 flex: 1; } 页脚{ background - color: # FFC107; 颜色:# 333; } < div class = " flex-container " > <标题> <标题> 头 < / h1 > 头> < / <节课= "内容" > 内容 < / >节 <页脚> < h4 > 页脚 < / h4 > > < /页脚 < / div >

大多数现代浏览器目前都支持Flexbox和viewport单元,但如果您必须保持对旧浏览器的支持,请确保检查特定浏览器版本的兼容性。

如果你使用jQuery UI,他们已经有一个类的作品只是一个魅力 在你想要扩展高度的div的底部添加一个<div>:auto; 然后添加一个类名ui-helper-clearfix或使用这个样式属性并像下面这样添加:

<div style=" clear:both; overflow:hidden; height:1%; "></div>

添加jQuery UI类到clear div,而不是你想要展开的div。

试试这个: 溢出:汽车;

这对我的问题有效。