BFC——通俗理解什么是BFC

CSS中的BFC详细讲解(易懂) 一个BFC区域只包含它的子元素,不包含其子元素的子元素。成为一个BFC区域要满足一定的条件。不同的BFC区域相互独立,互补影响。BFC是属于普通流的,我们可以把BFC看成页面的一块渲染区,他有自己的渲染规则,简单来说就是BFC可以看做元素的属性,当元素有了BFC这个属性,这个元素可以看做隔离了的容器,容器里面的元素不会在布局上影响到外面的元素。 阅读详情


在理解BFC之前,我们需要先回顾常规流布局的概念(忘记或者还没看的小伙伴点击 前端CSS基础——常规流布局

常规流布局

  • 常规流块盒独占一行
  • 常规流块盒在垂直方向依次摆放
  • 常规流块盒父子元素外边距合并
  • 常规流块盒排列无视浮动元素或者脱离常规流布局的元素
  • 常规流块盒高度不计算浮动元素

BFC的概念

理解完常规流后,我们介绍下BFC,什么是BFC?BFC全称为:Block Formatting Context——块级格式化布局,简称BFC它是一块独立的渲染区域,这个区域决定了常规流块盒的布局。 也就是说,BFC是一块区域,作用是决定常规流块盒的布局。

BFC的创建

BFC由某个HTML元素创建,下列元素会在其内部创建BFC区域。

  • 根元素(<HTML>元素,<HTML>元素创建的BFC区域覆盖了所有网页的元素)
  • 浮动定位或者绝对定位元素(floatposition:absolute
  • overflow属性不为默认值(visible)的块盒元素

如图所示
在这里插入图片描述
注意到没有,每个元素创建的BFC都是互相独立的,元素A、B、C的BFC跟其他元素创建的BFC或者根元素创建的BFC都是相互独立。

BFC的特性

  1. 不同的BFC在进行渲染时互不干扰
  2. 创建BFC的元素隔绝了它内部BFC与外部BFC的联系,内部的渲染不会影响到外部

BFC的应用

解决高度坍塌的问题

在前面发布过的文章中,有提到解决高度坍塌的方法,那就是清除浮动(clear:botn)。现在我们了解BFC后,也能用BFC来解决高度坍塌问题。

 	.container{
            width: 100%;
            background-color: skyblue;
            margin-top: 20px;
        }

        .float{
            float: left;
            width: 200px;
            height: 100px;
            background-color: #008c8c;
        }
<body>
    <div class="container">
        <div class="float"></div>
    </div>
</body>

效果图
在这里插入图片描述
如图所示,父类元素的背景颜色并没有显示,我们打开浏览器的开发者模式,找到父类元素,可以看到高度为0,高度坍塌了。
在这里插入图片描述
在父类元素的样式中添加下列三种属性之一使其生成BFC

  • 浮动元素
  • 绝对定位
  • overflow(最常用,可不改变父类元素的布局方式)
	.container{
            width: 100%;
            background-color: skyblue;
            margin-top: 20px;
            overflow: hidden;//添加属性
        }

得到效果图
在这里插入图片描述
这里就是因为BFC的特性,互相独立的BFC互不干扰。当子类元素超出父类元素时会造成对其他BFC的干扰,所以需要将子类元素包含在自己的BFC中,所以自动扩展了高度。

相邻父子元素外边距合并问题
 	.container{
            width: 100%;
            height: 300px;
            background-color: skyblue;
            margin-top: 20px;
        }

        .float{
            width: 200px;
            height: 100px;
            background-color: #008c8c;
            margin: 30px;
        }
        
		<div class="container">
	        <div class="float"></div>
	    </div>

运行上面代码
在这里插入图片描述
可以看到,子元素的左右下外边距都能显示出效果,但是子类元素不显示上外边距效果,这是因为子类的上外边距跟父类元素的上外边距合并了,这里用BFC处理,在父类中创建BFC。

	.container{
            width: 100%;
            height: 300px;
            background-color: skyblue;
            margin-top: 20px;
            overflow: hidden;
        }

运行得到
在这里插入图片描述
这是因为父类元素处于根元素创建的BFC里,而子类元素处于父类元素创建的BFC里,所以尽管它们外边距相邻,但是它们所处BFC不同,所以它们的渲染是互不干扰。

无视浮动盒子排序问题

我们先来运行下面代码

 		.container{
            height: 300px;
            background-color: skyblue;
            margin-top: 20px;
            /* overflow: hidden; */
        }

        .float{
            float: left;
            width: 200px;
            height: 100px;
            background-color: #008c8c;
            margin: 30px;
        }
        
		<div class="float"></div>
 	  	<div class="container"></div>

得到如下效果
在这里插入图片描述
因为container元素是常规流盒子,而float元素是浮动盒子,常规流盒子排列会无视浮动盒子。 在container元素创建BFC,再看看效果。

	 .container{
            height: 300px;
            background-color: skyblue;
            margin-top: 20px;
            overflow: hidden;
        }

运行
在这里插入图片描述
这是因为BFC是一块独立的区域,它一定不能跟外部环境(float)互相干扰,所以在排列的时候一定会避开浮动盒子float。

总结

  • 创建BFC的元素,它的自动高度会计算浮动元素
  • 创建BFC的元素不会和它的子元素进行相邻外边距合并
  • 创建BFC的元素,它的边框盒不会与浮动元素重叠。
前端知识之CSS】对BFC理解 本系列主要整理前端面试中需要掌握的知识点。本节介绍对BFC理解 阅读详情

相关推荐

【UV打印机】PrintExp打印软件教程(四)-设置校准电压

序号名称功能说明1校准材料设置定义当前打印材料,不同的材料参数绑定不同的校准值2向导勾选进行校准向导操作3校准类型包括喷头安装、步进校准、喷头间距、套色校准、双向校准4类型子项同类型子项5操作步骤校准存在步骤和校准说明示意图。

Print World的专栏 5009

BFC 到底是个啥?有何神通广大之处?这篇文章带你进入 BFC 的世界

在实际开发过程中其实我们不经意间就用到了BFC这一利器解决了我们的问题,一起学习如何使用BFC实现我们想要的效果吧!

qq_35727582的博客 4425

分子对接中的相互作用特征分析(目视筛查)

介绍分子对接的相互作用特征,以及如何通过这些特征进行目视筛查

recher_He1107的博客 5707

什么是BFC,他有什么用?

BFC 是什么?

sqLeiQ的博客 3万+

我的世界之BFC

BFC的规则、使用,使用BFC清除浮动,文字环绕,margin塌陷等问题

YouZi_X的博客 2701

BFC:什么是BFCBFC作用?如何创建BFCBFC应用场景

BFC属于普通流。BFC全称是Block Formatting Context,意思就是块级格式化上下文。你可以把BFC看做元素的一个属性,当元素拥有的BFC属性,这个元素就可以看作是隔离了的独立容器,容器里边的元素不会影响到容器外部的元素。

m0_74114605的博客 5586

通俗易懂理解BFC

什么是BFC BFC全称Block Formatting Context,中文名称块级格式化上下文 具有BFC特性的元素可以看作是隔离了的独立容器,容器里面的元素不会在i布局上影响到外面的元素,并且BFC具有普通容器所没有的一些特性。 如何触发BFC html根元素 浮动元素 (元素的float不是none) 绝对定位元素 (元素的position为absolute或者fixed) 行内块元素 (inline-block) overflow的值不为visible的块元素 (hidden,scroll,au

Dax1_的博客 248

结合实例通俗易懂理解BFC布局

写在文前在面试或者看文档资料的时候,我们经常会看到一个概念BFC,网上去搜,资料一大堆。好的坏的,看的一脸雾水。于是,博主查阅各种资料,摘录,来写一下BFC布局。BFC概念1. BFC是什么?我们先来理解两个概念:Box、Formatting ContexBox: CSS布局的基本单位Box 是 CSS 布局的对象和基本单位, 直观点来说,就是一个页面是由很多个 Box 组成的。元素的类型和 di...

weixin_37861326的博客 1060

CSSBFC快速理解

1. 什么是BFC BFC(Block formatting context),译为“块级格式化上下文”,简单来说,BFC属于CSS中的一种布局,它的目标就是要产生一块独立的区域,任凭内部元素或布局如何变化,都不会影响到区域外的元素和布局,就像一个独立的盒子。 2. 如何触发BFC 当一个元素满足以下任一条件即为BFCHTML本身就是一个BFC元素 float属性: 设置为...

Learner 291

BFC是什么

面试必会知识BFC 文章目录面试必会知识BFC前言一、什么是BFC二、BFC的特点三、BFC布局规则四、哪些元素会产生BFC五、在布局中BFC的应用场景总结 前言 本片文章主要总结了面试中常问的面试题BFC 首先了解一下什么是BFC 一、什么是BFC 1、BFC即 Block Formatting Contexts (块级格式化上下文), 是 W3C CSS2.1 规范中的一个概念。 2、BFC是指浏览器中创建了一个独立的渲染区域,并且拥有一套渲染规则,他决定了其子元素如何定位,以及与其他元素的相互关系

qq_43205326的博客 2万+

关于前端中的BFC理解

什么是BFC? 全称块级格式化上下文?什么意思不懂。看了好多博客,基本都是抄的,真心都不是大白话。我今天来总结一下,用菜鸟级别的语言来描述。 BFC 应该可以抽象成一个 独立的个体,出淤泥而不染的白莲花。 是的不受其他元素的影响,始终保持自己独立。就是正常的普通流布局规则,设置的样式是什么样的,就按正常的普通流布局的表现。 内部的子元素 不受外界的影响,外界的元素,也不受内部的元素的影响。...

一个在全能之路上越走越远的男人。 2189

BFC是什么?有哪些应用场景?一次搞懂BFC通俗易懂!

BFC(Block Formatting Context)中文译为"块级格式化上下文",简单来说,BFC就是给盒子加一个属性,让盒子变成一块独立渲染的区域,可以理解为一个箱子,箱子里面物品的摆放是不受外部影响。

SmileLife123的博客 5295

什么是BFC,对BFC理解

先来看两个相关的概念:Box: Box 是 CSS 布局的对象和基本单位,一个页面是由很多个 Box 组成的,这个Box就是我们所说的盒模型。Formatting context: 块级上下文格式化,它是页面中的一块染区域,并且有一套染规则,它决定了其子元素将如何定位,以及和其他元索的关系和相互作用。块格式化上下文(Block Formatting Context,BFC) 是Web页面的可视化CSS染的一部分,是布局过程中生成块级盒子的区域,也是浮动元素与其他元素的交互限定区域。

weixin_53818172的博客 397

关于BFC的自我理解

深入了解BFCBFC是什么BFC如何创建BFC得规则BFC有哪些特性 BFC是什么 全名( Block Formatting Context )简称BFC 它是页面中的一块渲染区域,并且有一套渲染规则,它决定了其子元素将如何定位,以及和其他元素的关系和相互作用。Block formatting context直译为"块级格式化上下文"。它是一个独立的渲染区域,只有Block-level box参与, 它规定了内部的Block-level Box如何布局,并且与这个区域外部毫不相干。通俗地讲,BFC是一个容器

weixin_47823795的博客 154

什么是BFCBFC可以解决什么问题

一、规范解释:块格式化上下文(Block Formatting Context,BFC)是Web页面的可视化CSS渲染的一部分,是布局过程中生成块级盒子的区域,也是浮动元素与其他元素的交互限定区域二、通俗理解BFC 是一个独立的布局环境,可以理解为一个容器,在这个容器中按照一定规则进行物品摆放,并且不会影响其它环境中的物品三、BFC是一个css渲染特殊的一部分,需要一定的条件才能触发四、BFC可以解决的问题1、解决外边距塌陷的问题1)、父子元素的外边距塌陷问题我们在一个元素内部子元素,设置了一个margi

9872

3分钟理解BFC

块级格式化上下文,是用于布局块级盒子的一块渲染区域。MDN上的解释:BFC是Web页面 CSS 视觉渲染的一部分,用于决定块盒子的布局及浮动相互影响范围的一个区域。一个BFC的范围包含创建该上下文元素的所有子元素,但不包括创建了新BFC的子元素的内部元素。这从另一方角度说明,一个元素不能同时存在于两个BFC中。具有 BFC 特性的元素可以看作是隔离了的独立容器,容器里面的元素不会在布局上影响到外面的元素。

猫老板的豆 918

快速理解BFC原理

一、常见定位方案在讲 BFC 之前,我们先来了解一下常见的定位方案,定位方案是控制元素的布局,有三种常见方案:普通流 (normal flow)在普通流中,元素按照其在 HTML 中的先后位置至上而下布局,在这个过程中,行内元素水平排列,直到当行被占满然后换行,块级元素则会被渲染为完整的一个新行,除非另外指定,否则所有元素默认都是普通流定位,也可以说,普通流中元素的位置由该元素在 HTML 文档中...

kangzai的博客 3569

10 分钟理解 BFC 原理

一、常见定位方案 在讲 BFC 之前,我们先来了解一下常见的定位方案,定位方案是控制元素的布局,有三种常见方案: 普通流 (normal flow) 在普通流中,元素按照其在 HTML 中的先后位置至上而下布局,在这个过程中,行内元素水平排列,直到当行被占满然后换行,块级元素则会被渲染为完整的一个新行,除非另外指定,否则所有元素默认都是普通流定位,也可以说,普通流中元

jiaojsun的博客 1万+

关于BFC和float的一些理解

BFC BFC是Block Formatting Context (块级格式化上下文)的缩写 我先说一下清除浮动问题。 我们都知道有时候要清除浮动,但为什么要清除浮动? 我们先看一下代码 <!DOCTYPE html> <html> <head> <meta charset="utf-8" content="text/html"> &...

weixin_39499923的博客 707

浅析BFC原理及作用

一、常见布局模式在讲BFC之前,我们先来看一下常见的CSS三种布局模型:CSS中的三种布局模型:流动模型(Flow)、浮动模型(Float)和层模型(Layer)。详解在我的另一篇博文中讲到,CSS中的三种布局模型。二、BFC概念 BFC 即 Block Formatting Contexts (块级格式化上下文),它属于上述布局模式的流动模型。是W3C CSS2.1规范中的一个概念,决定了...

杜小白的博客 1万+

参考资料-15 附合导线计算表(测表15).zip

参考资料-15 附合导线计算表(测表15).zip

上一篇: 前端CSS——Web图标的使用
下一篇: 前端CSS基础——CSS居中方法总结
木的又
博客等级 码龄7年 4粉丝 12原创
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值