美文网首页IT修真院-前端
简述BFC及其如何工作

简述BFC及其如何工作

作者: 爱猫先森 | 来源:发表于2017-10-07 19:53 被阅读0次

大家好,我是IT修真院上海分院第01期学员,一枚正直善良的web程序员。

今天给大家分享一下,修真院官网 CSS任务中可能会使用到的知识点:

BFC及其如何工作

一、背景介绍

首先我们知道CSS的基本单位是Box(盒子),一个html页面就是很多Box组成的。元素的类型和 display 属性,决定了这个 Box 的类型。 不同类型的 Box, 会参与不同的 Formatting Context(一个决定如何渲染文档的容器),因此Box内的元素会以不同的方式渲染。

block-level box:display 属性为 block, list-item, table 的元素,常见的块级盒子有div、p、ul、h1-h6...;

inline-level box:display 属性为 inline, inline-block, inline-table 的元素,常见的行内元素有a、span、img、imput...;

Formatting context:

Formatting context 是 W3C CSS2.1 规范中的一个概念。翻译为执行化上下文,它是页面中的一块渲染区域,并且有一套渲染规则,它决定了其子元素 将如何定位,以及和其他元素的关系和相互作用。

处于页面文档流中的盒子必定位于某一格式化上下文中,最常见的 Formatting context 有 Block fomatting context (简称BFC)和 Inline formatting context (简称IFC)。

BFC定义:

BFC(Block formatting context)直译为"块级格式化上下文"。它是一个独立的渲染区域,只有Block-level box参与, 它规定了内部的Block-level Box如何 布局,并且与这个区域外部毫不相干。

二、知识刨析

BFC布局规则

1、内部的Box会在垂直方向,一个接一个地放置。

2、Box垂直方向的距离由margin决定。属于同一个BFC的两个相邻Box的margin会发生重叠。

3、每个元素的margin box的左边,与容器块border box的左边相接触(对于从左往右的格式化,否则相反)。即使存在浮动也是如此。

4、BFC就是页面上的一个隔离的独立容器,容器里面的子元素不会影响到外面的元素,反之亦然。

5、计算BFC的高度时,考虑BFC所包含的所有元素,连浮动元素也参与计算。

6、浮动的BOX区域不叠加到BFC上。

哪些元素会生成BFC?

1、根元素

2、float属性不为none

3、position为absolute或fixed

4、display为inline-block, table-cell, table-caption, flex, inline-flex

5、overflow不为visible

三、常见问题

MAGIN重叠问题?

创建了新的BFC的元素(例如浮动元素或者'overflow'值为'visible'以外的元素)与它的子元素的外边距不会折叠

浮动元素不与任何元素的外边距产生折叠(包括其父元素和子元素)

绝对定位元素不与任何元素的外边距产生折叠

inline-block元素不与任何元素的外边距产生折叠

一个常规文档流元素的margin-bottom与它下一个常规文档流的兄弟元素的margin-top会产生折叠,除非它们之间存在间隙(clearance)。

一个 'height' 为 'auto' 并且 'min-height' 为 '0'的常规文档流元素的 margin-bottom 会与其最后一个常规文档流子元素的 margin-bottom 折叠,条件为父元素不包含 padding 和 border ,子元素的 margin-bottom 不与包含 clearance 的 margin-top 折叠。

一个不包含border-top、border-bottom、padding-top、padding-bottom的常规文档流元素,并且其 'height' 为 0 或 'auto', 'min-height' 为 '0',其里面也不包含行盒(line box),其自身的 margin-top 和 margin-bottom 会折叠。

四、扩展思考

run-in box

FFC自适应格式化上下文、GFC网格布局格式化上下文

五、参考文献

http://www.cnblogs.com/lhb25/p/inside-block-formatting-ontext.html

六、ppt/视频链接

视频:https://pan.baidu.com/s/1o8fw2AQ 密码:jz2h

PPT:https://ptteng.github.io/PPT/PPT/css-15-BFC.YT.html#/

技能树.IT修真院

“我们相信人人都可以成为一个工程师,现在开始,找个师兄,带你入门,掌控自己学习的节奏,学习的路上不再迷茫”。

这里是技能树.IT修真院,成千上万的师兄在这里找到了自己的学习路线,学习透明化,成长可见化,师兄1对1免费指导。快来与我一起学习吧 !

鸣谢!

感谢大家的阅读!

相关文章

  • 简述BFC及其如何工作

    大家好,我是IT修真院上海分院第01期学员,一枚正直善良的web程序员。 今天给大家分享一下,修真院官网 CSS任...

  • BFC及其如何工作

    大家好,我是IT修真院郑州分院,一枚正直、纯洁、善良的web程序员。 今天给大家分享一下,修真院官网 CSS任务中...

  • css

    描述BFC(块格式化上下文)及其工作原理。 BFC 即 Block Formatting Contexts (块级...

  • 请描述 BFC及其如何工作

    大家好,我是IT修真院郑州分院第七期的学员冯亚超,一枚正直纯洁善良的WEB程序员 今天给大家分享一下,margin...

  • 请描述BFC、及其如何工作

    1.背景介绍 BFC全称是Block Formatting Context,是CSS2.1规范定义的,关于CSS渲...

  • 简述BFC

    一、是什么? BFC(Block Formatting Context)直译为“块级格式化范围”。 可以把BFC理...

  • BFC简述

    什么是BFC 在一个Web页面的CSS渲染中,块级格式化上下文 (Block Fromatting Context...

  • BFC及其工作方式

    大家好,我是IT修真院成都分院第一期的学员常开洋,一枚正直纯洁善良的web前端程序员 今天给大家分享一下,修真院官...

  • BFC及其工作方式

    1.背景介绍 在解释 BFC 是什么之前,需要先介绍 Box、Formatting Context的概念。 Box...

  • CSS BFC和CSS hack

    简述CSS BFC和CSS hack BFC BFC定义:浮动元素和绝对定位元素,非块级盒子的块级容器(例如inl...

网友评论

    本文标题:简述BFC及其如何工作

    本文链接:https://www.haomeiwen.com/subject/ndcsyxtx.html