什么是BFC?
BFC概念:
一个块格式化上下文(包括块格式化上下文、内联格式化上下文、灵活格式化上下文)。
它是css布局的一个概念,是一个独立的渲染区域,规定了内部box如何布局,并且这个区域的子元素不会影响到外面的元素,其中比较重要的布局规则有内部box垂直放置,计算BFC的高度的时候,浮动元素也参与计算。
BFC的原理布局规则
内部的box会在垂直方向,一个接一个的放置
box垂直方向的距离由margin决定,属于同一个BFC的两个相邻box的margin会发生重叠
每一个元素的margin box的左边,与包含块border box的左边详解出(对于从左往右的格式化,否则相反)
BFC的区域是不会与float box重叠
BFC是一个单独的容器,容器里面的子元素不会影响到外面的元素
计算BFC的高度时,浮动元素也参与计算高度
元素的类型和display属性,决定了这个box的类型。不同类型的box会参与不同的formattingContext
创建BFC:除了文档的根元素之外,还将在以下情况下创建一个新的BFC
使用float使其浮动的元素,不能为none
绝对定位的元素(包括position:fixed或者position:sticky)
使用以下属性的元素display:inline-block
表格单元格或使用display:table-caption的元素
块级元素的overflow属性不为visible
元素属性为display:flow-root或display:flow-root list-item
元素属性为contain:layout,content,或strict
BFC的使用场景
去除边距重叠现象
清除浮动(让父元素的高度包含子浮动元素)
避免某元素被浮动元素覆盖
避免多列布局由于宽度计算四舍五入而自动换行
防止文字环绕
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)