BFC
1|0概述
BFC
全称 block formatting context
,即格式化上下文 ,是 css
渲染中的重要组成。
2|0视觉格式化模型
视觉格式化模型
是一种视觉媒体渲染机制。
浏览器将 html
与 css
进行解析后形成渲染树
,再由渲染树
将数据展现为视图。
所有页面上的视图元素都是一个盒模型 ,也即为常说的一切模型皆盒子。
视觉格式化模型定义了盒子生成。
盒模型将决定了元素大小、颜色等具体视觉效果,也可以影响周边盒子相关属性的计算。
盒类型根据 display
属性决定,分为:
块盒
、
行内盒
、
匿名盒
(没有名字,不能被选择器选中)、
一些实验性盒子(未添加到规范中)。
3|0块盒
- 当元素
display
为block
、list-item
、table
时,则为块级元素,block-level
。 - 在视觉上呈现为块,竖直排列。
- 块级盒参与(块格式化上下文)。
- 每个块级元素至少生成一个块级盒,成为主要块级盒。一些元素,比如
li
额外生成盒子放置项目的符号。
4|0行内盒
- 当元素的
display
为inline
、inline-block
、inline-table
则为行内元素。 - 视觉上他将内容和其他行内元素排位多行,比如段落文章、文本、图片。
- 行内元素生成行内盒,参与行内格式上下文。同时参与生成行内格式化上下文的行内级盒成为行内盒。 所有
display
为inline
为非替换元素生成的盒就是行内盒。 - 不参与生成行内格式化上下文的行内级盒成为原子行内级盒。这些盒由可替换行内元素或
display
为inline-block
或inline-table
的元素生成,不能拆分多个盒。
5|0匿名盒
- 也分匿名块盒与匿名行内盒,匿名盒没有名字,不能用选择器选择,所有属性都是
inherit
或初始值。
6|0三种定位方案:
在定位的时候,浏览器根据元素的盒类型和上下文进行元素定位。
- 常规流
- 常规流中,盒子一个接一个排列。
- 块级格式上下文,他们竖着排列。
- 行内格式化上下文,他们横着排列。
- 当
float
为none
,position
为static
或relative
时,触发常规流。 - 当
position
为static
时,盒子位置为常规流的位置。 - 当
position
为relative
, 盒子根据top
,left
属性偏移。即使偏移,其他正常流不占这个位置。
- 浮动
- 浮动盒子。
- 位于当前行的头部或尾部。
- 这导致常规流会绕在她的周围, 除非设置
clear
属性。
- 绝对定位
- 当
position
为fixed
或absolute
时,才为绝对定位。 - 绝对定位方案中,盒从常规流移除,不影响正常流布局。
- 相关属性
top
、left
、bottom
、right
。 fixed
相对视口定位,absolute
相对于最近的relative
、fixed
、absolute
的祖代元素定位,没有则相对于body
。
7|0BFC 的效果
格式化上下文即是指决定盒子的布局及浮动相互影响范围的一个区域。
BFC
最明显的效果就是建立一个隔离空间,断绝空间内外元素相互作用。- 内部盒子垂直方向一个个排列(正常流)。
- 处于同一
BFC
的元素相互影响,可能发生margin
、collapse
(外边距重叠)。 - 每个元素的 margin-box 的左边,跟容器快
border-box
的左边相接触。即使浮动也是如此。 - 计算
BFC
高度时,考虑BFC
所包含的所有元素,浮动元素也计算在内。 - 浮动盒子区域不叠加在
BFC
上。
8|0BFC 的创建方式
- 根元素和其他包含他的元素。
- 浮动
float
不为none
。 - 绝对定位
fixed
、absolute
。 - 行内块
inline-block
。 - 表格元素
table-cell
。 overflow
不为visible
。
__EOF__

本文作者:Odyssey
本文链接:https://www.cnblogs.com/qingzhao/p/16539230.html
关于博主:I am a good person
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
声援博主:如果您觉得文章对您有帮助,可以点击文章右下角【推荐】一下。您的鼓励是博主的最大动力!
本文链接:https://www.cnblogs.com/qingzhao/p/16539230.html
关于博主:I am a good person
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
声援博主:如果您觉得文章对您有帮助,可以点击文章右下角【推荐】一下。您的鼓励是博主的最大动力!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· AI技术革命,工作效率10个最佳AI工具