CSS 清除浮动的三种方法

方法一: 添加新的元素,应用clear:both;

.clear{clear:both; height: 0; line-height: 0; font-size: 0}

<div class="outer">
    <div class="div1">1</div>
    <div class="div2">2</div>
    <div class="div3">3</div>
    <div class="clear"></div>
</div>

方法二:父级div定义 overflow: auto

(注意:是父级div也就是这里的 div.outer)

.over-flow{overflow: auto; zoom: 1; //zoom: 1; 是在处理兼容性问题}

<div class="outer over-flow"> //这里添加了一个class
    <div class="div1">1</div>
    <div class="div2">2</div>
    <div class="div3">3</div>
    <!--<div class="clear"></div>-->
</div>

结果:当然是实现了!
原理:使用overflow属性来清除浮动有一点需要注意,overflow属性共有三个属性值:hidden,auto,visible。我们可以使用hiddent和auto值来清除浮动,但切记不能使用visible值,如果使用这个值将无法达到清除浮动效果,其他两个值都可以,其区据说在于一个对seo比较友好,另个hidden对seo不是太友好,其他区别我就说不上了,也不浪费时间。

方法三: 伪类:after 方法:

(注意:作用于浮动元素的父亲 据说是最高大上的方法 )
先说原理:这种方法清除浮动是现在网上最拉风的一种清除浮动,他就是利用:after和:before来在元素内部插入两个元素块,从面达到清除浮动的效果。其实现原理类似于clear:both方法,只是区别在于:clear在html插入一个div.clear标签,而outer利用其伪类clear:after在元素内部增加一个类似于div.clear的效果。下面来看看其具体的使用方法:

.outer {zoom:1;}    /*==for IE6/7 Maxthon2==*/
.outer :after {    
              content:'.';
              clear:both;
              display:block;
              width: 0;
              height: 0;
              visibility:hidden;
}   /*==for FF/chrome/opera/IE8==*/

clear:both;指清除所有浮动;
content: '.'; display:block;对于FF/chrome/opera/IE8不能缺少
其中content()可以取值也可以为空。
visibility:hidden;的作用是允许浏览器渲染它,但是不显示出来,这样才能实现清除浮动。

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

推荐阅读更多精彩内容

  • 问答题47 /72 常见浏览器兼容性问题与解决方案? 参考答案 (1)浏览器兼容问题一:不同浏览器的标签默认的外补...
    _Yfling阅读 13,815评论 1 92
  • 摘要:css清除浮动float的三种方法总结,为什么要清除浮动?浮动会有哪些影响? 一.先看现象(display:...
    小时候很帅的龙少阅读 592评论 0 1
  • 先上一个简单的例子 如图所示,图片被添加了float:left属性,实现了文字环绕效果.但是再给div加了bord...
    流光号船长阅读 838评论 0 0
  • 浮动,从诞生那天起,它就是个特别的属性——既为网页布局带来新的方法,却又随之产生一系列的问题。当然,随着时间的推移...
    郝特么冷阅读 860评论 0 6
  • 这篇文章极好,以至于让我受益良多,就一字没有改动的转发过来一丝冰凉老师的文章 需要注意的是,display:tab...
    新晋小牛牛阅读 1,073评论 0 2