清除浮动的几种方法以及优缺点

清除浮动是面试时的高频考点,所以也必须要掌握

我们写一个例子,定义一个box父盒子,里面有两个子盒子,父盒子不给高度,里面的两个子盒子浮动

<div class="box">
    <div class="left"></div>
    <div class="right"></div>
  </div>
.box {
      width: 400px;
      border: 5px solid red;
    }
    .left {
      float: left;
      width: 200px;
      height: 200px;
      background-color: #ccc;
    }
    .right {
      float: right;
      width: 200px;
      height: 200px;
      background-color: lightgreen;
    }

因为父盒子没有高度,所以会出现一个塌陷的效果

 怎么解解决呢,来说一下方法,1.第一个清除浮动的方法,给父元素加一个固定高度

.box {
      width: 400px;
      height: 250px;
      border: 1px solid red;
    }

 效果

 这个方法都不用想太多,最简单了,没有兼容性问题,缺点嘛,内部元素高度不确定的情况下就不能使用了

2.第二个方法,添加新元素,我在子盒子最后添加一个div盒子

<div class="box">
    <div class="left"></div>
    <div class="right"></div>
    <div class="clear"></div>//添加了一个类名叫clear的div盒子
  </div>
.clear {
      clear: both;//清除浮动
    }

效果

 这个方法也简单,代码量少,没有兼容性问题,缺点就是需要添加无语义的html元素,代码不够优雅,也不利于后期维护

3.使用伪元素,给父盒子加伪元素

.box::after {
      display: table;
      content: '';
      clear: both
    }

效果

 照样可以实现,它仅用了css来实现,不容易出现怪问题,缺点嘛,就仅支持IE8以上和非IE浏览器

4.触发父元素BFC,如使用overflow:hidden

.box {
      overflow: hidden;
      width: 400px;
      /* height: 250px; */
      border: 1px solid red;
    }

效果

 这个方法也是仅用css来实现,代码少,浏览器支持好,但是,因为用的是overflow:hidden,可能会使内部本应该正常显示的元素被剪裁,所以这个方法,慎用

使用伪元素来清除浮动,是面试时必须要会手写的,即使它简单

 

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值