zoukankan      html  css  js  c++  java
  • clearfix 清除浮动的问题

    今天看一篇博文,发现其实有很多方法实现清除浮动,各有利弊

    1. 采用伪类:after进行后续空制的高度位零的伪类层清除
    2. 采用CSS overflow:auto的方式撑高
    3. 采用CSS overflow:hidden的方式产生怪异适应
    4. 采用display:table将对象变成table形式
    5. 采用div标签,以及css的clear属性
    6. 采用br标签,以及css的clear属性
    7. 采用br标签,以及其自身HTML的clear属性

      粗略的看,他们都能将问题解决;然而他们另外一方面又有着各自的利弊。(一一对应)

      1. 优点结构语义化完全正确,不会产生其余的怪异问题。 缺点复用方式不当容易造成代码量急剧增大。 建议最外层轻浮动时使用,或清晰模块化复用方式的人使用。
      2. 优点结构语义化完全正确,代码量极少。 缺点多个嵌套后,点击最外层的轻浮动框会遭成最外层至最内层内容全选(FF);或者在mouseover造成宽度改变时会出现最外层模块有滚动条(IE)。 建议内个模块使用,请勿嵌套
      3. 优点结构语义化完全正确,代码量极少。 缺点内容增多时候极易不会自动换行而内容被隐藏掉。 建议宽度固定时使用,请勿嵌套
      4. 优点结构语义化完全正确,代码量极少。 缺点盒模型属性已经改变,可想而知奇异事件自然多得你数都数不到。 建议如果你不想改Bug改死你的话,最好不要使用;不过可以作为alpha版本当中临时性的忽悠下测试。
      5. 优点代码量极少,复用性极高。 缺点完全不能完美的适应语义化,不利于改版以及需求变更。 建议初学者使用,可以让你快速的解决浮动问题。
      6. 优点语义化程度比第5种情况要更优;代码量极少,复用性极高。 缺点语义化依旧不完美,不利于改版以及需求变更。 建议初学者使用,可以让你快速的解决浮动问题。
      7. 优点语义化程度比第5、6种情况要更优;代码量最少,复用性极高。 缺点语义化依旧不完美,不利于改版以及需求变更。 建议引导初学者思维升级时使用,让其明白与其用classname来控制一种表现,倒不如回归到WEB1.0的时代的网页直接用html属性来控制表现,毕竟后者的代码量更少。

      最后,列举完毕。然而我想有必要和大家道歉,关于之前转载鬼的那篇文章;非常后悔的是当初改了鬼的标题将“最简单”改成了“最优”,以致于后面误导了很多的同学。所以重新写了一篇给大家分享。

      整理一下:

      <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
      <html xmlns="http://www.w3.org/1999/xhtml">
      <head>
      <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
      <title>清楚浮动</title>
      <style>
      *{padding:0px; margin:0px;}
      ul{border:3px solid #396; margin-bottom:10px;}
      ul li{width:50px; height:50px; float:left; border:1px solid #00F; list-style:none; margin-right:10px;}
      
      /*
      ---------------------------------------------
      
      采用伪类:after进行后续空制的高度位零的伪类层清除
      ---------------------------------------------
      */
      .clearfix_after{zoom:1;}
      .clearfix_after:after{
          content:"";
          display:block;
          height:0;
          line-height:0;
          clear:both;
          visibility:hidden;
      }
      
      
      /*
      ---------------------------------------------
      
      采用CSS overflow:auto的方式撑高'
      缺点多个嵌套后,点击最外层的轻浮动框会遭成最外层至最内层内容全选(FF);或者在mouseover造成宽度改变时会出现最外层模块有滚动条(IE)。
      建议内个模块使用,请勿嵌套。
      ---------------------------------------------
      */
      .clearfix_overflowauto{
          overflow:auto;
          zoom:1;
      }
      
      
      
      /*
      ---------------------------------------------
      
      采用CSS overflow:hidden的方式产生怪异适应
      缺点内容增多时候极易不会自动换行而内容被隐藏掉。
      建议宽度固定时使用,请勿嵌套。
      ---------------------------------------------
      */
      .clearfix_overflowhidden{
          overflow:hidden;
          zoom:1;
      }
      
      
      /*
      ---------------------------------------------
      
      采用display:table将对象变成table形式应
      缺点盒模型属性已经改变,可想而知奇异事件自然多得你数都数不到。
      建议如果你不想改Bug改死你的话,最好不要使用;不过可以作为alpha版本当中临时性的忽悠下测试。
      ---------------------------------------------
      */
      .clearfix_table{
          display:table;
          zoom:1;    
      }
      /*采用div标签,以及css的clear属性*/
      .clearfix_divclear .clear{clear:both;}
      /*采用br标签,以及css的clear属性*/
      .clearfix_brclear br.clear{clear:both;}
      </style>
      </head>
      <body>
      <ul class="clearfix_after">
          clearfix_after
          <li></li>
          <li></li>
          <li></li>
          <li></li>
          <li></li>
      </ul>
      
      <ul class="clearfix_overflowauto">
          clearfix_overflowauto
          <li></li>
          <li></li>
          <li></li>
          <li></li>
          <li></li>
      </ul>
      <ul class="clearfix_overflowhidden">
          clearfix_overflowhidden
          <li></li>
          <li></li>
          <li></li>
          <li></li>
          <li></li>
      </ul>
      <ul class="clearfix_table">
          clearfix_table
          <li></li>
          <li></li>
          <li></li>
          <li></li>
          <li></li>
      </ul>
      <ul class="clearfix_divclear">
          clearfix_divclear
          <li></li>
          <li></li>
          <li></li>
          <li></li>
          <li></li>
          <div class="clear"></div>
      </ul>
      <ul class="clearfix_brclear">
          clearfix_brclear
          <li></li>
          <li></li>
          <li></li>
          <li></li>
          <li></li>
         <br  class="clear"/>
      </ul>
      <ul class="clearfix_brclear2">
          clearfix_brclear2
          <li></li>
          <li></li>
          <li></li>
          <li></li>
          <li></li>
         <br clear="all"/><!--采用br标签,以及其自身HTML的clear属性-->
      </ul>
      <ul>
          normal
          <li></li>
          <li></li>
          <li></li>
          <li></li>
          <li></li>
      </ul>
      </body>
  • 相关阅读:
    The Python Standard Library
    Python 中的round函数
    Python文件类型
    Python中import的用法
    Python Symbols 各种符号
    python 一行写多个语句
    免费SSL证书(https网站)申请,便宜SSL https证书申请
    元宇宙游戏Axie龙头axs分析
    OLE DB provider "SQLNCLI10" for linked server "x.x.x.x" returned message "No transaction is active.".
    The operation could not be performed because OLE DB provider "SQLNCLI10" for linked server "xxx.xxx.xxx.xxx" was unable to begin a distributed transaction.
  • 原文地址:https://www.cnblogs.com/hubing/p/3261414.html
Copyright © 2011-2022 走看看