BFC是什么

FC

格式上下文,它定义框内部的元素渲染规则,比较抽象,好比markdown

FC像是一个大箱子,里面装有不少元素flex

箱子能够隔开里面的元素和外面的元素(因此外部并不会影响FC内部的渲染)spa

内部的规则能够是:如何定位,宽高计算,margin折叠等等code

不一样类型的框参与的FC类型不一样,好比块级框对应BFC行内框对应IFCorm

注意,并非说全部的框都会产生FC,而是符合特定条件才会产生,只有产生了对应的FC后才会应用对应渲染规则it

BFC规则

在块格式化上下文中io

每个元素左外边与包含块的左边相接触(对于从右到左的格式化,右外边接触右边)table

即便存在浮动也是如此(因此浮动元素正常会直接贴近它的包含块的左边,与普通元素重合)class

除非这个元素也建立了一个新的BFCimport

BFC特色

  1. 内部box在垂直方向,一个接一个的放置
  2. box的垂直方向由margin决定,属于同一个BFC的两个box间的margin会重叠
  3. BFC区域不会与float box重叠(可用于排版)
  4. BFC就是页面上的一个隔离的独立容器,容器里面的子元素不会影响到外面的元素。反之也如此
  5. 计算BFC的高度时,浮动元素也参与计算(不会浮动坍塌)

如何触发BFC

  1. 根元素
  2. float属性不为none
  3. positionabsolutefixed
  4. displayinline-block, flex, inline-flextabletable-celltable-caption
  5. overflow不为visible

这里提下,display: table,它自己不产生BFC,可是它会产生匿名框(包含display: table-cell的框),而这个匿名框产生BFC

相关文章
相关标签/搜索