清除浮动的几种常用方法

CSS中的浮动简单介绍

浮动是CSS中的一个属性float来实现的,通过设置属性值leftright来实现元素的浮动。

示例如下:

    div{float:left} /* css注释:设置div对象浮动靠左(left) */
    div{float:right} /* css注释:设置div对象浮动靠右(right) */ 

为什么要清除浮动

元素被设置浮动后,将脱离普通文档流,跟据内容的多少来占据位置的,自身会变为块级元素,当遇到边框、其他浮动元素、块级元素会停留下来。这时如果父元素未设置高度,而是由内容撑起来的,则会出现高度清零,浮动元素的下一个未浮动元素会占据浮动元素原有的位置,导致页面的塌陷,后果很严重。

清除浮动几种常见的操作方法

  1. 父级div定义overflow:hidden
<style type="text/css">
   .div1{
   background:#000080;
   overflow:hidden;/*解决代码*/
   }
   .div2{background:#800080;
   border:1px solid red;
   height:100px;
   margin-top:10px;width:98%
   }
   .left{float:left;width:20%;height:200px;background:#DDD}
   .right{float:right;width:30%;height:80px;background:#DDD}
   </style>
  <div class="div1">
  <div class="left">Left</div>
  <div class="right">Right</div>
  </div>
  <div class="div2">
  div2
  </div>
  1. 父级div定义伪类元素::after
<style type="text/css">
   .div1{background:#000080;border:1px solid red;}
   .div2{background:#800080;border:1px solid red;height:100px;margin-top:10px}
   .left{float:left;width:20%;height:200px;background:#DDD}
   .right{float:right;width:30%;height:80px;background:#DDD}
    /*清除浮动代码*/
   .clearfloat::after{display:block;clear:both;content:"";height:0}
   .clearfloat{zoom:1}
   </style>
  <div class="div1 clearfloat">
  <div class="left">Left</div>
  <div class="right">Right</div>
  </div>
  <div class="div2">
  div2
  </div>
  1. 给最后一个浮动的标签的兄弟标签加clear:both
<style type="text/css">
    .div1{background:#000080;border:1px solid red}
    .div2{background:#800080;border:1px solid red;height:100px;margin-top:10px}
   .left{float:left;width:20%;height:200px;background:#DDD}
    .right{float:right;width:30%;height:80px;background:#DDD}
    /*清除浮动代码*/
    .clearfloat{clear:both}
    </style>
  <div class="div1">
  <div class="left">Left</div>
  <div class="right">Right</div>
  <div class="clearfloat"></div>
  </div>
  <div class="div2">
  div2
  </div>
  1. 父级元素定义display:table
<style type="text/css">
    .div1{background:#000080; border:1px solid red; /*解决代码*/ width:98%; display:table; margin-bottom:10px;}
    .div2{background:#800080;border:1px solid red;height:100px;width:98%;}
    .left{float:left;width:20%;height:200px;background:#DDD}
    .right{float:right;width:30%;height:80px;background:#DDD}
    </style>
  <div class="div1">
  <div class="left">Left</div>
  <div class="right">Right</div>
  </div>
  <div class="div2">
  div2
  </div>
  1. 父级元素也一起浮动,不建议使用,因为还会父级元素后还会出现塌陷的问题
<style type="text/css">
  .div1{background:#000080;border:1px solid red;/*解决代码*/width:98%;margin-bottom:10px;float:left}
    .div2{background:#800080;border:1px solid red;height:100px;width:98%;/*解决代码*/clear:both}
    .left{float:left;width:20%;height:200px;background:#DDD}
   .right{float:right;width:30%;height:80px;background:#DDD}
   </style>
  <div class="div1">
  <div class="left">Left</div>
  <div class="right">Right</div>
  </div>
  <div class="div2">
  div2
  </div>
  1. 结尾处加br标签clear:both
<style type="text/css">
   .div1{background:#000080;border:1px solid red;margin-bottom:10px;zoom:1}
    .div2{background:#800080;border:1px solid red;height:100px}
    .left{float:left;width:20%;height:200px;background:#DDD}
    .right{float:right;width:30%;height:80px;background:#DDD}
    .clearfloat{clear:both}
    </style>
  <div class="div1">
  <div class="left">Left</div>
  <div class="right">Right</div>
  <br class="clearfloat" />
  </div>
  <div class="div2">
  div2
  </div>
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 浮动:float,常用的css属性,可以设置左浮动float:left;右浮动float:right;不浮动flo...
    好怪的怪兽阅读 10,140评论 2 6
  • 各种纯css图标 CSS3可以实现很多漂亮的图形,我收集了32种图形,在下面列出。直接用CSS3画出这些图形,要比...
    剑残阅读 13,287评论 0 8
  • 不会用代码框,所以看着有些乱套,,,,html部分 <!DOCTYPE html> 迅雷看看 ...
    这就是个帅气的名字阅读 5,497评论 0 0
  • 当margin的值为百分比形式时,为什么浏览器会根据父容器宽度得出计算值? 假如有一个父容器宽度400px,高度6...
    飘雪飞舞阅读 4,353评论 0 0
  • Ansible Role: java 添加jdk1.7版本 要求 此角色仅在RHEL及其衍生产品上运行。 测试环境...
    lework阅读 5,355评论 0 1