css常见清除浮动法

  清除浮动主要是为了解决父级元素因为子级浮动脱标引起内部高度为0的问题,常见的清除浮动方法如下四种:

1.额外标签法

  在父级中浮动的盒子后面添加一个空盒子,并给这个空盒子添加清除浮动
优点:通俗易懂,书写方便
缺点:会增加页面无意义的标签,结构化较差

html:
<div class="father">
    <div class="son1">左浮动</div>
    <div class="son2">右浮动</div>
    <div class="clear"></div>//空盒子用来清除浮动
</div>
css:
  .father{ width:100%;}
  .son1{  width:50%;  heigth:100px;  float:left;}
  .son2{ width:50%;  heigth:100px;  float:right;}
  .clear{ clear:both;} // 清除左右浮动
2.父级添加overflow方法

  可以通过触发BFC的方式,实现清除浮动的效果,给父级添加 overflow:hidden|auto|scroll即可。
优点:代码简洁
缺点:当内容较多时,不会自动换行,内容会隐藏无法展示溢出的内容

3.使用after伪元素清除浮动

:after方式为额外标签的升级版,在需要清除浮动的盒子添加clearfix类名就好了

.clearfix:after{content:'.';display:block;height:0;clear:both;visibility:hidden;}
.clearfix{*zoom:1;} //兼容 IE6  IE7 触发hasLayout

优点:不用额外添加无意义的标签,符合闭合浮动思想,结构语义化正确
缺点:IE6/7不支持:after,使用zoom:1触发hasLayout
注意:content:'.'里面跟一个小点,不要为空,因为firefox7.0以前的版本会生成空格

4.使用before和after双伪元素清除浮动 推荐使用
.clearfix:before,clearfix:after{content:'.';display:table;}
.clearfix:after{clear:both}
.clearfix{*zoom:1;} //兼容 IE6  IE7 触发hasLayout

优点:代码简洁,完全符合闭合浮动思想,清除浮动首选,良心推荐!
缺点:IE6/7不支持:after,使用zoom:1触发hasLayout
注意:content:'.'里面跟一个小点,不要为空,因为firefox7.0以前的版本会生成空格

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 问答题47 /72 常见浏览器兼容性问题与解决方案? 参考答案 (1)浏览器兼容问题一:不同浏览器的标签默认的外补...
    _Yfling阅读 13,861评论 1 92
  • 这篇文章极好,以至于让我受益良多,就一字没有改动的转发过来一丝冰凉老师的文章 需要注意的是,display:tab...
    新晋小牛牛阅读 1,076评论 0 2
  • 第一部分 HTML&CSS整理答案 1. 什么是HTML5? 答:HTML5是最新的HTML标准。 注意:讲述HT...
    kismetajun阅读 27,895评论 1 45
  • 浮动,从诞生那天起,它就是个特别的属性——既为网页布局带来新的方法,却又随之产生一系列的问题。当然,随着时间的推移...
    郝特么冷阅读 862评论 0 6
  • 逢年过节,宴请亲朋好友,鱼是必不可少的一道菜。 食材:草鱼 豆腐 猪血 葱 火腿 配料:盐 味精 鸡精 姜 大蒜 ...
    滑个板阅读 368评论 0 0