当前位置: 首页 > news >正文

BFC的概念与作用

本篇详细介绍FC的概念,以及BFC的作用:

  • FC的全称是Formatting Context,元素在标准流里面都是属于一个FC的.

  • 块级元素的布局属于Block Formatting ContextBFC

-也就是block level box都是在BFC中布局的;

  • 行内级元素的布局属于Inline Formatting ContextIFC

-而inline level box都是在IFC中布局的;

哪些具体的情况下会创建BFC?

 根元素(HTML)

 浮动元素(元素的 float 不是 none)

 绝对定位元素(元素的 position 为 absolute 或 fixed)

 行内块元素(元素的 display 为 inline-block)

 表格单元格(元素的 display 为 table-cell,HTML表格单元格默认为该值),表格标题(元素的 display 为 table-caption,HTML表格标题默认为该值)

 匿名表格单元格元素(元素的 display 为 table、table-row、 table-row-group、table-header-group、table-footer-group(分别是HTML table、 row、tbody、thead、tfoot 的默认属性)或 inline-table)

 overflow 计算值(Computed)不为 visible 的块元素

 弹性元素(display 为 flex 或 inline-flex 元素的直接子元素)

 网格元素(display 为 grid 或 inline-grid 元素的直接子元素)

 display 值为 flow-root 的元素

BFC的作用?

  • 在BFC中,box会在垂直方向上一个挨着一个的排布;

  • 垂直方向的间距由margin属性决定;

  • 在同一个BFC中,相邻两个box之间的垂直方向的margin会折叠(collapse);

  • 在BFC中,每个元素的左边缘是紧挨着包含块的左边缘的;

<style>
.box1{height: 100px;width: 100px;margin: 20px;background-color: #73b1ce;
}
.box2{height: 100px;width: 100px;margin: 10px;background-color: #a473ce;
}
</style>
<div class="box1"></div>
<div class="box2"></div>

box1和box2垂直方向上的margin会合并,最终的margin值会取两个margin中的较大值。在此例中,box1和box2垂直方向之间的距离为20px。

BFC的特性可以解决什么问题呢?

  • 解决margin的折叠问题;

  • 解决浮动高度塌陷问题;

BFC的作用一:解决折叠问题

那么如果我们让两个box是不同的BFC呢?那么就可以解决折叠问题。

.box1 {height: 200px;width: 400px;background-color: orange;margin-bottom: 30px;
}.box2 {height: 150px;background-color: purple;margin-top: 50px;
}<div class="container"><div class="box1"></div>
</div>
<div class="box2"></div>

box1属于HTML的BFC,box2属于container的BFC,不属于同一个BFC,margin不会折叠

BFC的作用二:解决浮动高度塌陷

事实上,BFC解决高度塌陷需要满足两个条件:

  • 浮动元素的父元素触发BFC,形成独立的块级格式化上下文(Block Formatting Context);

  • 浮动元素的父元素的高度是auto的;

BFC的高度是auto的情况下,是如下方法计算高度的

  • 1.如果只有inline-level,是行高的顶部和底部的距离;

  • 2.如果有block-level,是由最顶层的块上边缘(margin-top)和最底层块盒子的下边缘(margin-bottom)之间的距离

  • 3.如果有绝对定位元素,将被忽略(不计算高度);

  • 4.如果有浮动元素,那么会增加高度以包括这些浮动元素的下边缘

因此,将浮动元素的父元素触发BFC,其会增加高度以包括浮动元素的底部,达到解决父元素高度塌陷的问题。

但是,这种方式不能解决绝对定位元素的父元素塌陷问题

http://www.lryc.cn/news/17386.html

相关文章:

  • 谷歌留痕代发技术指南_谷歌留痕怎么霸屏的?
  • SCG failure information
  • Idea修改Git账号及密码的方法
  • leaflet 设置右键菜单,配置相应的功能(090)
  • 怎么维护Linux VPS 服务器?简单7个步骤
  • [NOIP1999 提高组] 旅行家的预算(C++,贪心)
  • Array.apply(null,{length: 99}) 逻辑解析
  • Web前端开发常用工具推荐(内含学前端必备软件资源)
  • 【python】考前复习,python基础语法知识点整理
  • 3个月,入门网络安全并找到工作
  • 你会用 TypeScript 的条件类型吗?
  • 云原生丨一文教你基于Debezium与Kafka构建数据同步迁移(建议收藏)
  • 顶象APP加固的“蜜罐”技术有什么作用
  • 训练一个ChatGPT需要多少数据?
  • 【GlobalMapper精品教程】053:打开dbf文件并生成有坐标系的shp数据
  • 图像亮度调整
  • 精简版SDL落地实践
  • 第一回:Matplotlib初相识
  • 怎么找回电脑删除的图片
  • 【Linux】进程状态与进程优先级
  • Python+Qt生日提醒
  • 第二章 编写MBR主引导记录
  • Android 9.0 仿ios的hotseat效果修改hotseat样式
  • 量化私募投资百亿头部量化私募企业在招岗位:AI算法工程师21/22/23届,校招/秋招/社招都看年base60-200万
  • 百度西交大大数据菁英班目标检测竞赛
  • Redisson实现分布式锁
  • 【HID基础知识】
  • 工赋开发者社区 | 工业数字孪生:西门子工业网络与设备虚拟调试案例(TIA+MCD+SINETPLAN)
  • 将闲置的Ipad作为Windows的副屏(Twomon SE)
  • 浮点数在内存中的存储——“C”