关于overflow:auto | hidden清除浮动的一些问题

如果一个块元素没有给它设置高度,那么它的高度会被子元素的高度撑开,如下面这样:

HTML Code 
1
2
3
4
5
<div  class= "box1" >
       <div  class= "box2" >
      </div>
</div>

 CSS Code 
1
2
3
4
5
6
7
8
9
.box1 {
      background:#bbb;
}

.box2 {
      width:300px;
      height:200px;
      border:2px solid red;
}

效果:


box1的高度被box2撑开。

而如果我们给子元素加上浮动之后,它就脱离了文档流,而父元素的高度也将变为0,这时候如果想给父元素设置各种border属性用来包围子元素是实现不了的,就像下面:

 CSS Code 
1
2
3
4
5
6
7
8
9
10
11
.box1 {
    background:#bbb;
    border-bottom: 3px solid green;
}

.box2 {
    width:300px;
    height:200px;
    border:2px solid red;
    float: left;
}
效果:


可以看到父元素的高度没有被子元素撑开,这样box1的border-bottom属性就没有出现在box2的下面。

而此时如果我们想再让父元素的高度再被子元素撑开,就可以给父元素设置overflow:auto | hidden来清除浮动,因为设置了该属性后的元素将会自动扩展到它需要的大小以包围它里面浮动的子元素,效果如下:

 CSS Code 
1
2
3
4
.box1 {
     border-bottom::   2px solid green;
     overflow:auto;
}


再看一下box1的高度


可以看到box1的高度再次被box2撑开,这样border-bottom属性就能出现在box2下面了。


总结:当子元素用了浮动之后我们可以尝试给它的父元素加上overflow:auto | hidden来清除子元素的浮动效果,让父元素的高度可以适配子元素的高度。


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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值