CSS | 文档流 | Box盒模型 | FC BFC、IFC、FFC、GFC

文档流

“在一个块格式区域中,盒子会从包含块的顶部开始,按序垂直排列(受书写模式影响)。同级盒子间的垂直距离会由“margin”属性决定。相邻两个块级盒子之间的垂直间距会遵循外边距折叠原则被折叠。在一个块格式区域中,每个盒子的左外边缘会与包含块左边缘重合(如果是从右到左的排版顺序,则盒子的右外边缘与包含块右边缘重合)。”

“在内联格式区域中,盒子会从包含块的顶部开始,按序水平排列(受书写模式影响)。只有水平外边距、边框和内边距会被保留。这些盒子可以以不同的方式在垂直方向上对齐:可以底部对齐或顶部对其,或者按文字底部进行对齐。我们把包含一串盒子的矩形区域称为一个线条框。”

脱离文档流

float 或者 position:absolute / fixed 可以让元素脱离文档流

脱离常规流的元素会创建一个新的块级格式化上下文(Block Formatting Context: BFC)环境

注:float脱离文档流时,其他盒子会无视这个元素,但其他盒子内的文本依然会为这个元素让出位置,环绕在周围(可以说是部分无视)

溢出

overflow
text-overflow

Box 盒模型

MDN 盒模型
页面中所有元素(content内特容)都被Box盒子包裹

  • block box
  • inline box

行内盒子:

  1. 宽高无效;
  2. 外边距、内边距和边框是部分生效的,
    垂直方向上的 margin padding border 无效。

使用 inline-block 可以使用宽高生效,同时避免垂直方向上的重叠

外边距折叠

同一块 渲染区域 发生外边距折叠的三种情况:

  1. 相邻的兄弟元素
    块的上下,行的左右

  2. 没有内容将父元素和后代元素分开

    • 没有 border,padding,行内内容做阻隔,也没有创建BFC,则块级元素的上边界会穿过父元素
    • 没有 border,padding,行内内容做阻隔,或没有规定 height / min-height (max-height看情况)来规定父元素范围,则块级元素的下边界会穿过父元素
  3. 空的区块
    如果块级元素没有设定边框、内边距、行级内容、高度(height)、最小高度(min-height)来分隔块级元素的上边距(margin-top)及其下边距(margin-bottom),则会出现 上下外边距的折叠。

如果包含负边距,折叠后的外边距的值为最大的正边距与最小(绝对值最大)的负边距的和。
如果包含负边距,折叠后的外边距的值为最大的正边距与最小(绝对值最大)的负边距的和。
外边距折叠仅与垂直方向有关。

MDN 视觉格式化模型

FC (format context) 格式化上下文

MDN FC
表示一块独立的渲染区域(区域间互补影响),
定义了元素的边距、边框和填充如何与同一上下文中的其他块交互。
渲染规则:

  1. 每个元素的margin box的左边, 与包含块border box的左边相接触(对于从左往右的格式化,否则相反)。即使存在浮动也是如此。
  2. 垂直方向上会适用外边距折叠规则
  3. 从上向下的正常流,根据盒子规则渲染

参考博客

BFC

FFC 和 GFC 除布局之外,与区块格式化上下文类似。弹性/网格容器中没有可用的浮动子级。

IFC

段落的上下文

  • 17
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
前端开发中,BFCIFCGFCFFC 是指不同的 CSS 布局上下文,它们分别代表: 1. BFC(块级格式化上下文):是一个独立的块级渲染区域,具有一定的布局规则,内部的块级元素会按照一定的规则进行排列。BFC 的特点是内部的盒子会在垂直方向上一个接一个地放置,同一行的盒子在水平方向上也有一定的间隔。常见的触发 BFC 的方式包括设置元素的 overflow 属性(除了 visible 以外的值)、float 属性、position 属性(除了 static 以外的值)、display 属性为 table-cell、table-caption 或 inline-block 等。 2. IFC(内联格式化上下文):是一块内联元素的渲染区域,内部的内联元素会按照一定的规则进行排列。IFC 的特点是内部的内联盒子在垂直方向上一个接一个地放置,同一行的盒子紧贴在一起。常见的触发 IFC 的方式包括设置元素的 display 属性为 inline-block、inline-table 或 flex 等。 3. GFC(网格格式化上下文):是一个独立的网格渲染区域,内部的网格元素会按照一定的规则进行排列。GFC 通常用于实现复杂的网格布局,它的特点是能够自动适应不同大小的元素,并支持单元格合并等高级特性。常见的触发 GFC 的方式包括设置元素的 display 属性为 grid。 4. FFC(自适应格式化上下文):是一个渲染区域,内部元素会根据可用的空间自动进行排列和缩放。FFC 的特点是可以实现类似于图像的自适应缩放效果,通常用于实现响应式布局。常见的触发 FFC 的方式包括设置元素的 display 属性为 flex 或 inline-flex。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值