【清除浮动】清除浮动的四种方法详解

列举不同的清除浮动的技巧,并指出他们各自适用的使用场景

首先要明白什么是浮动:父元素因为子元素浮动引起的内部高度为0

为父盒子设置一个boder,在父盒子内部放两个盒子一个big 一个small,在未给big和small设置浮动时,子盒子会默认撑开父盒子
在这里插入图片描述
给内部两个盒子加上float属性或者是开启定位的时候, 父盒子因为子盒子会脱离文档流且没设置高度而变成一条线,这时big和small已经产生了浮动了
在这里插入图片描述
清除浮动的方法具体有:

1. 额外标签法
在最后一个浮动标签后,新加一个标签,给其设置clear:both;
clear:both:本质就是闭合浮动, 就是让父盒子闭合出口和入口,不让子盒子出来
清除浮动的方法
如果我们清除了浮动,父元素自动检测子盒子最高的高度,然后与其同高。

优点:通俗易懂,方便
缺点:添加无意义标签,语义化差
适用场景:代码量小,不要求性能的时候

不建议使用

2. BFC方式

首先看下什么是BFC
BFC: 块级格式化上下文,它是指一个独立的块级渲染区域,只有Block-level BOX参与,该区域拥有一套渲染规则来约束块级盒子的布局,且与区域外部无关。 ( 浮动元素和绝对定位元素,非块级盒子的块级容器(例如 inline-blocks, table-cells, 和 table-captions),以及overflow值不为“visiable”的块级盒子,都会为他们的内容创建新的BFC(块级格式上下文)。 )
元素要创建BFC需要满足的条件(满足一下任意一个或多个条件即可):

  1. float的值不是none。
  2. position的值不是static或者relative。
  3. display的值是inline-block、table-cell、flex、table-caption或者inline-flex
  4. overflow的值不是visible

BFC是一个独立的布局环境,其中的元素布局是不受外界的影响,并且在一个BFC中,块盒与行盒(行盒由一行中所有的内联元素所组成)都会垂直的沿着其父元素的边框排列。

不同条件开启BFC的弊端:

  1. display: table 可能引发响应性问题
  2. overflow: scroll 可能产生多余的滚动条
  3. loat: left 将把元素移至左侧,并被其他元素环绕
  4. overflow: hidden 将裁切溢出元素

优点:简单,方便,可读性高
缺点:开启bfc会产生相应的副作用

3. after伪元素清除浮动(推荐使用)

  .clearfix:after{/*伪元素是行内元素 正常浏览器清除浮动方法*/
       content: "";
       display: block;
       height: 0;
       clear:both;
       visibility: hidden;
   }
   .clearfix{
       *zoom: 1;/*ie6清除浮动的方式 *号只有IE6-IE7执行,其他浏览器不执行*/
   }
<body>
       <div class="fahter clearfix">
           <div class="big">big</div>
           <div class="small">small</div>
           <!--<div class="clear">额外标签法</div>-->
       </div>
       <div class="footer"></div>
   </body>

优点:符合闭合浮动思想,结构语义化正确
缺点:ie6-7不支持伪元素:after,使用zoom:1触发hasLayout.
推荐使用

4. before和after双伪元素清除浮动

   .clearfix:after,.clearfix:before{
           content: "";
           display: table;
       }
       .clearfix:after{
           clear: both;
       }
       .clearfix{
           *zoom: 1;
       }
<div class="fahter clearfix">
           <div class="big">big</div>
           <div class="small">small</div>
       </div>
       <div class="footer"></div>

优点:代码更简洁
缺点:用zoom:1触发hasLayout.

  • 6
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

会飞的小黑狗

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值