BFC及其作用

一、什么是BFC 

BFC(block formatting context):简单来说,BFC 就是一种属性,这种属性会影响着元素的定位以及与其兄弟元素之间的相互作用。 
中文常译为块级格式化上下文。是 W3C CSS 2.1 规范中的一个概念,它决定了元素如何对其内容进行定位,以及与其他元素的关系和相互作用。 在进行盒子元素布局的时候,BFC提供了一个环境,在这个环境中按照一定规则进行布局不会影响到其它环境中的布局。比如浮动元素会形成BFC,浮动元素内部子元素的主要受该浮动元素影响,两个浮动元素之间是互不影响的。 也就是说,如果一个元素符合了成为BFC的条件,该元素内部元素的布局和定位就和外部元素互不影响(除非内部的盒子建立了新的 BFC),是一个隔离了的独立容器。(在 CSS3 中,BFC 叫做 Flow Root)

二、 形成 BFC 的条件 

1、浮动元素,float 除 none 以外的值; 
2、绝对定位元素,position(absolute,fixed); 
3、display 为以下其中之一的值 inline-blocks,table-cells,table-captions; 
4、overflow 除了 visible 以外的值(hidden,auto,scroll)

三、BFC常见作用 

1,浮动元素无法撑起父元素:

在通常情况下父元素的高度会被子元素撑开,而如果父元素没有设置高度,其子元素均为浮动元素,此时父元素会发生了高度坍塌,上下边界重合,即浮动元素无法撑起父元素。这时就可以用BFC来清除浮动了,讲父元素整体设置为BFC环境。 

 1 <!DOCTYPE html>
 2 <html lang="en">
 3 <head>
 4     <meta charset="UTF-8">
 5     <title>Title</title>
 6     <style>
 7         .box{
 8             width: 1226px;
 9             background-color: red;
10             margin: 0 auto;
11             /*设置了一个BFC区域,慎用*/
12             overflow: hidden;
13         }
14         .child1{
15             width: 300px;
16             height: 100px;
17             background-color: green;
18             float: left;
19         }
20         .child2{
21             width: 300px;
22             height: 100px;
23             background-color: blue;
24             float: right;
25         }
26     </style>
27 </head>
28 <body>
29     <div class="box clearfix">
30         <div class="child1"></div>
31         <div class="child2"></div>
32     </div>
33     <p>哈哈哈哈哈</p>
34 </body>
35 </html>
设置BFC区域

2,不被浮动元素覆盖 :

 div浮动兄弟遮盖问题:由于左侧块级元素发生了浮动,所以和右侧未发生浮动的块级元素不在同一层内,所以会发生div遮挡问题。可以给蓝色块加 overflow: hidden,触发bfc来解决遮挡问题。 

 1 <!DOCTYPE html>
 2 <html lang="en">
 3 <head>
 4     <meta charset="UTF-8">
 5     <title>Title</title>
 6     <style>
 7         .father{
 8             width: 100px;
 9             height: 50px;
10             background-color: red;
11             float: left;
12         }
13         .child{
14             /*设置BFC*/
15             overflow: hidden;
16             width: 600px;
17             height: 100px;
18             background-color: blue;
19         }
20 
21     </style>
22 </head>
23 <body>
24     <div class="father">
25         aaa
26     </div>
27     <div class="child">
28         bbb
29     </div>
30 
31 </body>
32 </html>
BFC解决遮盖

3,BFC解决margin塌陷问题:

margin塌陷问题:在标准文档流中,块级标签之间竖直方向的margin会以大的为准,这就是margin的塌陷现象。可以用overflow:hidden产生bfc来解决。 

猜你喜欢

转载自www.cnblogs.com/glh-ty/p/9229657.html
BFC