我有这些嵌套的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上:

高度:100%;

这对我每次都有效

其他回答

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

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

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

以下应该工作:

.main #main_content {
    padding: 5px;
    margin: 0px;
    overflow: auto;
    width: 100%; //for some explorer browsers to trigger hasLayout
}

我知道这是一种旧的线程,然而,这可以用最小高度的CSS属性以一种干净的方式实现,所以我将在这里留下这个供将来参考:

我根据这里发布的OP代码做了一个小提琴:http://jsfiddle.net/U5x4T/1/,当你在里面删除和添加div时,你会注意到容器是如何扩大或缩小大小的

要做到这一点,除了OP代码,你只需要做两件事:

*主容器溢出(需要浮动div)

*最小高度CSS属性,更多信息可在这里:http://www.w3schools.com/cssref/pr_dim_min-height.asp

浮动元素不占用父元素内部的空间,顾名思义,它们是浮动的!因此,如果显式地没有为其子元素浮动的元素提供高度,则父元素将出现缩小并似乎不接受子元素的维度,如果其给定overflow:hidden;它的子节点可能不会出现在屏幕上。有很多方法可以解决这个问题:

在被浮动元素下面插入另一个元素,使用clear:both;财产,或使用清楚:两者;On:被浮动元素的后面。 使用显示:inline-block;或者用flex box代替float。

在做任何事情之前检查css规则:

{ position:absolute }

删除如果存在,不需要他们。