美文网首页IT修真院-前端
BFC(BLOCK FORMATTING CONTEXT)

BFC(BLOCK FORMATTING CONTEXT)

作者: 茶纸团 | 来源:发表于2017-08-25 21:07 被阅读0次

    大家好,我是IT修真院北京分院第23期的学员郭婷婷,一枚正直纯洁善良的WEB前端程序员。

    今天给大家分享一下,修真院官网CSS任务7中涉及的关于RGBA和OPACITY的透明效果有何不同以及DISPLAY:NONE和VISIBILITY:HIDDEN的区别。

    小课堂【北京第213期】

    分享人:郭婷婷

    1.背景介绍

    Boxes in the normal flow belong to a formatting context, which may be block or inline, but not both simultaneously. Block-level boxes participate in a block formatting context. Inline-level boxes participate in an inline formatting context.

    2.知识剖析

    BLOCK FORMATTING CONTEXTS

    浮动元素、绝对定位元素,不是块级盒的块级包含块(比如inline-block、table-cell、table-capation)和overflow值不为visible的块级盒子为它们的内容建立了一个新的块级排版上下文。

    在一个块级排版上下文中,盒子是从包含块顶部开始,垂直的一个接一个的排列的,相邻两个盒子之间的垂直的间距是被margin属性所决定的,在一个块级排版上下文中相邻的两个块级盒之间的垂直margin是折叠的。 (参与BFC的布局的只有普通流normal flow中的块级盒,而float、position值不为relative\static的元素是脱离BFC这一布局环境的,不参与BFC的布局)

    在一个块级排版上下文中,每个盒子的左外边是触碰到包含块的左边的(对于从右向左的排版,则相反),即使在有浮动元素参与的情况下也是如此(即使一个盒子的行盒是因为浮动而收缩了的), 除非这个盒子新建了一个块级排版上下文(在某些情况下这个盒子自身会因为floats而变窄)。

    BFC布局规则

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

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

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

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

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

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

    3.常见问题

    3.1 如何触发BFC?

    3.2 BFC的作用

    4 解决方案

    4.1 触发BFC

    根元素

    float属性不为none

    position为absolute或fixed

    display为inline-blcok、table-cell、table-caption、flex、inline-flex

    overflow不为visible

    4.2 BFC的作用

    自适应两栏布局

    清除内部浮动

    防止垂直 margin 重叠。

    5.编码实战

    6.扩展思考

    不同条件触发BFC产生的效果是否一样?

    7.参考文献

    参考1:前端精选文摘:BFC 神奇背后的原理

    参考2:什么是BFC

    8 更多讨论

    1、body是否可以触发BFC

    body可以触发,只要使用触发条件。

    2、什么是IE的haslayout

    hasLayout可以简单看作是IE5.5/6/7中的BFC(Block Formatting Context)。也就是一个元素要么自己对自身内容进行组织和尺寸计算(即可通过width/height来设置自身的宽高),要么由其containing block来组织和尺寸计算。而IFC(即没有拥有布局)而言,则是元素无法对自身内容进行组织和尺寸计算,而是由自身内容来决定其尺寸(即仅能通过line-height设置内容行距,通过行距来支撑元素的高度;也无法通过width设置元素宽度,仅能由内容来决定而已)

    3、两个独立的BFC垂直margin会重叠吗?

    不会,因为是两个独立容器,不会影响对方。

    鸣谢

    感谢大家观看

    BY : 郭婷婷

    PPT链接:https://ptteng.github.io/PPT/PPT/css-15-bfc.html#/3

    视频链接:https://pan.baidu.com/s/1jI5QGPS  密码: 5qbp

    --------------------------------------------------------------------------------------------------------------------

    技能树.IT修真院

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

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

    猛戳这里

    相关文章

      网友评论

        本文标题:BFC(BLOCK FORMATTING CONTEXT)

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