清除浮动这个问题,做前端的应该再熟悉不过了,也是每一个web前台设计师 必须掌握的机能。

为什么浮动这么难?

因为浮动会使当前标签产生向上浮的效果,同时会影响到前后标签、父级标签的位置及 width height 属性。

而且同样的代码,在各种浏览器中显示效果也有可能不相同,这样让清除浮动更难了。

1、父级div定义 height

  1. <style type="text/css">
  2. .div1{background:#000080;border:1px solid red;/*解决代码*/height:200px;}
  3. .div2{background:#800080;border:1px solid red;height:100px;margin-top:10px}
  4.  
  5. .left{float:left;width:20%;height:200px;background:#DDD}
  6. .right{float:right;width:30%;height:80px;background:#DDD}
  7. </style>
  8.  
  9. <div class="div1">
  10. <div class="left">Left</div>
  11. <div class="right">Right</div>
  12. </div>

原理:父级div手动定义height,就解决了父级div无法自动获取到高度的问题。
优点:简单,代码少,容易掌握
缺点:只适合高度固定的布局,要给出精确的高度,如果高度和父级div不一样时,会产生问题
建议:不推荐使用,只建议高度固定的布局时使用
评分:★★☆☆☆

2、结尾处加空div标签 clear:both

  1. <style type="text/css">
  2. .div1{background:#000080;border:1px solid red}
  3. .div2{background:#800080;border:1px solid red;height:100px;margin-top:10px}
  4.  
  5. .left{float:left;width:20%;height:200px;background:#DDD}
  6. .right{float:right;width:30%;height:80px;background:#DDD}
  7.  
  8. /*清除浮动代码*/
  9. .clearfloat{clear:both}
  10. </style>
  11.  
  12. <div class="div1">
  13. <div class="left">Left</div>
  14. <div class="right">Right</div>
  15. <div class="clearfloat"></div>
  16. </div>
  17.  
  18. <div class="div2">
  19. div2
  20. </div>

原理:添加一个空div,利用css提高的clear:both清除浮动,让父级div能自动获取到高度
优点:简单,代码少,浏览器支持好,不容易出现怪问题
缺点:不少初学者不理解原理;如果页面浮动布局多,就要增加很多空div,让人感觉很不爽
建议:不推荐使用,但此方法是以前主要使用的一种清除浮动方法
评分:★★★☆☆

3、父级div定义 伪类:after 和 zoom

  1. <style type="text/css">
  2. .div1{background:#000080;border:1px solid red;}
  3. .div2{background:#800080;border:1px solid red;height:100px;margin-top:10px}
  4.  
  5. .left{float:left;width:20%;height:200px;background:#DDD}
  6. .right{float:right;width:30%;height:80px;background:#DDD}
  7.  
  8. /*清除浮动代码*/
  9. .clearfloat:after{display:block;clear:both;content:"";visibility:hidden;height:0}
  10. .clearfloat{zoom:1}
  11. </style>
  12.  
  13. <div class="div1 clearfloat">
  14. <div class="left">Left</div>
  15. <div class="right">Right</div>
  16. </div>
  17.  
  18. <div class="div2">
  19. div2
  20. </div>

原理:IE8以上和非IE浏览器才支持:after,原理和方法2有点类似,zoom(IE转有属性)可解决ie6,ie7浮动问题
优点:浏览器支持好,不容易出现怪问题(目前:大型网站都有使用,如:腾迅,网易,新浪等等)
缺点:代码多,不少初学者不理解原理,要两句代码结合使用,才能让主流浏览器都支持。
建议:推荐使用,建议定义公共类,以减少CSS代码。
评分:★★★★☆

4、父级div定义 overflow:hidden

  1. <style type="text/css">
  2. .div1{background:#000080;border:1px solid red;/*解决代码*/width:98%;overflow:hidden}
  3. .div2{background:#800080;border:1px solid red;height:100px;margin-top:10px;width:98%}
  4.  
  5. .left{float:left;width:20%;height:200px;background:#DDD}
  6. .right{float:right;width:30%;height:80px;background:#DDD}
  7. </style>
  8.  
  9. <div class="div1">
  10. <div class="left">Left</div>
  11. <div class="right">Right</div>
  12. </div>
  13.  
  14. <div class="div2">
  15. div2
  16. </div>

原理:必须定义width或zoom:1,同时不能定义height,使用overflow:hidden时,浏览器会自动检查浮动区域的高度
优点:简单,代码少,浏览器支持好
缺点:不能和position配合使用,因为超出的尺寸的会被隐藏。
建议:只推荐没有使用position或对overflow:hidden理解比较深的朋友使用。
评分:★★★☆☆

5、父级div定义 overflow:auto

  1. <style type="text/css">
  2. .div1{background:#000080;border:1px solid red;/*解决代码*/width:98%;overflow:auto}
  3. .div2{background:#800080;border:1px solid red;height:100px;margin-top:10px;width:98%}
  4.  
  5. .left{float:left;width:20%;height:200px;background:#DDD}
  6. .right{float:right;width:30%;height:80px;background:#DDD}
  7. </style>
  8.  
  9. <div class="div1">
  10. <div class="left">Left</div>
  11. <div class="right">Right</div>
  12. </div>
  13.  
  14. <div class="div2">
  15. div2
  16. </div>

原理:必须定义width或zoom:1,同时不能定义height,使用overflow:auto时,浏览器会自动检查浮动区域的高度
优点:简单,代码少,浏览器支持好
缺点:内部宽高超过父级div时,会出现滚动条。
建议:不推荐使用,如果你需要出现滚动条或者确保你的代码不会出现滚动条就使用吧。
评分:★★☆☆☆

6、父级div 也一起浮动

  1. <style type="text/css">
  2. .div1{background:#000080;border:1px solid red;/*解决代码*/width:98%;margin-bottom:10px;float:left}
  3. .div2{background:#800080;border:1px solid red;height:100px;width:98%;/*解决代码*/clear:both}
  4.  
  5. .left{float:left;width:20%;height:200px;background:#DDD}
  6. .right{float:right;width:30%;height:80px;background:#DDD}
  7. </style>
  8.  
  9. <div class="div1">
  10. <div class="left">Left</div>
  11. <div class="right">Right</div>
  12. </div>
  13.  
  14. <div class="div2">
  15. div2
  16. </div>

原理:所有代码一起浮动,就变成了一个整体
优点:没有优点
缺点:会产生新的浮动问题。
建议:不推荐使用,只作了解。
评分:★☆☆☆☆

7、父级div定义 display:table

  1. <style type="text/css">
  2. .div1{background:#000080;border:1px solid red;/*解决代码*/width:98%;display:table;margin-bottom:10px;}
  3. .div2{background:#800080;border:1px solid red;height:100px;width:98%;}
  4.  
  5. .left{float:left;width:20%;height:200px;background:#DDD}
  6. .right{float:right;width:30%;height:80px;background:#DDD}
  7. </style>
  8.  
  9. <div class="div1">
  10. <div class="left">Left</div>
  11. <div class="right">Right</div>
  12. </div>
  13.  
  14. <div class="div2">
  15. div2
  16. </div>

原理:将div属性变成表格
优点:没有优点
缺点:会产生新的未知问题。
建议:不推荐使用,只作了解。
评分:★☆☆☆☆

8、结尾处加 br标签 clear:both

  1. <style type="text/css">
  2. .div1{background:#000080;border:1px solid red;margin-bottom:10px;zoom:1}
  3. .div2{background:#800080;border:1px solid red;height:100px}
  4.  
  5. .left{float:left;width:20%;height:200px;background:#DDD}
  6. .right{float:right;width:30%;height:80px;background:#DDD}
  7.  
  8. .clearfloat{clear:both}
  9. </style>
  10.  
  11. <div class="div1">
  12. <div class="left">Left</div>
  13. <div class="right">Right</div>
  14. <br class="clearfloat" />
  15. </div>
  16.  
  17. <div class="div2">
  18. div2
  19. </div>

原理:父级div定义zoom:1来解决IE浮动问题,结尾处加 br标签 clear:both
建议:不推荐使用,只作了解。
评分:★☆☆☆☆

css清除浮动方法大全的更多相关文章

  1. CSS清除浮动方法集合

    CSS清除浮动方法集合 一.浮动产生原因   -   TOP 一般浮动是什么情况呢?一般是一个盒子里使用了CSS float浮动属性,导致父级对象盒子不能被撑开,这样CSS float浮动就产生了. ...

  2. DIV+CSS 清除浮动方法总结

    DIV+CSS 清除浮动是页面布局中常见的问题,相信各位高手也都有自己的方法,今天在这里对常见的几种方法进行总结(PS:谈不上是原创,这里是我自己做的归纳总结,也是我自己内化的过程),希望对您能够有所 ...

  3. DIV+CSS清除浮动方法

    一.为什么要清除浮动? 1>父元素在未定义高的情况下,由于子元素全部浮动脱离文本流,而造成父元素高的塌陷(正常情况下,父元素的高是由未浮动的子元素撑起来) 2>因为部分子元素的而浮动,脱离 ...

  4. CSS清除浮动方法总结

    什么是CSS清除浮动? 在非IE浏览器(如Firefox)下,当容器的高度为auto,且容器的内容中有浮动(float为left或right)的元素,在这种情况下,容器的高度不能自动伸长以适应内容的高 ...

  5. css清除浮动方法小结

    清除浮动其实主要解决的就是高度塌陷问题,具体在此不再赘述~~~那些年我们一起清除过的浮动(大佬博客,写的挺不错) 方法小结:1. 1)添加额外标签 这是在学校老师就告诉我们的 一种方法,通过在浮动元素 ...

  6. 【转】CSS清除浮动_清除float浮动

    CSS清除浮动方法集合 一.浮动产生原因 一般浮动是什么情况呢?一般是一个盒子里使用了CSS float浮动属性,导致父级对象盒子不能被撑开,这样CSS float浮动就产生了. 浮动产生样式效果截图 ...

  7. CSS清除浮动_清除float浮——详解overflow:hidden 与clear:both属性

    最近刚好碰到这个问题,看完这个就明白了.写的很好,所以转载了! CSS清除浮动_清除float浮动 CSS清除浮动方法集合 一.浮动产生原因   -   TOP 一般浮动是什么情况呢?一般是一个盒子里 ...

  8. css清除浮动大全共8种方法

    原文链接http://www.jb51.net/css/173023.html 清除浮动是每一个 web前台设计师必须掌握的机能.css清除浮动大全,共8种方法. 浮动会使当前标签产生向上浮的效果,同 ...

  9. CSS清除浮动大全的8种方法

    清除浮动是每一个 web前台设计师必须掌握的机能.css清除浮动大全,共8种方法. 浮动会使当前标签产生向上浮的效果,同时会影响到前后标签.父级标签的位置及 width height 属性.而且同样的 ...

随机推荐

  1. Unity3d 真实的植物渲染

    好久没写shader了,有些生疏,刚弄了个植物shader,分享一下. 先上图片: 重点需要注意的是fragment shader的透明部分 需要如此声明 Tags{ "LightMode& ...

  2. HDOJ/HDU 1321 Reverse Text(倒序输出~)

    Problem Description In most languages, text is written from left to right. However, there are other ...

  3. 《Linear Algebra and Its Applications》-chaper5-特征值与特征向量-基本概念

    基于之前章节的铺垫,我们这里能够很容易的引出特征向量和特征值的概念. 首先我们知道n x n矩阵的A和n维向量v的乘积会得到一个n维的向量,那么现在我们发现,经过计算u=Av,得到的向量u是和v共线的 ...

  4. 《University Calculus》-chape5-积分法-微积分基本定理

    定积分中值定理: 积分自身的定义是简单的,但是在教学过程中人们往往记得的只是它的计算方法,在引入积分的概念的时候,往往就将其与计算方法紧密的捆绑在一起,实际上,在积分简单的定义之下,微积分基本定理告诉 ...

  5. TCP 的那些事儿(上)

    TCP是一个巨复杂的协议,因为他要解决很多问题,而这些问题又带出了很多子问题和阴暗面.所以学习TCP本身是个比较痛苦的过程,但对于学习的过程却能让人有很多收获.关于TCP这个协议的细节,我还是推荐你去 ...

  6. SPOJ 375 (树链剖分+线段树)

    题意:一棵包含N 个结点的树,每条边都有一个权值,要求模拟两种操作:(1)改变某条边的权值,(2)询问U,V 之间的路径中权值最大的边. 思路:最近比赛总是看到有树链剖分的题目,就看了论文,做了这题, ...

  7. hdu1026 Ignatius and the Princess I (优先队列 BFS)

    Problem Description The Princess has been abducted by the BEelzebub feng5166, our hero Ignatius has ...

  8. Servlet实现表单提交(MyEclipse10,Tomcat7.0,JDK1.7,)——Java Web练习(一)

    1.MyEclipse|File|New|Project|Web Project    填写Project Name:exServlet,点选Java EE 6.0(配套Tomcat7.0) 2.代码 ...

  9. 初学scala1——Option

    Scala的Option[T]是容器对于给定的类型的零个或一个元件.Option[T]可完美替代Java中的null,可以是Some[T]或者None. 例如,Scala Map的get方法输出即为O ...

  10. [NOIP2015pj题解]From某因为时间快了那么一点点超过下一位的蒟蒻(其实是纯代码).

    第一题,很水,直接上代码 #include <iostream> #include <fstream> #include <cstdlib> /* run this ...