标签:
首先字面翻译,这三个字母分别代表什么,box,formatting, context,它决定了元素如何对其内容进行定位,以及与其他元素的关系和相互作用。
形象点就是说一种规范,规范什么呢?规范盒子内部元素不会影响到外部元素,或者和一种布局上的规范;不明白 ok,谈谈清除浮动的方法里面,有个叫overflow为hidden,他的原理是啥呢?就是BFC;那些元素会产生BFC呢,官方定义如下:
BFC的特性是啥呢?
但是这些特性有啥用啊?当然解决问题的了,解决啥问题呢?上面说了布局的问题,可能还有人不懂,来几个例子演示下
第一个例子:对应的第2个特性。
代码
<!DOCTYPE html> <html> <head lang="en"> <meta charset="UTF-8"> <style> .test{ overflow: hidden; } .div1{ width: 100px; height: 100px; background-color: black; margin-bottom: 10px; } .div2{ width: 100px; height: 100px; background-color: blue; margin-top: 10px; } </style> </head> <body> <div class="div1"></div> <div class="div2"></div> </body> </html>
按常态思考,间距应该20px,其实不然这里是10px,怎么解决呢,各自生成独立BFC,为两个div各加一个父级并且父级overflow为hidden
第二个例子;关于第4个特性,代码如下
<!DOCTYPE html> <html> <head lang="en"> <meta charset="UTF-8"> <style> .div1{ width: 100px; height: 100px; background-color: black; float: left; } .div2{ width: 100px; height: 100px; background-color: blue; } </style> </head> <body> <div class="div1"></div> <div class="div2"></div> </body> </html>
根据第三个特性,得到结果是两个元素重叠了,那么咋解决呢,ok,div2加上overflow为hidden,这个时候也就是说div2成为一个独立的BFC,于是又遵循第三定理一次排放,
但是注意这里如果继续为div2添加margin的话,那么页面上的效果是只有当margin-left大于100时候才有作用,且效果是margin-left的效果,也说明实质上这里可能不是真正的不重叠效果,原有那个位置还在那儿
最后一个定理就是我们常用的overflow清楚浮动的原理了,因为overflow为hidden此时div变成一个BFC,于是遵循BFC定理,BFC内部元素计算高度是把浮动元素计算进去的从而达到清除浮动效果
标签:
原文地址:http://www.cnblogs.com/lyz1991/p/5625279.html