BFC(Block Formatting Context)即“塊級格式化上下文”
IFC(Inline Formatting Context)即“行內格式化上下文”。
常規流(也稱標準流、普通流)是一個文檔在被顯示時最常見的佈局形態。一個框在常規流中必須屬於一個格式化上下文,你可以把BFC想象成一個大箱子,箱子外邊的元素將不與箱子內的元素產生作用
BFC是W3C CSS 2.1 規範中的一個概念,它決定了元素如何對其內容進行定位,以及與其他元素的關係和相互作用。當涉及到可視化佈局的時候,Block Formatting Context提供了一個環境,HTML元素在這個環境中按照一定規則進行佈局。一個環境中的元素不會影響到其它環境中的佈局。比如浮動元素會形成BFC,浮動元素內部子元素的主要受該浮動元素影響,兩個浮動元素之間是互不影響的。也可以說BFC就是一個作用範圍。
在普通流中的 Box(框) 屬於一種 formatting context(格式化上下文) ,類型可以是 block ,或者是 inline ,但不能同時屬於這兩者。並且, Block boxes(塊框) 在 block formatting context(塊格式化上下文) 裏格式化, Inline boxes(塊內框) 則在 Inline Formatting Context(行內格式化上下文) 裏格式化。
什麼情況下產生BFC
當一個HTML元素滿足下麪條件的任何一點,都可以產生Block Formatting Context:
a、float的值不爲none
b、overflow的值不爲visible
c、display的值爲table-cell, table-caption, inline-block中的任何一個
d、position的值不爲relative和static
CSS3觸發BFC方式則可以簡單描述爲:在元素定位非static,relative的情況下觸發,float也是一種定位方式。
BFC的作用與特點
不和浮動元素重疊,清除外部浮動,阻止浮動元素覆蓋
如果一個浮動元素後面跟着一個非浮動的元素,那麼就會產生一個重疊的現象。常規流(也稱標準流、普通流)是一個文檔在被顯示時最常見的佈局形態,當float不爲none時,position爲absolute、fixed時元素將脫離標準流。