CSS | 块格式化上下文(BFC)

前言

本文内容隶属于定位方式中的常规流,是块格式化上下文的详细内容(以下简称为BFC)

块格式化上下文(Block Formatting Context)

什么是BFC

BFC即Block Formatting Content “块级格式化上下文”
它是页面的一块渲染区域,有一套渲染规则,决定了子元素如何布局,以及和其他元素之间的关系和作用。
创建新BFC的盒子是独立布局的,盒子里的样式不会影响到外面的元素。

生成BFC的元素类型

会生成新BFC的元素有:

  1. 根元素,即HTML元素
  2. float的值不为none
  3. overflow的值部位visible
  4. display的值为inline-block、table-cell、table-caption
  5. position的值为absolute或者fixed

生成BFC与脱流

流外元素(浮动元素,绝对定位元素等)生成新BFC的同时,会脱离常规流。
而inline-block,overflow不为visible的元素会生成新BFC,但并不脱离常规流。

BFC的规则

垂直放置

  • 在一个BFC中,从包含块的内容块(content)顶部开始, 盒在垂直方向一个接一个地放置,如下图所示:
    在这里插入图片描述

margin折叠(垂直外边距合并)

  • 同一BFC,相邻块级盒之间的垂直外边距会合并,取其中最大的margin值为相邻外边距。
    如下所示:
      <div class="top"></div>
      <div class="bottom"></div>
	    div{
            width: 100px;
            height: 100px;
            border:solid royalblue
        }

        .top{
            margin-bottom: 30px;
        }

        .bottom{
            margin-top: 100px;
        }

在这里插入图片描述

紧挨内容块

  • 在一个BFC中,每个盒的左外边距边缘,挨着包含块的左内容块边界(若direction为rtl,则从右向左格式化,右外边界挨着)。
    以ltr方向为例,如下所示:
    在这里插入图片描述
存在浮动时
  1. 当存在浮动时,规则依然适用。前盒浮动时,后盒(last)上移,仍紧挨包含块左内容块边界。
    如下图所示
    在这里插入图片描述
  2. 不过,若last盒建立了一个新BFC,则last盒的布局会考虑浮动前盒。
    如下图所示:
    我们通过修改overflow属性使得后盒建立了新的BFC,因为考虑浮动的前盒,其并没有覆盖在浮动盒上,其宽度因浮动盒占据空间而变窄。
    在这里插入图片描述
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值