一文带你吃透BFC

简介: 一文带你吃透BFC

文章目录


面试高出场率

在前端的面试中,经常会遇到BFC的问题,比如:说说你对BFC的理解、你在项目中运用到的BFC、BFC是什么、BFC的作用是什么。。。。

很多同学很懵逼,不知道这个问题在问什么,在这里小编就给大家讲解一下关于BFC

小提示:这个问题重点是BFC是什么,BFC触发的条件有哪些,BFC可以干什么。这里我们可以试着讲解了一下Boostrap的清除浮动(display:table创建匿名table-cell间接触发BFC),如果有看到别的场景使用或者自身有使用的场景可以尝试讲解一下使用技巧。这样可以让面试官觉得你不仅仅知道他问的东西是什么,你还能很好的使用它。


什么是BFC

BFC 全称为块级格式化上下文 (Block Formatting Context) 。BFC是 W3C CSS 2.1 规范中的一个概念,它决定了元素如何对其内容进行定位以及与其他元素的关系和相互作用,当涉及到可视化布局的时候,Block Formatting Context提供了一个环境,HTML元素在这个环境中按照一定规则进行布局。一个环境中的元素不会影响到其它环境中的布局。比如浮动元素会形成BFC,浮动元素内部子元素的主要受该浮动元素影响,两个浮动元素之间是互不影响的。这里有点类似一个BFC就是一个独立的行政单位的意思。可以说BFC就是一个作用范围,把它理解成是一个独立的容器,并且这个容器里box的布局与这个容器外的box毫不相干。


触发BFC的条件

  • 根元素或其它包含它的元素
  • 浮动元素 (元素的 float 不是 none)
  • 绝对定位元素 (元素具有 position 为 absolute 或 fixed)
  • 内联块 (元素具有 display: inline-block)
  • 表格单元格 (元素具有 display: table-cell,HTML表格单元格默认属性)
  • 表格标题 (元素具有 display: table-caption, HTML表格标题默认属性)
  • 具有overflow 且值不是 visible 的块元素
  • 弹性盒(flex或inline-flex)
  • display: flow-root
  • column-span: all


BFC的约束规则

  • 内部的盒会在垂直方向一个接一个排列(可以看作BFC中有一个的常规流)
  • 处于同一个BFC中的元素相互影响,可能会发生外边距重叠
  • 每个元素的margin box的左边,与容器块border box的左边相接触(对于从左往右的格式化,否则相反),即使存在浮动也是如此
  • BFC就是页面上的一个隔离的独立容器,容器里面的子元素不会影响到外面的元素,反之亦然
  • 计算BFC的高度时,考虑BFC所包含的所有元素,连浮动元素也参与计算
  • 浮动盒区域不叠加到BFC上


BFC可以解决的问题

垂直外边距重叠问题

去除浮动

自适用两列布局(float + overflow)



相关文章
|
3月前
|
存储 安全 算法
国产化凭据管理实战:消除硬编码,满足等保2.0合规要求
2026年6月1日生效的GA/T 2380—2026新规,首次将数据安全纳入等保“一票否决”体系,覆盖采集、传输、存储、处理、交换、销毁全生命周期,并强制要求国密算法(SM2/SM3/SM4)。本文深度解析五大变化,提供可落地的测评方法、自动化脚本及政务云实战案例,助力安全工程师高效合规。(239字)
|
6月前
|
人工智能
意图共鸣科技:AI记忆链的记忆资产——你的对话记录,是可以增值的
《AI记忆链商业化白皮书》提出“记忆资产”概念:用户与AI的每一次对话、纠偏与偏好沉淀为可携带、可增值的数字记忆,如复利存款般越用越懂你、越存越值钱,记忆主权始终归属用户。
332 3
|
8月前
|
人工智能 监控 安全
AI 智能体项目的上线
AI智能体上线非简单部署,而是从实验到社会的审慎放行。需经沙箱测试、灰度发布、多级护栏(输入拦截/输出审查/熔断)、生产集成、全链路监控及应急预案五步闭环,确保安全、稳定、合规。(239字)
|
12月前
|
机器学习/深度学习 人工智能 算法
优化AI模型训练参数,降低资源消耗与提升效率
本文探讨如何减少AI模型训练中的参数量,提升效率并降低资源消耗。通过轻量化架构、剪枝、知识蒸馏等技术,在保证性能的同时实现模型精简,推动绿色可持续的AI发展。
550 1
|
JavaScript 开发者
vue解决报错Unable to preventDefault inside passive event listener invocation.
vue解决报错Unable to preventDefault inside passive event listener invocation.
2925 0
|
JSON JavaScript 数据格式
Vue路由params、query参数丢失解决
该文章介绍了在Vue中使用`params`和`query`进行路由参数传递时,如何通过`sessionStorage`或`localStorage`解决参数丢失的问题。
1208 3
|
监控 JavaScript 开发者
在 Vue 中,子组件为何不可以修改父组件传递的 Prop,如果修改了,Vue 是如何监控到属性的修改并给出警告的
在 Vue 中,子组件不能直接修改父组件传递的 Prop,以确保数据流的单向性和可预测性。如果子组件尝试修改 Prop,Vue 会通过响应式系统检测到这一变化,并在控制台发出警告,提示开发者避免这种操作。
element组件库笔记一:element 框架中table表格复选框选中后,切换下一页之前选中复选框和数据消失的问题
这篇文章介绍了在Element UI框架中,如何解决表格组件复选框在分页时选中状态丢失的问题。
1506 0
|
移动开发 资源调度 数据可视化
AnV-X6使用及总结
AnV-X6使用及总结
2192 0

热门文章

最新文章