儿童div高度为父母自动高度的100%

时间:2012-07-10 08:40:33

标签: html css

我在这里,因为其他类似的问题无法解决我的特殊问题。

我需要right div始终保持100%的高度,parent高度取决于left div高度,这取决于内部的内容。

这是html:

<div class="container clearfix">
<div class="left"></div>
<div class="right"></div>
</div>

这是CSS:

.container{
    min-height: 10px;
    width: auto;
    height: auto;
    background-color: #eeeeee;
}

.left{
    position: relative;
    float: left;
    min-height: 100px;
    width: 50px;
    background-color: #dddddd;
}

.right{   
    min-height: 20px;
    position: relative;
    float: left;
    height: 100%;
    width: 50px;
    background-color: #dddddd;
}

.

.clearfix:after
{
    content: ".";
    display: block;
    clear: both;
    visibility: hidden;
    line-height: 0;
    height: 0;
}
.clearfix {
    display: inline-block;
}

注意:
我正在使用clearfix 如果您可以在jsfiddle

中显示答案

这是jsFiddle http://jsfiddle.net/C9Kmx/32/

7 个答案:

答案 0 :(得分:14)

制作正确的div position:absolute;并制作父div position:relative;,然后height:100%;将适用于正确的div。确保您也相应地调整其x位置和宽度。在这个例子中,我给它一个left:50px,以确保它出现在左栏的右侧。

JSFiddle http://jsfiddle.net/e9mvD/

答案 1 :(得分:4)

您可以在此布局中使用table-cell属性的display值,并删除float,如下所示:

.left, .right{
    display:table-cell;
}

现场演示http://jsfiddle.net/C9Kmx/34/

答案 2 :(得分:3)

您可以使用flexbox和一些创造力来实现这一目标。

RequestOptions
.container {
  display: flex;
  background: black;
  padding: 5px;
  width: 300px
}

.left {
  height: 200px;
  flex: 1 0 0px;
  background: blue;
}

.right {
  flex: 1 0 0px;
  overflow: auto;
  background: green;
}

.column {
  display: flex;
  flex-direction: column;
  width: 20%;
}

答案 3 :(得分:1)

为正确的div提供position:fixedheight:100%。这将解决您的问题。

答案 4 :(得分:1)

通过阅读您对其他解决方案的评论,我很清楚,只有您的解决方案是在代码中实现一些JS。但是,这不是问题。

http://jsfiddle.net/b7TuP/

答案 5 :(得分:0)

尝试将容器的高度设为固定值

这也将解决问题。刚试过jsFiddle

http://jsfiddle.net/C9Kmx/35/

.container
{
    min-height: 10px;
    width: auto;
    height: 100px;
    background-color: #eeeeee;
}

答案 6 :(得分:0)

.parent{
    position: relative;
    width: 100px;
    height: auto;
}
.child{
    width: 50px;
    height: 100px;
    background-color: red;
}
.child_absolute{
    position: absolute;
    left: 50px;
    top: 0;
    bottom: 0;
    width: 50px;
    background-color: blue;
}
<div class="parent">
    <div class="child"></div>
    <div class="child_absolute"></div>
</div>