关于清浮动的几种方法及注意事项

       浮动,前端开发人员进行css布局的必备神器,但使用浮动会使元素脱离正常文档流,给我们造成一些不想要的效果,此时就需要用到“清除浮动”这项技能了。一般来说,清除浮动大家首先想到的使用“overflow:hidden”这个方法,这个方法清浮动最大的弊端在于“隐藏超出父元素的内容部分”,且应用于浮动元素的父元素,如果要清除浮动元素对后面元素的影响,此方法是行不通的。示例:

 .box {

     overflow: hidden;

     border: 4px solid blue;

}

.div1 {

    float: left;

    width: 200px;

   height: 200px;

   background: hotpink;

}

.div2 {

   width: 300px;

   height: 300px;

   background: green;

}


       接着一个常见的方法是 clear:both,此方法我觉得和overflow:hidden这个方法是互补的,它应用于浮动元素后面的元素,清除浮动元素对后面元素的影响,当然同时,也清除了对父元素的影响。示例,

 .box {

    border: 4px solid blue;

}

 .div1 {

    float: left;

    width: 200px;

    height: 200px;

    background: hotpink;

}

.div2 {

    clear: both;

    width: 300px;    

    height: 300px;

    background: green;

}

        但是这个方法的缺点也很明显,如果单单是用来给父元素来清除浮动,就会额外的添加一个标签,从而破坏了代码的语义。这里还有一些注意的是,添加的这个元素不能有浮动属性,且是一个块元素或table元素,不然是无法给父元素清浮动的,有兴趣的童鞋,可以尝尝修改一下代码,这里就不做演示。

       介绍完前面的两种方法之后,重点是第三种方法,现在各大网站,最常用的清除浮动方法。通过伪元素的使用,来清除浮动对父元素的影响。

.clearfix {

    *zoom: 1;

}

.clearfix:before,.clearfix:after {

     content: '';

     display: block;

}

.clearfix:after {

      clear: both;

}

      这个方法通过给元素加class名的方法,来灵活的清除浮动对父元素影响,和第二种方法最大的不同在于,给标签加“clear: both”属性的元素,是通过伪元素来“虚拟”出的一个空元素,所以并不破坏语义结构,并且通过zoom来兼容IE6、IE7浏览器。


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

推荐阅读更多精彩内容

  • 问答题47 /72 常见浏览器兼容性问题与解决方案? 参考答案 (1)浏览器兼容问题一:不同浏览器的标签默认的外补...
    _Yfling阅读 14,687评论 1 92
  • 浮动元素有什么特征?对父容器、其他浮动元素、普通元素、文字分别有什么影响? 特征: 浮动元素会脱离正常的文档流,元...
    饥人谷_哈噜噜阅读 4,355评论 0 0
  • 一、文档流的概念指什么?有哪些方式可以让元素脱离文档流? 文档里指元素在文档中的位置由元素在html里的位置决定,...
    dengpan阅读 3,529评论 0 3
  • 一、文档流的概念指什么?有哪种方式可以让元素脱离文档流? 1、文档流指的是元素在排列布局中所占用的位置,具体的说是...
    鸿鹄飞天阅读 4,179评论 0 0
  • 学习建议 定位、浮动是 CSS 核心知识点,必须熟练掌握。 1.文档流的概念指什么?有哪种方式可以让元素脱离文档流...
    饥人谷_任磊阅读 4,760评论 0 3