【发布时间】:2011-12-10 15:54:40
【问题描述】:
我希望我的容器 div 获得其子项高度的最大值。不知道孩子divs 会有多高。我正在尝试JSFiddle。容器div 为红色。这没有出现。为什么?
【问题讨论】:
标签: css css-float liquid-layout
我希望我的容器 div 获得其子项高度的最大值。不知道孩子divs 会有多高。我正在尝试JSFiddle。容器div 为红色。这没有出现。为什么?
【问题讨论】:
标签: css css-float liquid-layout
添加以下属性:
.c{
...
overflow: hidden;
}
这将强制容器尊重其中所有元素的高度,而不考虑浮动元素。
http://jsfiddle.net/gtdfY/3/
最近,我正在做一个需要这个技巧的项目,但需要允许溢出显示,因此,您可以使用伪元素来清除浮动,有效地实现相同的效果,同时允许所有元素溢出.
.c:after{
clear: both;
content: "";
display: block;
}
【讨论】:
尝试在最后一个 </div> 之前插入此清除 div
<div style="clear: both; line-height: 0;">&nbsp;</div>
【讨论】:
您正在漂浮孩子,这意味着他们“漂浮”在容器前面。 为了获得正确的高度,您必须“清除”浮动
div style="clear: both" 清除浮动并为容器提供正确的高度。有关浮动的更多信息,请参阅http://css.maxdesign.com.au/floatutorial/clear.htm。
例如。
<div class="c">
<div class="l">
</div>
<div class="m">
World
</div>
<div style="clear: both" />
</div>
【讨论】:
不是那么容易吗?
.c {
overflow: auto;
}
【讨论】:
最好和最防弹的解决方案是在容器中添加::before 和::after 伪元素。因此,例如,如果您有如下列表:
<ul class="clearfix">
<li></li>
<li></li>
<li></li>
</ul>
列表中的每个元素都有float:left 属性,那么你应该添加到你的css:
.clearfix::after, .clearfix::before {
content: '';
clear: both;
display: table;
}
或者你可以试试display:inline-block;属性,那么你就不需要添加任何clearfix了。
【讨论】:
我遇到了同样的问题,我提出了四个完全可行的解决方案:
display: flex;(这是我最喜欢的解决方案)overflow: auto; 或overflow: hidden; 添加到容器中.c:after {
clear: both;
content: "";
display: block;
}
<div style="clear: both;"></div>
【讨论】: