css-BFC概念

在w3c中,是这样解释block-level box的:

在一个块级排版上下文中,盒子是从包含块顶部开始,垂直的一个接一个的排列的相邻两个盒子之间的垂直的间距是被margin属性所决定的,在一个块级排版上下文中相邻的两个块级盒之间的垂直margin是折叠的

例如:定义三个div块元素

div{

width:100px;

height:100px;

}

.one{

background-color: #3c3c3c;

margin-bottom: 30px;

}

.two{

background-color: #1e83d3;

margin-top:30px;

margin-bottom: 30px;

}

.three{

background-color: #11a197;

margin-top:30px

}

<div class="one"></div>

<div class="two"></div>

<div class="three"></div>

会发现相邻两个div之间的margin发生了折叠;为了解决这个问题;我们就引出了BFC这个概念

 

BFC概念:

Block Formatting Contexts 块级格式化上下文,

其中Formatting Context是一个决定如何渲染文档的容器

创建的BFC元素就是一个独立的盒子,只有block-level box(块级盒子)可以创建BFC,它规定了内部的

block-level box如何布局,并且这个独立的盒子里的布局不受外部影响,它也不会影响到外面的元素

 

BFC特性:

1:内部的box会在垂直方向,从顶部开始一个接着一个地放置

2:box垂直方向的距离由margin巨鼎。属于同一个BFC的相邻box的margin会发生叠加

3:BFC的区域不会和float box叠加

4:BFC就是页面上的一个隔离的独立容器,容器里面的子元素不会影响到外面的元素

5:计算BFC高度时;浮动元素也参与计算

 

BFC的触发:

1:设置float(left|right)除了none

2:设置overflow(hidden | auto | scroll)除了visible

3:设置display(inline-block | inline-flex | table-cell | table-caption)

4:设置position(absolute | fixed)

 

关于上面div的margin折叠现象;我们就可以使用BFC来解决了

我们可以给上面的三个div添加display:inline-block属性触发BFC;这样就不会发生折叠了

 

下面就BFC应用来说明:

先给出代码:

.d1{

width:100px;

height:100px;

background-color: #11a197;

float: left;

}

.d2{

width:300px;

height:200px;

background-color: #3c3c3c;

}

<div class="parent">

<div class="d1"></div>

<div class="d2"></div>

</div>

其中d1触发了BFC(效果自己可以在浏览器中查看);由于d1触发了BFC,d2将d1包含了;并没有达到我们想要的布局要求;那么我们可以给d2添加overflow:hidden属性来触发BFC;这样div就相邻排列了,此时的这两个盒子里的布局不受外部影响,也不会影响到外部

总结:这里只是简单的介绍了什么事BFC以及BFC的一些用处;希望能够帮助到大家

 

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值