盒子模型塌陷?什么是BFC?

目录

一、盒子模型塌陷的定义

二、解决方案:

1、方案一:

(1)、给父容器设置上边线。

(2)、给父元素设置上内边距 

(3).给父元素设置超出部分隐藏属性 

2、方案二:使用BFC

(1)、什么是BFC?

(2)、特性?

(3)、怎么使用(触发)BFC?

 (4)、BFC能解决的问题


一、盒子模型塌陷的定义

当子元素设置了外边距,就会导致父元素连带向下,就会导致盒子模型塌陷。

例:

<style>
        *{
            margin: 0;
            padding: 0;
        }
        .div1{
            width: 300px;
            height: 300px;
            background-color: pink;
        }
        .div2{
            width: 100px;
            height: 100px;
            background-color: green;
            margin-top: 20px;
        }
</style>

 <div class="div1">
     <div class="div2"></div>
 </div>

二、解决方案:

1、方案一:

(1)、给父容器设置上边线。

border-top: 1px saddlebrown solid;

.div1{
    width: 300px;
    height: 300px;
    background-color: pink;
    border-top: 1px saddlebrown solid;
}

(2)、给父元素设置上内边距 

 padding-top: 1px;

.div1{
    width: 300px;
    height: 300px;
    background-color: pink;
    padding: 1px;
}

(3).给父元素设置超出部分隐藏属性 

overflow: hidden

 .div1{
     width: 300px;
     height: 300px;
     background-color: pink;
     overflow: hidden;
  }

2、方案二:使用BFC

(1)、什么是BFC?

BFC全称是Block Formatting Context,意思就是块级格式化上下文。你可以把BFC看做一个容器,容器里边的元素不会影响到容器外部的元素。

(2)、特性?

  • BFC就是一个块级元素,块级元素会在垂直方向一个接一个的排列

  • BFC是一个独立的容器,内部元素不会影响容器外部的元素。

  • 属于同一个BFC的两个盒子,外边距margin会发生重叠,并且取最大外边距。

            .box{
                width: 400px;
                height: 200px;
                background-color: pink;
                overflow: hidden;
            }
            .box1{
                margin-bottom: 20px;  /* 下边距20 */
                width: 200px;
                height: 50px;
                background-color: rgb(192, 183, 202);
            }
            .box2{
                margin-top: 30px;  /* 上边距30 */
                width: 200px;
                height: 50px;
                background-color: rgb(192, 183, 202);
            }
    
    /* 两子元素上下间隔,实际为30px */
    
        <div class="box">
            <div class="box1"></div>
            <div class="box2"></div>
        </div>

(3)、怎么使用(触发)BFC?

  • overflow: hidden
     .div1{  // 父元素
         width: 300px;
         height: 300px;
         background-color: pink;
         overflow: hidden;  // 解决上述塌陷问题
      }
  • display: inline-block
  • position: absolute
  • position: fixed
  • display: table-cell

 (4)、BFC能解决的问题

  1. 解决当父级元素没有高度时,子级元素浮动会使父级元素高度塌陷的问题
            .continer{
                width: 900px;
                background: black;
                overflow: hidden;
            }
    
            .box1{
                height: 300px;
                width: 300px;
                background: red;
                float: left;
            }
    
            .box2{
                height: 300px;
                width: 300px;
                background: blue;
                float: left;
            }
    
        <div class="continer">
            <div class="box1"></div>
            <div class="box2"></div>
        </div>
    
  2. 解决子元素设置外边距,父盒子塌陷的问题
    // 如上述大标题一

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值