块元素(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/
“即使是凶残的野兽和恍惚的小鸟也不会落入相同的陷阱或罗网两次。” ——圣哲罗姆(古罗马学者)