BFCBFC的全称是BlockFormatContent--block-levelformattingcontext。浮动、绝对定位元素(absolute、fixed定位)、块容器(显示属性为inline-block、table、table-cell、table、table-caption)、带overflow属性(属性值不可见并继承)的块显示为块的-level元素将在其中建立一个新的块级格式化上下文。BFC的作用:当元素处于同一个块级格式化上下文时,它们会遵循相同的规则/格式(例如,父子元素的外边距会重叠),但当它们处于不同的块级格式化时contexts,元素的排列会遵循规则/格式不同(不同BFC中父子元素的边距不会重叠--->父元素在一个BFC中,父元素内部创建了一个新的BFC)生成BFC:setfloatsetabsolutepositioningsetdisplayattribute设置inline-block,table,table-cell,table-caption的overflow属性为hidden,auto,scroll(不能设置为visible和inherit)BFC的实际应用:父子元素的margin-top和margin-bottom会折叠起来,在父元素内部生成一个新的BFC,可以防止父子元素的margin-top和margin-bottom重叠。内部文本不包围浮动元素。使用浮动元素可能会导致父容器的高度为0,在父容器内部生成一个新的BFC可以解决这个问题。总结:在块级元素上设置某些属性会在其内部生成一个新的BFC(BlockFormattingContext),同一个BFC中的元素将遵循相同的规则/格式。使用BFC可以解决以下问题:合并父子元素的上下外边距问题,文本包围浮动元素的问题,浮动子元素导致父元素高度为0的问题。
