zoukankan      html  css  js  c++  java
  • 清除浮动

    内容来自这里

    1)添加额外标签

    <div class="warp" id="float1">
      <h2>添加额外标签</h2>
      <div class="main left">.main{float:left;}</div>
      <div class="side left">.side{float:right;}</div>
      <div style="clear:both;"></div>
    </div>
    <div class="footer">.footer</div>

    优点:通俗易懂,容易掌握
    缺点:可以想象通过此方法,会添加多少无意义的空标签,有违结构与表现的分离,在后期维护中将是噩梦,这是坚决不能忍受的,所以你看了这篇文章之后还是建议不要用了吧。

    2)使用 br标签和其自身的 html属性

    这个方法有些小众,br 有 clear=“all | left | right | none” 属性

    <div class="warp" id="float2">
    <h2>2)使用 br标签和其自身的 html属性</h2>
    <div class="main left">.main{float:left;}</div>
    <div class="side left">.side{float:right;}</div>
    <br clear="all" />
    </div>
    <div class="footer">.footer</div>

    优点:比空标签方式语义稍强,代码量较少
    缺点:同样有违结构与表现的分离,不推荐使用

    3)父元素设置 overflow:hidden

    通过设置父元素overflow值设置为hidden;在IE6中还需要触发 hasLayout ,例如 zoom:1;

     <div class="warp" id="float3" style="overflow:hidden; *zoom:1;">
    <h2>3)父元素设置 overflow </h2>
    <div class="main left">.main{float:left;}</div>
    <div class="side left">.side{float:right;}</div>
    </div>
    <div class="footer">.footer</div>

    优点:不存在结构和语义化问题,代码量极少
    缺点:内容增多时候容易造成不会自动换行导致内容被隐藏掉,无法显示需要溢出的元素;04年POPO就发现overflow:hidden会导致中键失效,这是我作为一个多标签浏览控所不能接受的。所以还是不要使用了

    4)父元素设置 overflow:auto 属性
    同样IE6需要触发hasLayout,演示和3差不多
    优点:不存在结构和语义化问题,代码量极少
    缺点:多个嵌套后,firefox某些情况会造成内容全选;IE中 mouseover 造成宽度改变时会出现最外层模块有滚动条等,firefox早期版本会无故产生focus等, 不要使用

    5)父元素也设置浮动
    优点:不存在结构和语义化问题,代码量极少
    缺点:使得与父元素相邻的元素的布局会受到影响,不可能一直浮动到body,不推荐使用

    6)父元素设置display:table
    优点:结构语义化完全正确,代码量极少
    缺点:盒模型属性已经改变,由此造成的一系列问题,得不偿失,不推荐使用

    7)使用:after 伪元素
    需要注意的是 :after是伪元素(Pseudo-Element),不是伪类(某些CSS手册里面称之为“伪对象”),很多清除浮动大全之类的文章都称之为伪类,不过csser要严谨一点,这是一种态度。
    由于IE6-7不支持:after,使用 zoom:1触发 hasLayout。

    推荐方法1:

    .clearfix:after {content:"200B"; display:block; height:0; clear:both; }
    .clearfix { *zoom:1; }

    推荐方法2:

    /* For modern browsers */
    .cf:before,.cf:after {
    content:"";
    display:table;
    }
    .cf:after { clear:both; }/* For IE 6/7 (trigger hasLayout) */
    .cf { zoom:1; }
    高否?富否?帅否? 否? 滚去学习!
  • 相关阅读:
    mysql:1153 Got a packet bigger than ‘max_allowed_packet’ bytes的解决方法
    阿里druid数据源配置及数据库密码加密
    使用Druid数据库连接池,配置ConfigFilter对数据库密码加密
    java 反射机制 Class对象在.class字节码中 jvm加载类的时机
    java单例 方式对比 防止序列化/反射攻击 volatile防止指令重排优化
    java httprequest编码/解码
    c struct pointer cast and object oriented
    c struct pointer cast and "object oriented"
    java线程的生命周期(状态:new start wait sleep stop yield)
    java 线程interupt stop(dep)
  • 原文地址:https://www.cnblogs.com/baixc/p/3483375.html
Copyright © 2011-2022 走看看