BFC是什么?其实就是创建一个独立的盒子,盒子里面的子元素不会影响到外面元素,反之亦然

文章目录BFCBox:css布局的基本单位Formatting contextBFC的布局规则(渲染规则/约束规则)BFC的生成(即一个块级格式化上下文由以下之一创建)BFC应用场景场景1-解决margin叠加问题场景2-用于布局场景3-用于清除浮动,计算BFC高度总结BFC原理(渲染规则)如何创建BFCBFC应用场景参考BFC在解释什么是BFC之前,我们需要先知道Box、Formattin...
摘要由CSDN通过智能技术生成

BFC

在解释什么是BFC之前,我们需要先知道Box、Formatting Context的概念。

Box:css布局的基本单位

Box是 CSS 布局的对象和基本单位, 直观点来说,就是一个页面是由很多个 Box 组成的。元素的类型和 display 属性,决定了这个 Box 的类型。 不同类型的 Box, 会参与不同的 Formatting Context(一个决定如何渲染文档的容器)

Box:

Box即盒子模型;

  • block-level box即块级元素

display属性为block, list-item, table的元素,会生成block-level box;并且参与 block fomatting context;

  • inline-level box即行内元素

display 属性为 inline, inline-block, inline-table的元素,会生成inline-level box。并且参与 inline formatting context;

Formatting context

Formatting context是W3C CSS2.1规范中的一个概念。它是页面中的一块渲染区域,并且有一套渲染规则,它决定了其子元素将如何定位,以及和其他元素的关系、相互作用。最常见的 Formatting context 有 Block fomatting context (简称BFC)和 Inline formatting context(简称IFC)。

CSS2.1 中只有BFC和IFC, CSS3中还增加了G(grid)FC和F(flex)FC。

BFC(块级格式化上下文)是一个独立的布局环境,其中的元素布局是不受外界的影响,并且在一个BFC中,块盒与行盒(行盒由一行中所有的内联元素所组成)都会垂直的沿着其父元素的边框排列。

BFC的布局规则(渲染规则/约束规则)

  1. 内部的Box会在垂直方向上一个接一个的放置。(在一个BFC中,块盒与行盒(行盒由一行中所有的内联元素所组成)都会垂直的沿着其父元素的边框排列)
  2. 垂直方向上的距离由margin决定。(完整的说法是:属于同一个BFC的两个相邻Box的margin会发生重叠(塌陷),与方向无关。)
  3. 每个元素的左外边距与包含块的左边界相接触(从左向右),即使浮动元素也是如此。(这说明BFC中子元素不会超出他的包含块,而position为absolute的元素可以超出他的包含块边界)
  4. BFC的区域不会与float的元素区域重叠
  5. 计算BFC的高度时,浮动子元素也参与计算
  6. BFC就是页面上的一个隔离的独立容器,容器里面的子元素不会影响到外面元素,反之亦然

BFC的生成(即一个块级格式化上下文由以下之一创建)

上文提到BFC是一块渲染区域,那这块渲染区域到底在哪,它又是有多大,这些由生成BFC的元素决定,CSS2.1中规定满足下列CSS声明之一的元素便会生成BFC。

  • 根元素或其它包含它的元素
  • float的值不为none
  • overflow的值不为visible
  • display的值为inline-block、table-cell、table-caption等

display:table也认为可以生成BFC,其实这里的主要原因在于Table会默认生成一个匿名的table-cell,正是这个匿名的table-cell生成了BFC

  • position的值为absolute或fixed
  • fieldset元素

以上的情况都可以创建BFC

BFC应用场景

场景1-解决margin叠加问题

场景2-用于布局

场景3-用于清除浮动,计算BFC高度

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width&#
  • 3
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值