下面是HTML:

<div id="outer">
    <div id="inner"></div>
    Test
</div>

这是CSS:

#inner {
  float: left;
  height: 100%;
}

通过Chrome开发工具检查,内部div的高度为0px。

我怎么能强迫它是父div高度的100%呢?


当前回答

对于父节点:

display: flex;

您应该添加一些前缀http://css-tricks.com/using-flexbox/

编辑: 唯一的缺点是IE和往常一样,IE9不支持flex。 http://caniuse.com/flexbox

编辑2: 正如@toddsby所指出的,align items是针对父元素的,它的默认值实际上是stretch。如果你想要不同的child值,有align-self属性。

编辑3: jsFiddle: https://jsfiddle.net/bv71tms5/2/

其他回答

这对我很有帮助。

#outer {
    position:relative;
}
#inner {
    position:absolute;
    top:0;
    left:0px;
    right:0px;
    height:100%;
}

改变右:和左:设置更可取的#内部宽度。

这是等高网格系统的代码示例。

#outer{
width: 100%;
margin-top: 1rem;
display: flex;
height:auto;
}

上面是外部div的CSS

#inner{
width: 20%;
float: left;
border: 1px solid;
}

上面是内部div

希望这对你有所帮助

当你需要几个具有相同高度的子元素时,类似的情况可以用flexbox解决:

https://css-tricks.com/using-flexbox/

设置显示:伸缩;对于parent和flex: 1;对于子元素,它们都具有相同的高度。

只要你不需要支持IE8之前的版本,你可以使用display: table-cell来实现:

HTML:

<div class="outer">
    <div class="inner">
        <p>Menu or Whatever</p>
    </div>
    <div class="inner">
        <p>Page contents...</p>
    </div>
</div>

CSS:

.inner {
    display: table-cell;
}

这将迫使具有.inner类的每个元素占用其父元素的全部高度。

为了解决你的问题,我杀鸡儆猴。

你必须做一个包装,浮动它,然后定位你的div,给它100%的高度。

HTML

<div class="container">
    <div class="left">"Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum." </div>
  <div class="right-wrapper">
    <div class="right">"Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua." </div>
  </div>
  <div class="clear">&nbsp;</div>
</div>

CSS:

.container {
    width: 100%;
    position:relative;
}
.left {
    width: 50%;
    background-color: rgba(0, 0, 255, 0.6);
    float: left;
}
.right-wrapper {
    width: 48%;
    float: left;
}
.right {
    height: 100%;
    position: absolute;
}

说明:.right div是绝对定位的。这意味着它的宽度和高度,以及顶部和左侧的位置将基于第一个父div绝对或相对定位仅当宽度或高度属性显式声明在CSS中;如果没有显式声明,这些属性将基于父容器(.right-wrapper)进行计算。

因此,DIV的100%高度将基于.container的最终高度计算,而.right position的最终位置将基于父容器计算。