什么是BFC
2020/11/4 9:50:14 阅读:2857
发布者:2857
在一个Web页面的CSS渲染中,块级格式化上下文 (Block Fromatting Context)是按照块级盒子布局的。
W3C对BFC的定义如下:
浮动元素和绝对定位元素,非块级盒子的块级容器(例如 inline-blocks, table-cells, 和 table-captions),以及overflow值不为“visiable”的块级盒子,都会为他们的内容创建新的BFC(块级格式上下文)。
为了便于理解,我们换一种方式来重新定义BFC。一个HTML元素要创建BFC,则满足下列的任意一个或多个条件即可:
-
html 根元素
-
浮动元素:float 除 none 以外的值
-
绝对定位元素:position的值不是static或者relative。 而是position (absolute、fixed)
-
display 为 inline-block、table-cell、flex、table-caption或者inline-flex
-
overflow 除了 visible 以外的值 (hidden、auto、scroll)
虽然添加上述的任意一条都能创建BFC,但会有一些副作用:
-
display: table 可能引发响应性问题
-
overflow: scroll 可能产生多余的滚动条
-
float: left 将把元素移至左侧,并被其他元素环绕
-
overflow: hidden 将裁切溢出元素
BFC是一个独立的布局环境,其中的元素布局是不受外界的影响,并且在一个BFC中,块盒与行盒(行盒由一行中所有的内联元素所组成)都会垂直的沿着其父元素的边框排列。
BFC布局规则:
-
内部的Box会在垂直方向,一个接一个地放置。
-
Box垂直方向的距离由margin决定。属于同一个BFC的两个相邻Box的margin会发生重叠
-
每个元素的margin box的左边, 与包含块border box的左边相接触(对于从左往右的格式化,否则相反)。即使存在浮动也是如此。BFC的区域不会与float box重叠。
-
BFC就是页面上的一个隔离的独立容器,容器里面的子元素不会影响到外面的元素。反之也如此。
-
计算BFC的高度时,浮动元素也参与计算