为什么需要清除浮动?
一般是元素浮动之后,导致父级对象盒子不能被撑开,这样浮动就产生了。
浮动不属于文档流中的普通流,当元素浮动之后,不会影响块级元素的布局,只会影响内联元素布局
demo:
<style> .box{ margin: 50px auto; border: 1px solid #ccc; background: yellow; color: #fff; } .red{ width: 80px; height: 100px; background: red; float: left; } .green{ width: 80px; height: 100px; background: green; float: left; } .blue{ width: 80px; height: 100px; background: blue; float: left; } .clear{ clear: both; } </style>
<div class="box"> <div class="red">1</div> <div class="green">2</div> <div class="blue">3</div> </div>
清除浮动的方法:
1.父元素内最后添加元素clear clear:both
html:
<div class="clear"></div>
<style> .clear{ clear: both; } </style>
2.父元素添加属性 overflow:auto
.box{ overflow: auto; }
3.父元素使用伪类元素清除float
.box:after{ display: block; overflow: hidden; clear: both; content:"" } .box{ zoom: -1;/* 解决兼容问题*/ }
4.使用双伪类before和after
box:before,.box:after{ display: block; clear: both; content: '' } .box { zoom: 1; }