美文网首页
BFC 原理

BFC 原理

作者: hunter97 | 来源:发表于2018-08-15 19:30 被阅读0次

            BFC全称是Block Formatting Context,即块格式化上下文,是 W3C CSS2.1 规范中的一个概念。

            简单理解就是如果子元素浮动无法支撑起父元素,就会使页面布局混乱。而BFC 属于定位方案的普通流。具有 BFC 特性的元素可以看作是隔离了的独立容器,容器里面的元素不会在布局上影响到外面的元素,并且 BFC 具有普通容器所没有的一些特性。简单理解就是可以把具有 BFC 特性的元素一个大盒子,无论箱子里面的元素怎么定位、改变大小,都不会影响到外界的布局、排版。

        首先介绍一下CSS中常见定位的方案:

        1.普通流 (normal):在普通流中,元素按照其在 HTML 中的先后位置至上而下布局,在这个过程中,行内元素水平排列,直到当行被占满然后换行,块级元素则会被渲染为完整的一个新行,除非另外指定,否则所有元素默认都是普通流定位,也可以说,普通流中元素的位置由该元素在 HTML 文档中的位置决定。

        2.浮动 (float):在浮动布局中,元素首先按照普通流的位置出现,然后根据浮动的方向尽可能的向左边或右边偏移,其效果与印刷排版中的文本环绕相似。

        3.绝对定位 (absolute):相对于已定位的父元素,如果父元素没有定位,则相对与整个文档。在绝对定位布局中,元素会整体脱离普通流,因此绝对定位元素不会对其兄弟元素造成影响,而元素具体的位置由绝对定位的坐标决定。

        4.绝对定位 (fixed):元素的位置相对于浏览器窗口是固定位置。即使窗口是滚动的它也不会移动。

        5.相对定位(relative):相对定位元素的定位是相对其正常位置。可以移动的相对定位元素的内容和相互重叠的元素,它原本所占的空间不会改变。

        只要元素满足下面任一条件即可触发 BFC 特性:

        body 根元素

        浮动元素:float 除 none 以外的值

        绝对定位元素:position (absolute、fixed)

        display 为 inline-block、table-cells、flex

        overflow 除了 visible 以外的值 (hidden、auto、scroll)

    相关文章

      网友评论

          本文标题:BFC 原理

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