子元素使用了float之后,父元素为何高度没了?

<!DOCTYPE html>
<html lang="en">
<style>
.level1{width:200px;height:50px;background:red ;float:left}
.level2{width:200px;height:50px;background:yellow ;float:left;}
.level3{width:200px;height:50px;background:green ;float:left;}
.level4{width:200px;height:50px;background:blue ;float:left;}
</style>

<body>
    <div>
         <div class='level1'></div>
         <div class='level2'></div>
    </div>
    <div class='level3'></div>
    <div class='level4'></div>
</body>
</html>
阅读 7.1k
6 个回答

Float元素會脫離文檔流,父級加height:100%;overflow:hidden;

清除浮动,把clearfix放在浮动元素父级上

.clearfix:before, .clearfix:after { content: "\0020"; display: block; height: 0; overflow: hidden; }  
.clearfix:after { clear: both; }  
.clearfix { zoom: 1; }  

子元素浮动就脱离了文档流。父元素就没有内容撑开他的高度,所以就没有了高度。

浮动后要清楚

很简单,父元素下的子元素设置了浮动,就会脱离文档流,父元素就没有了高度,只需要在父元素里再添加一个子元素放在最后面,并且给它添加clearboth的css样式,父元素就有高度了

我知道的一共有三种办法
1.直接给父元素一个值(蠢办法)
3.在父元素上加 overflow:hidden
3.在父级元素内加入 clearfix class

.clearfix:after { 
   content: " ";
   display: block; 
   height: 0; 
   clear: both;
}

具体是因为:子元素浮动后,脱离了文档流

推荐问题