Formatting context( 格式化上下文)是W3C CSS2.1规范中的一个概念。它是页面中的一块渲染区域,并且有一套渲染规则,它决定了其子元素将如何定位,以及和其他子元素的关系和相互作用。
BFC( Block Formatting Contexts)块级格式化上下文,属于格式化上下文中的其中一种规范。具有BFC特性的元素可以看作是隔离了的独立容器,容器里面的元素不会在布局上影响到外面的元素,并且BFC具有普通容器所没有的一些特性。
即触发BFC规范的元素,可以形成一个独立的容器,不受外界的影响,从而解决一些布局问题。
能触发BFC的样式:
float浮动元素:除了none以外的值
position绝对定位:( absolute、fixed)
display为inline-block、table-cells、flex
overflow除了visible以外的值( 即hidden、auto、scroll )
BFC的应用:
解决margin叠加问题: 如两个div都分别设置margin-bottom、margin-top,但是不会出现叠加,这时,可以给这两个div都各自再外嵌套一个父div,然后设置两个父div的display属性等
解决margin传递问题:如两嵌套div,给div2设置margin时,会连同父div一起往下移动,这时给父div设置overflow:hidden等
解决浮动问题:如子div浮动后,父div没有设置高度的话效果是父div为一条线,此时可以给父div设置可以触发BFC的样式display:inline-block;等,
解决覆盖问题:如兄弟div,兄div设置float:left; 而弟div不设置的话则会往上挪,此时需要给弟div设置overflow:hidden;则可实现弟div在兄div的右边排列,即一列固定一列自适应,通常用于做管理后台。