简述清除浮动

为什么要清除浮动?

1、影响其他元素定位
父盒子高度为0,子盒子全部浮动、定位,子盒子不会撑开父盒子,下面的元素会到子盒子的下面。

2.背景图片或颜色不能正常显示
由于浮动产生,如果对父级设置了CSS背景颜色或CSS背景图片,而父级不能被撑开,所以导致CSS背景不能显示。

3、外边距内边距设置影响
由于浮动导致父级子级之间设置了css padding、css margin属性的值不能正确表达。特别是上下边的padding和margin不能正确显示。

清除浮动方法总结:

1、对父级元素设置高度
对父级设置适合高度样式清除浮动,一般设置高度需要能确定内容高度才能设置(高度设置为:内容高度+padding+border)。

2、clear:both清除浮动
我们在父级“</div>”结束前加div引入“class=”clear””样式,这样就可以清除浮动了。

//html部分
<div class="divfloat"> 
  <div class="divfloat-left">left(向左浮动)</div> 
  <div class="divfloat-right">right(向右浮动)</div> 
  <div class="clear"></div> 
</div> 
//css部分
.divfloat {
  width:400px;
  border:1px solid #F00;
  background:#FF0;
} 
.divfloat-left,.divfloat-right {
  width:180px;
  height:100px; 
  border:1px solid #00F;background:#FFF;
} 
.divfloat-left {
  float:left;
} 
.divfloat-right {
  float:right;
} 
.clear {
  clear:both;
} 

3、overflow:hidden清除浮动
对父级CSS选择器加overflow:hidden样式,可以清除使用的float产生浮动。【BFC有三大特性:(1)BFC会阻止垂直外边距(margin-top、margin-bottom)折叠.(2)BFC不会重叠浮动元素.(3)BFC可以包含浮动.我们可以利用BFC的第三条特性来“清浮动”,这里其实说清浮动已经不再合适了,应该说用BFC来包含浮动。(还想深入了解BFC的可以参看“https://www.w3.org/TR/CSS21/v…”的详细描述)】

//html部分
<div class="divfloat"> 
  <div class="divfloat-left">left(向左浮动)</div> 
  <div class="divfloat-right">right(向右浮动)</div> 
  <div class="clear"></div> 
</div> 
//css部分
.divfloat {
  width:400px;
  border:1px solid #F00;
  background:#FF0;
  overflow:hidden;
} 
.divfloat-left,.divfloat-right {
  width:180px;
  height:100px;
  border:1px solid #00F;
  background:#FFF;
} 
.divfloat-left {
  float:left;
} 
.divfloat-right { 
  float:right;
} 

4、单伪元素//双伪元素清除浮动
单伪元素清除浮动原理: 通过:after 伪类在浮动块后面加上一个 display:none 的不可见块状内容来,并给它设置 clear:both 来清理浮动。

.clearfix:after {
  content:" ";  /*必须为空*/
  visibility:hidden;
  display:block;
  height:0
  font-size:0;
  clear:both;
}

.clearfix {
  zoom:1;        /*兼容IE浏览器*/  
}

双伪元素清除浮动原理:通过:after 伪类在浮动块后面加上一个 display:table 的不可见块状内容来,并给它设置 clear:both 来清理浮动。(注意:这里隐藏这个空白使用的是 display: table,而不是设置 visibility:hidden;height:0;font-size:0;与单伪元素清除浮动有所区别)

.cearfix:before, .cearfix:after {
   content:" ";    /*必须为空*/
   display:table;
}
.cearfix:after {
  clear:both;
}
.cearfix {
  zoom:1;     /*兼容IE浏览器*/
}

总结:

第一种方法:简单,容易掌握,但只适合高度固定的布局,不推荐使用可以了解。
第二种方法:简单,浏览器支持好,但如果页面浮动布局多,就要增加很多空div,让人感觉很麻烦,不推荐使用,可以了解。
第三种方法:代码少,浏览器支持,不能和position配合使用,因为超出的尺寸的会被隐藏,只推荐没有使用position的布局使用。
第四种方法:浏览器支持好,建议使用。

    原文作者:Aemple
    原文地址: https://segmentfault.com/a/1190000009402076
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞