触发bfc的html元素,BFC详解

BFC定义

在解释BFC之前,先说一下文档流。我们常说的文档流其实分为定位流、浮动流和普通流三种。而普通流其实就是指BFC中的FC。FC是formatting context的首字母缩写,直译过来是格式化上下文,它是页面中的一块渲染区域,有一套渲染规则,决定了其子元素如何布局,以及和其他元素之间的关系和作用。常见的FC有BFC、IFC,还有GFC和FFC。BFC是block formatting context,也就是块级格式化上下文,是用于布局块级盒子的一块渲染区域。

个人理解是:BFC就是一个有特定规则的区域,这块区域内的元素只遵循特定规则,不受外部影响。

BFC内部规则。

内部的Box会在垂直方向,一个接一个地放置。PS:感觉不是废话么

Box垂直方向的距离由margin决定。属于同一个BFC的两个相邻Box的margin会发生重叠。

每个元素的margin box的左边, 与包含块border box的左边相接触(对于从左往右的格式化,否则相反)。即使存在浮动也是如此。

BFC的区域不会与float box重叠。

BFC就是页面上的一个隔离的独立容器,容器里面的子元素不会影响到外面的元素。反之也如此。

计算BFC的高度时,浮动元素也参与计算。

相信这5个东西都看得有点懵~~所以接下来浓缩介绍最常用的规则整理。

规则一:BFC是一块独立规则的区域,不受外部影响,而内部元素也不会影响到外部。

规则二:清楚浮动。触发BFC后能感知得到浮动元素的存在。

规则三:BFC感知得到浮动元素的高度。

如何触发BFC

根元素

float属性不为none

position为absolute或fixed

display为inline-block, table-cell, table-caption, flex, inline-flex

overflow不为visible(常用)

接下来是一些经典的应用场景。

布局的浮动清除:规则二

未触发BFC前:

bf927bc1bed4

2.png

触发BFC后:

bf927bc1bed4

3.png

HTML:

这是设置浮动的元素

`

CSS:

.header,.footer{

height:50px;

background:red;

}

.aside{

height:400px;

width:200px;

background:#09f;

font-size:30px;

float:left;

}

.main{

height:200px;

margin-left:200px;

background:pink

}

.content{

overflow:auto;//在父元素触发BFC,也可以试试其他的触发方式。ps:不过处理起来会比较麻烦。

//

}

这里我们介绍一下使用BFC清除浮动和用clear清除浮动的区别:

clear清除浮动:

.header,.footer{

height:50px;

background:red;

}

.aside{

height:400px;

width:200px;

background:#09f;

font-size:30px;

float:left;

}

.main{

height:200px;

margin-left:200px;

background:pink

}

.clear{

clear:both;

}

这是设置浮动的元素

二者都能达到浮动的效果,不同的是,BFC清除浮动是因为触发到BFC能感知得到浮动元素,计算高度时候浮动元素。而clear清除浮动时候,父元素只计算到.clear的div的高度,但是.clear感知得到浮动元素。当我们添加clear:both的时候,.clear的就被浮动元素挤下去了。规则三

清除外边距。规则二

未清除边距合并前:

bf927bc1bed4

4.png

给其中一个添加一个warp并且触发warp的BFC:

bf927bc1bed4

5.png

html:

JS Bin

`

CSS:

`.box1,.box2{

width:100px;

height:100px;

}

.box1{

background:#09f;

margin-bottom:100px;

}

.box2{

margin-top:100px;

background:pink;

}

.warp{

overflow:auto;

}

PS:对比的话可以把Html里面的warp去掉试试。

再再PS:外边距合并有2种,垂直margin的合并,还有父子margin的合并,在这里后者就不演示了可以点击这里

结论:

BFC主要就是围绕这3个主要规则去使用。如果对W3C的理解很困难的话,只需要记住这3个规则和触发BFC的条件就行~~~

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值