BFC的理解

前段面试总会考察这么个知识点,就是BFC,我自己也经常懵逼,这是个啥呀,完全不知道,但是呢,其实这就是个简写的概念,名字比较唬人而已,今天,我们就来深入研究下,揭开它的伪装。

 

bfc=> block formating context 块级格式化上下文

这个名字让你很迷惑,是不是,其实用通俗的语言来说的话,就是建立一个与外界毫不相干的盒子,不受外界影响,也不影响外界。

比如,1,我们经常碰到的,两个盒子按顺序从上到下排列,比如A,B,两个都设置的外面局margin:20px;

此时,A,B之间的间隙就不是我们理解的40px,而是依然是20px,这就是css里面的边距重叠,会以较大的边距为准,而不会叠加

2,子元素浮动,父元素高度塌陷,

 

   <div class="father">
      <div class="d3">
      </div>
      <div class="d4"></div>
    </div>

样式:
.father {
        background-color: yellow;
        padding: 10px;
        /* float: left;  */
        /* overflow: scroll; */
        /* display: inline-block; */
        /* position: absolute; */
        display: flex;
        /* 解决盒子高度塌陷的问题,就需要使用到bfc,正好,1,给元素设置浮动就能形成bfc 
        通过别人的总结,主要是6大类情况会形成bfc
        1,overfollow不会visible
        2,浮动元素
        3,绝对定位以及固定定位元素
        4,设置为行内块的元素 也就是inline-block
        5,设置为flex以及grid的元素
        
        
        */
        /* overflow: visible; */
      }
      .d3,d4 {
        padding: 10px;
        width: 100px;
        height: 100px;
        background-color: red;
        float: left;
      }

  

总结一下,其实在真实的开发中你或多或少都解决过这些问题,只是呢,你没意思到这是bfc的应用,就像现在用的非常多的flex布局,是吧,

一般如果面试中问到的话,可以说下下面产生bfc的几种属性

1,浮动元素

2,绝对定位和固定定位元素

3,overfollow不会visible的元素  这个visible就是默认值

4,行内块元素,也就是inline-block

5,flex以及grid的元素及其子元素。这里补充一句,当设置为flex布局之后,子元素的floatclearvertical-align属性将失效,这是不是就能解释为啥就能解决塌陷的问题了。

前端深似海,结果还喜欢搞一些概念来迷惑大家,借用一句话来形容就是,你这糟老头子,坏的很。

 

posted @ 2020-11-22 16:09  yang_nick  阅读(359)  评论(0编辑  收藏  举报