奕玖科技 > 新闻中心 > 技术文章

什么是BFC BFC有什么特点

来源: 奕玖科技 瘦死的猪 | 2023/3/6 13:00:23

BFC是指“块级格式化上下文”(Block Formatting Context),是CSS布局的一个重要概念,也是前端开发中常被忽视的一部分。BFC是CSS布局中的一种规则,它决定了元素如何放置和布局,以及元素与其他元素的关系。在理解BFC之前,我们需要先了解一下块级元素和内联元素的特点。

块级元素和内联元素

块级元素(block-level element)是指在HTML中,由块状元素标签所创建的HTML元素,如<p>、<p>、<ul>、<ol>、<li>、<form>、<h1>~<h6>等等。它们通常以块的形式显示,相互之间会自动换行,并且可以设置宽度和高度。块级元素可以包含其他的块级元素和内联元素。

内联元素(inline element)是指在HTML中,由内联元素标签所创建的HTML元素,如<span>、<a>、<strong>、<em>、<img>等等。它们不会自动换行,通常都是基于字符流的,只会占用必要的宽度,高度也只是与其行内的其他元素一样。内联元素不能设置宽度和高度,因为它们的宽度和高度都由它们所包含的内容来决定。

那么,BFC是什么呢?

BFC定义

BFC是CSS布局中的一种规则,它是一个独立的渲染区域,具有一定的特性,它决定了元素如何放置和布局,以及元素与其他元素的关系。BFC是块级元素的一种渲染规则,它是一个矩形区域,由包含它的元素及其内部元素组成。

BFC的生成规则

一个BFC区域,可以由以下几种方式生成:

1. 根元素或包含根元素的元素

2. 浮动元素(float不为none)

3.绝对定位元素(position为absolute或fixed)

4.display为inline-block、table-cell、table-caption、flex、inline-flex的元素

5.overflow不为visible的块级元素

6.contain值为layout、content或strict的元素

以上这些条件满足其中任意一条,都可以生成一个BFC。需要注意的是,BFC不会相互嵌套,一个元素只能包含一个BFC。

BFC的特性

BFC具有以下几个特性:

1.BFC内的元素会在垂直方向上一个接一个地排列,从包含块的顶部开始,每个元素的左边缘都和包含块的左边缘对

齐。如果一个元素有margin-top,则它的上边距会与它的前面的元素的下边距接触,形成 margin 坍塌现象。但是,如果这些元素在不同的 BFC 中,它们就不会发生 margin 坍塌。

2.BFC的区域不会与浮动元素重叠。如果一个元素是浮动的,它会脱离文档流,但它会影响其他元素的位置。在一个BFC中,如果有浮动元素,BFC会把这些浮动元素和其他元素分隔开来,保证它们不会重叠。

3.BFC可以包含浮动元素。如果一个元素包含浮动元素,这些浮动元素可能会溢出它们的容器,导致容器的高度无法自适应。但如果容器本身是一个BFC,它就会把浮动元素包含在内,从而正确地计算容器的高度。

4.BFC区域内,每个元素的边框(包括内边距和边框)都会与容器的边框相接触。这意味着,BFC区域内的元素不会超出它们的容器,也不会溢出容器。

5.BFC具有防止 margin 坍塌的作用。如果两个相邻元素都有margin-top和margin-bottom,它们的 margin 会合并成一个,这就是所谓的 margin 坍塌。但是,如果它们位于同一个BFC中,它们就不会发生 margin 坍塌。

6.BFC可以清除浮动。当一个元素的高度为0时,它无法自适应浮动元素的高度,从而导致布局混乱。但如果这个元素是一个BFC,它就会把浮动元素包含在内,从而正确地计算元素的高度。

BFC的应用场景

1. 清除浮动:当一个元素包含浮动元素时,可以将这个元素设为BFC,从而防止浮动元素溢出,并正确计算元素高度。比如,可以给容器设置overflow:hidden或overflow:auto。

2.防止 margin 坍塌:当两个相邻元素的 margin 坍塌时,可以将它们放在同一个BFC中,从而避免 margin 坍塌。比如,可以给其中一个元素设置float:left或float:right。

3.横向排列:当需要横向排列元素时,可以将这些元素放在同一个BFC中,从而实现横向排列。比如,可以将这些元素放在一个display:inline-block的容器中。

4.制作自适应布局:当需要实现自适应布局时,可以将布局容器设为BFC,从而保证其高度正确计算,并避免与其他元素重叠。比如,可以给布局容器设置display:flex或display:grid。

5.防止父子元素间的影响:当一个元素包含一个浮动元素时,可以将这个元素设为BFC,从而防止浮动元素影响父元素的布局。比如,可以给父元素设置overflow:hidden或overflow:auto。

6.实现多栏布局:当需要实现多栏布局时,可以将布局容器设为BFC,从而实现多栏布局。比如,可以给布局容器设置column-count或column-width。

总结

BFC是一种非常有用的Web布局概念,它可以解决许多常见的布局问题,如浮动、margin 坍塌、高度自适应、多栏布局等。在实际开发中,我们应该充分利用BFC这个概念,将布局容器设为BFC,从而更好地控制布局。同时,我们也需要注意BFC的一些细节,比如在BFC中浮动元素不会超出容器、BFC可以防止 margin 坍塌等。

栏目导航
相关文章
文章标签
关于我们
公司简介
企业文化
资质荣誉
服务项目
高端网站定制
微信小程序开发
SEO排名推广
新闻动态
行业新闻
技术学院
常见问题
联系我们
联系我们
人才招聘
联系方式
Q Q:24722
微信:24722
电话:13207941926
地址:江西省抚州市赣东大道融旺国际3栋
Copyright©2008-2022 抚州市奕玖科技有限公司 备案号:赣ICP备2022010182号-1