BFC 触发规则: 解决高度塌陷,外边距重叠,用于左右布局,双飞翼布局

BFC 规则:

前提条件:⼀定是块元素 block

BFC就是⼀个⻚⾯上隔离的独⽴容器,容器⾥⾯的⼦元素不会影响到外⾯的元素

BFC的区域不会和浮动的元素重叠(浮动的元素不会覆盖bfc区域的元素)(应⽤:左右布局、双⻜翼布局)

计算BFC⾼度的时候浮动的元素也参与计算(⾼度塌陷问题)

属于同⼀个BFC的2个相邻的盒⼦会发⽣外边距重叠。(外边距重叠:⽗⼦关系 兄弟关系)

BFC的触发规则:

1. 根元素html就是⼀个BFC

2. 加了浮动也会触发BFC

3. 定位为绝对和固定的时候

4. overflow:hidden\auto\scroll

  eg:   overflow: scroll ; 制作一个固定滚动条

5. display为:inline-block、flex、table-cell、table-caption、inline-flex

所以要触发BFC来解决以下问题:

1.⾼度塌陷的问题父子关系:

eg:子盒子的元素样式 margin-top:150px;  会带动父亲。父亲写了 height: 200px; 也不生效了, 因为子盒子的元素比父盒子大了, 撑大父盒子

overflow:hidden解决

宽度一开始就知道, 布局做好, 也可以解决

添加后 

<style>
  .parent {
    border: 1px solid black;
    height: 200;
    /* 添加 overflow: hidden */
    overflow: hidden;
  }

  .child {
    margin: 150px 0;
    height: 100px;
    background-color: red;
  }
</style>
<div class="parent">
  <div class="child"></div>
</div>

2.用于左右布局、双⻜翼布局

左:

    <style>
        .left{
            width: 200px;
            height: 500px;
            background-color: red;
            float: left;
        }
        .right{
            height: 600px;
            background-color: pink;
            
            overflow: hidden;
        }
    </style>

<body>
    <div class="left">left</div>
    <div class="right">right</div>
</body>

 双:

    <style>
        .left,.right{
            width: 200px;
            height: 500px;
            background-color: red;
        }
        .center{
            height: 600px;
            background-color: pink;
            overflow: hidden;
        }
        .left{
            float: left;
        }
        .right{
            float: right;
        }
    </style>

<body>
    <div class="left">left</div>
    <div class="right">right</div>
    <div class="center">center</div>
</body>

3.外边距重叠问题:兄弟关系:

eg: 挨着的俩盒子 对盒子都设置了挨着的 margin值,会取一个大的值显示。重叠问题。用overflow:hidden解决

添加后

<style>
  .element1 {
    margin-top: 50px;
    height: 300px;
    background-color: pink;
    /* overflow: hidden; */
    overflow: hidden;
  }
  .element2 {
    margin-top: 50px;
    height: 100px;
    background-color: skyblue;
  }
</style>
<div class="element1">
  <div class="element2">Element 2</div>
</div>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值