栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > Web开发 > Html/CSS > CSS教程

CSS清除浮动的方法详解

CSS教程 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

清除浮动方法
方法一:使用带clear属性的空元素

在浮动元素后使用一个空元素如,并在CSS中赋予.clear{clear:both;}属性即可清理浮动。亦可使用


来进行清理。

CSS Code复制内容到剪贴板
  1. .news {   
  2.   background-color: gray;   
  3.   border: solid 1px black;   
  4.   }   
  5.   
  6. .news img {   
  7.   float: left;   
  8.   }   
  9.   
  10. .news p {   
  11.   float: rightright;   
  12.   }   
  13.   
  14. .clear {   
  15.   clear: both;   
  16.   }  
XML/HTML Code复制内容到剪贴板
  1.   


  2.   
  3. some text

      
  
  •   

    优点:简单,代码少,浏览器兼容性好。
    缺点:需要添加大量无语义的html元素,代码不够优雅,后期不容易维护。

    方法二:使用CSS的overflow属性

    给浮动元素的容器添加overflow:hidden;或overflow:auto;可以清除浮动,另外在 IE6 中还需要触发 hasLayout ,例如为父元素设置容器宽高或设置 zoom:1。在添加overflow属性后,浮动元素又回到了容器层,把容器高度撑起,达到了清理浮动的效果。

    CSS Code复制内容到剪贴板
    1. .news {   
    2.   background-color: gray;   
    3.   border: solid 1px black;   
    4.   overflow: hidden;   
    5.   *zoom: 1;   
    6.   }   
    7.   
    8. .news img {   
    9.   float: left;   
    10.   }   
    11.   
    12. .news p {   
    13.   float: rightright;   
    14.   }  
    XML/HTML Code复制内容到剪贴板
    1.   


    2.   
    3. some text

        
      

    方法三:给浮动的元素的容器添加浮动

    给浮动元素的容器也添加上浮动属性即可清除内部浮动,但是这样会使其整体浮动,影响布局,不推荐使用。

    方法四:使用邻接元素处理

    什么都不做,给浮动元素后面的元素添加clear属性。

    CSS Code复制内容到剪贴板
    1. .news {   
    2.   background-color: gray;   
    3.   border: solid 1px black;   
    4.   }   
    5.   
    6. .news img {   
    7.   float: left;   
    8.   }   
    9.   
    10. .news p {   
    11.   float: rightright;   
    12.   }   
    13.   
    14. .content{   
    15.   clear:both;   
    16.   }  
    XML/HTML Code复制内容到剪贴板
    1.   


    2.   
    3. some text

        
    4. ***
      
  •   
  • 注意这里的div.content有内容。

    方法五:使用CSS的:after伪元素

    结合 :after 伪元素(注意这不是伪类,而是伪元素,代表一个元素之后最近的元素)和 IEhack ,可以完美兼容当前主流的各大浏览器,这里的 IEhack 指的是触发 hasLayout。
    给浮动元素的容器添加一个clearfix的class,然后给这个class添加一个:after伪元素实现元素末尾添加一个看不见的块元素(Block element)清理浮动。

    CSS Code复制内容到剪贴板
    1. .news {   
    2.   background-color: gray;   
    3.   border: solid 1px black;   
    4.   }   
    5.   
    6. .news img {   
    7.   float: left;   
    8.   }   
    9.   
    10. .news p {   
    11.   float: rightright;   
    12.   }   
    13.   
    14. .clearfix:after{   
    15.   content: "020";    
    16.   display: block;    
    17.   height: 0;    
    18.   clear: both;    
    19.   visibility: hidden;     
    20.   }   
    21.   
    22. .clearfix {   
    23.       
    24.   zoom: 1;    
    25.   }  
    XML/HTML Code复制内容到剪贴板
    1.   


    2.   
    3. some text

        
    4.   

    通过CSS伪元素在容器的内部元素最后添加了一个看不见的空格"020"或点".",并且赋予clear属性来清除浮动。需要注意的是为了IE6和IE7浏览器,要给clearfix这个class添加一条zoom:1;触发haslayout。

    总结
    通过上面的例子,我们不难发现清除浮动的方法可以分成两类:

    一是利用 clear 属性,包括在浮动元素末尾添加一个带有 clear: both 属性的空 div 来闭合元素,其实利用 :after 伪元素的方法也是在元素末尾添加一个内容为一个点并带有 clear: both 属性的元素实现的。

    二是触发浮动元素父元素的 BFC (Block Formatting Contexts, 块级格式化上下文),使到该父元素可以包含浮动元素,关于这一点。

    在网页主要布局时使用:after伪元素方法并作为主要清理浮动方式;在小模块如ul里使用overflow:hidden;(留意可能产生的隐藏溢出元素问题);如果本身就是浮动元素则可自动清除内部浮动,无需格外处理;正文中使用邻接元素清理之前的浮动。

    最后可以使用相对完美的:after伪元素方法清理浮动,文档结构更加清晰。

    后记:清除浮动 or 闭合浮动?
    在网页布局中我们会经常用到浮动,有了它我们可以更容易地实现我们想要的效果,但浮动过后往往会留下一些隐患。这时,我们通常会做一件事清除浮动,但清除浮动也会经常留下隐患,如下代码:

    CSS Code复制内容到剪贴板
    1.   
    2.   
    3.   
    4.        
    5.     document   
    6.        
    7.         #main{   
    8.             border: 1px solid #000;   
    9.         }   
    10.         #left{   
    11.             float: left;   
    12.             width: 100px;   
    13.             height: 100px;   
    14.             background-color: #f00;   
    15.         }   
    16.         #right{   
    17.             float: left;   
    18.             width: 100px;   
    19.             height: 100px;   
    20.             background-color: #0f0;   
    21.         }   
    22.        
    23.   
    24.   
    25.     "main">   
    26.         "left">   
    27.         "right">   
    28.        
    29.   
    30.   

    效果图如下:
    2016530112336907.jpg (316×320)

    虽然foot中使用clear:both清除浮动,但是main的高度无法自适应子元素的高度,导致塌陷(箭头所指)。

    下面介绍闭合浮动,顾名思义,就是使浮动元素闭合,清除浮动带来的影响。目前较常用的清除浮动的方法为clearfix。具体就是,不用在foot中添加clear:both,插入如下一行css:

    CSS Code复制内容到剪贴板
    1. #main:after{   
    2.             content: '.';   
    3.             height: 0;   
    4.             visibility: hidden;   
    5.               
    6.             clear:both;   
    7.         }  
    转载请注明:文章转载自 www.mshxw.com
    本文地址:https://www.mshxw.com/it/215905.html

    CSS教程相关栏目本月热门文章

    我们一直用心在做
    关于我们 文章归档 网站地图 联系我们

    版权所有 (c)2021-2022 MSHXW.COM

    ICP备案号:晋ICP备2021003244-6号