关于BFC的理解

1 篇文章 0 订阅

这个知识点真的很重要的,在网站布局会用到。

  • 什么是BFC(Block Formatting Context)?

BFC就是 块级格式化上下文,是一个独立的渲染区域,并且有一套独立的布局规则。

  • 什么条件下会创建BFC区域:

1.绝对定位和固定定位元素;
2.overflow不等于visible的块盒;
3.float不为none;
4.display 为 inline-block、table-cell等;
5.根元素。
不同的BFC区域,它们进行渲染时互不干扰,因为它们是独立的。
创建BFC的元素,隔绝了它内部和外部的联系,内部的渲染不会影响到外部

  • BFC具体规则:

    1.创建BFC的元素,它的自动高度需要计算浮动元素,避免高度坍塌;

举例说明:

<div class="container ">
        <div class="item"></div>
        <div class="item"></div>
        <div class="item"></div>
    </div>
    <style>
     .container{
            background: lightblue;
        }

    }

        .item {
            float: left;
            width: 200px;
            height: 200px;
            margin: 20px;
            background: red;
        }
    </style>

在这里插入图片描述
说明:这时我们看不到父元素的背景色,因为子元素是浮动的,父元素包裹不了子元素。若想将子元素包含其中,该如何操作?只需要为父元素创建BFC即可

<div class="container clearfix">
        <div class="item"></div>
        <div class="item"></div>
        <div class="item"></div>
    </div>
     .container{
            background: lightblue;
            overflow: hidden;  auto ;
        }

效果如下:
在这里插入图片描述

  1. 创建BFC的元素,它的边框盒不会与浮动元素重叠。(通俗讲就是可以看到浮动的元素了,会避开浮动流,不是BFC的话就不会避开)
  <div class="float"></div>
    <div class="container"></div>
    .float{
            width: 200px;
            height: 200px;
            margin: 20px;
            background: red;
            float: left;
        }

        .container{
            height: 500px;
            background: #008c8c;
        }
    </style>

效果如下:
在这里插入图片描述
说明:绿色的盒子是看不到浮动盒子的,所以他俩会发生重叠。如何避开呢?同样是创建BFC

 .float{
            width: 200px;
            height: 200px;
            margin: 20px;
            background: red;
            float: left;
        }

        .container{
            height: 500px;
            background: #008c8c;
            /* bfc */
            overflow: hidden;
        }
    </style>
      <div class="float"></div>
    <div class="container"></div>
    

在这里插入图片描述
说明:创建BFC后,它的边框盒不会与浮动元素重叠。

  1. 创建BFC的元素,不会和它的子元素进行外边距合并(不同BFC中的子元素的margin是不会合并的,只有同一个BFC中子元素的margin外边距会合并)。
 <div class="container">
        <div class="child"></div>
    </div>
     .container{
            background: #008c8c;
            height: 500px;
            margin-top: 30px;
        }
        .child{
            height: 100px;
            margin: 50px;
            background: red;
        }
    </style>

效果如下:发生了margin合并

在这里插入图片描述

  <div class="container">
        <div class="child"></div>
    </div>
     .container{
            background: #008c8c;
            height: 500px;
            margin-top: 30px;
            overflow: hidden;
        }
        .child{
            height: 100px;
            margin: 50px;
            background: red;
        }

在这里插入图片描述
说明:创建BFC的元素,不会和它的子元素进行外边距合并

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值