zoukankan      html  css  js  c++  java
  • 清浮动方法汇总

    浮动元素脱离了文档流,所以父元素没办法预知它的大小,导致父元素没有了高度,设置了背景色也看不到等一系列问题出现了。这时就需要我们去清浮动。

    接下来总结了下清浮动的几种方式。

    方案一:
    在浮动元素后边加一个空标签,要块级的,IE6 7行内元素也可以

    1 i{
    2      clear:both;
    3      height:0;
    4      display:block;
    5 }
    6 <div style='background:red;'>
    7      <img style="float:left;" src="http://img02.taobaocdn.com/bao/uploaded/i3/T1WTxlFftaXXb1upjX.jpg_290x290.jpg"/>
    8      <i></i>
    9 </div>

    缺点:有冗余标签

    方案二:
    设置overflow:hidden,同时IE6下需要触发hasLayout

    1 .clearfix{
    2      overflow:hidden; /*IE7+*/
    3      _zoom:1;/*IE6*/
    4 }

    缺点:内部元素没办法定位到外面

    方案三:
    浮动元素自身是清浮动的

    .clearfix{
         float:left;
    }

    缺点:虽然自身的浮动清除了,但是把问题留给他父亲了

    方案四:

     1 .clearfix{
     2      *zoom:1;/*IE6 7 只要触发layout即可*/
     3 }
     4 .clearfix:after{ /*原理同方案一,只是IE6 7不支持:after伪类*/
     5      content:".";
     6      clear:both;
     7      height:0;
     8      font-size:0;
     9      line-height:0;
    10      display:block;
    11 }

    这是目前使用比较广泛的方式,需要注意的是content属性不能为空格,必须有内容,否则firefox下会出现一个外边距传递的bug。

    方案五:

     1 .clearfix:before,
     2 .clearfix:after {
     3     content:"";
     4     display:table;
     5 }
     6 .clearfix:after {
     7     clear:both;
     8 }
     9 .clearfix {
    10     *zoom:1;
    11 }
    12 <div class="clearfix" style='background:red;'>
    13      <img style="float:left;" src="http://img02.taobaocdn.com/bao/uploaded/i3/T1WTxlFftaXXb1upjX.jpg_290x290.jpg"/>
    14 </div>

    这种方式比较新颖,也有很多人使用这种方式

  • 相关阅读:
    poj1228 Grandpa's Estate
    poj1113 Wall
    poj2826 An Easy Problem?!
    poj1269 Intersecting Lines
    poj3304 Segments
    BZOJ3832Rally题解
    BZOJ2802Warehouse Store题解
    李超树详解
    BZOJ4241历史研究题解
    洛谷2050 BZOJ2897美食节题解
  • 原文地址:https://www.cnblogs.com/f2er/p/clearfix.html
Copyright © 2011-2022 走看看