塊元素(block)的特色:html
內聯元素(inline)的特色: ide
那麼什麼是bfc呢,翻譯一下叫Block Formatting Context,Block就是塊級元素,Formatting Context是一個抽象的概念,它指的是頁面中一個渲染區域,並擁有一套渲染規則,它決定了在區域中的子元素如何定位和其餘元素的相互關係和做用,那麼顯然BFC的意思就是一個針對block元素的規則區域(越接觸代碼越以爲本身是在創造世界,那麼BFC就是一個爲block元素創造的世界,這個世界有一套規則在規定它的行爲)佈局
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <meta http-equiv="X-UA-Compatible" content="ie=edge"> <title>Document</title> </head> <style> html * { margin: 0; padding: 0; } body{ margin: 20px; border:1px solid } div { margin: 20px 0; height: 20px; background: red; } </style> <body> <div>我是block元素</div> <div>我是block元素</div> <div>我是block元素</div> <div>我是block元素</div> </body> </html>
讓咱們舉個栗子,一開始我沒法理解我什麼都沒作,怎麼頁面就呈現了BFC規則下的狀態,原來咱們的根元素html就是一個BFC區域,而body元素則做爲包含塊存在,如上就能夠很清晰的看到div在垂直方向上一個個排列,而且左邊界與包含塊body的左邊界相接觸,它們之間的margin重疊,只有20px;ui
如今來驗證一下html是否是一個BFC區域和規則的第三條,咱們將div設爲float:left;spa
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <meta http-equiv="X-UA-Compatible" content="ie=edge"> <title>Document</title> </head> <style> html * { margin: 0; padding: 0; } div { float: left; height: 20px; background: red; } </style> <body> <div>我是float元素</div> </body> </html>
能夠看出html的高度和浮動元素div的高度一致都是20px;而包含塊body做爲一個html-BFC中的普通block元素,高度爲0; 翻譯
那麼除了html根元素,咱們能夠手動設置某一個元素爲BFC麼,答案是確定的code
好,那我就順便再來複習一下這些屬性orm
網上舉例的BFC做用好比清除浮動、消除margin重疊、佈局等等我就很少贅述了,可是我總感受這只是利用BFC的特性作一些小事,殺雞用牛刀,事實上BFC並無具體的做用,它是一套渲染的規則,而理解這些規則能夠幫助咱們更好的使用CSS,對CSS有一種宏觀的掌控,而解決具體的問題就交給具體的屬性去作吧! htm
http://www.cnblogs.com/dojo-lzz/p/3999013.html#undefinedblog
https://www.jianshu.com/p/76484dff1cb5
http://www.360doc.com/content/16/0229/16/19812575_538294774.shtml
http://blog.163.com/hongshaoguoguo@126/blog/static/1804698120133584314892/
「即使是兇殘的野獸和恍惚的小鳥也不會落入相同的陷阱或羅網兩次。」 ——聖哲羅姆(古羅馬學者)