henry-fun / blog

My world
4 stars 0 forks source link

BFC的探究之旅 #6

Open henry-fun opened 4 years ago

henry-fun commented 4 years ago

BFC 透析

1、引子

在数学中,有这样一个简单的题目:2 + 3 x 2= ?,相信聪明的你一眼即可看出答案为8,虽然数学计算是从左往右计算的,但因为乘法的等级更高,所以会先进行乘法运算,再进行加法运算,如果我们硬要先进行加法运算,我们可以加一对括号变为:(2 + 3) x 2,这里的括号成功的创造出了一个包裹块(block),让括号中的算术先行计算,避免受外部乘法的影响。在编程语言中,包裹块的概念也是核心基础概念,在 JavaScript 这们语言中,通过{}这样一对大括号就可以创造出一个“封闭”的块级作用域块(Block)被创造出来的目的就是为了进行包裹隔离*,这个设计理念在我们的各类学科及日常生活中也很常见,我会专门写一篇文章来聊聊“块”的知识。

2、BFC介绍

2.1 名词解读

BFC,英文全称为:Block Formatting Context,中文直译为:块格式化上下文,我们逐个分析下这三个单词,

  1. Block:块、封锁,块就是一个封闭的包裹体。
  2. Formatting:格式化、版式,结合block,意即:对里面的内容进行对应的格式化处理
  3. Context:上下文、环境,1和2是对孤立的”块“进行格式化处理,context意即:我们把这个格式化的孤立块投掷到上下文中。

对BFC进行了名词解析,相信你已经理解了什么是BFC,好吧,文章到此结束!啊?还没懂它在css中咋子用?好吧,那我们继续。

2.2 CSS中的BFC

BFC是web页面中 css 布局渲染的一个隔离块(Block),块中有对应的格式化渲染规则。在 css 中创建出 BFC 的方法如下(参考自MDN):

MDN 中列举了这么多创建 BFC 的方案,你需要一个个记住吗?其实你只要理解了BFC的概念,你就能理解为什么是这些方案能创建出 BFC,