块级格式化上下文规则(常规流BFC IFC)

CSS——FC(BFC/IFC/FFC/GFC)超详细版+原理案例分析 文章目录一、Box二、FC(Formatting Context)1. BFC1.1 BFC的形成条件 一、Box Box 是 CSS 布局的对象和基本单位, 一个页面是由很多个 Box 组成的。 元素的类型和 display 属性,决定了这个 Box 的类型。 不同类型的 Box, 会参与不同的 Formatting Context(一个决定如何渲染文档的容器),因此Box内的元素会以不同的方式渲染。 让我们看看有哪些盒子: 1、block-level box:display :属性为 block, li 阅读详情

格式化上下文(就是盒子排列渲染的规则)

是页面上的一个隔离独立的渲染区域,规定了常规流中的盒子怎么布局。
在常规流中,所有的盒子(不管是内联盒子(内联元素等)还是块级盒子(块级元素等)都要属于一个格式化上下文,不是属于块级格式化上下文就是属于内联格式化上下文,但是不能同时属于两者。

常规流大体规则:
规定了元素从上到下,左到右排列.
常规流的具体规则分为:
1.块级格式化上下文(bfc):规定常规流快盒的布局规则
2.行内格式化上下文(ifc):规定常规流行盒的布局规则

注:视觉格式化模型中包含了常规流,而常规流包含了块格式化上下文和行格式化上下文规则。

快级格式化上下文(BFC)

Block Formatting Contexts就是页面上的一个隔离独立的渲染区域,它规定了在该区域中,常规流块盒的布局(就是块元素怎么摆放怎么渲染的区域),也是浮动元素与其他元素交互的区域。

能在内部创建新的BFC的属性:

  1. 根元素(html)或其它包含它的元素,覆盖了网页中所有元素(因为所有元素都嵌套在HTML内部,所以说有元素都在HTML创建的BFC中渲染)
  2. float的值不为none。
  3. overflow的值不为visible。
  4. display的值为table-cell, table-caption, inline-block中的任何一个。
  5. position的值不为relative和static。

案例:
看下面的图

  1. A、C、E、F、G元素都在根元素(html)创建的BFC中渲染布局

  2. 元素B在A(float)元素创建的BFC中渲染

  3. 元素D在元素C(position:absoult)创建的BFC中渲染

  4. 元素H在元素G(overflow:hidden)创建的BFC中渲染

在这里插入图片描述

BFC布局规则(也就是常规流快盒的布局规则):

1.盒子的布局开始是从包含容器的顶部开始的垂直排列。

2.同一个BFC中,在两个相邻的块级元素中,垂直margin会发生折叠

3.常规流块盒在水平方向上,必须撑满包含快

4.浮动定位和清除浮动时只会应用于同一个BFC内的元素,浮动不会影响其它BFC中元素的布局,而清除浮动只能清除同一BFC中在它前面的元素。

5.每个元素的margin box的左边, 与包含块border box的左边相接触(对于从左往右的格式化,否则相反)。即使存在浮动也是如此。 即使存在浮动也是如此(尽管一个元素的内容区域会由于浮动而压缩),除非这个元素也创建了一个新的 Block Formatting Context 。

6.就是页面上的一个隔离的独立渲染区域,不同的BFC区域,它们进行渲染时互不干扰,创建bfc的元素,隔绝了它内部和外部的联系,内部的渲染不会影响外部的元素(外部可能是别的bfc区域),反之外部的渲染不会影响内部。

由于BFC是独立的渲染区域所以会发生以下这些情况:
1)创建bfc的元素,它自动计算浮动元素的高度,因为要隔绝内部和外部的联系内部的渲染不能影响外部bfc布局,如果高度塌陷里面的东西跑出去了就影响了外部。只要给元素设置这些属性,则这些元素容器就不受外面的BFC约束了,他会给自己和他包含的元素应用新的BFC。也就是现在这些BFC平起平坐,你管不着我,我管不着你,只是我们两个的BFC规则是一样的。

它自动高度计算浮动元素
.p1{
	width:100px;
	height: 100px;
	float: left;
	background:lightblue;
}
.p2{
	margin-top: 50px;
	border:5px solid red;   
	/* 创建BFC */
	overflow: hidden;    
}   
<div class="p2">
    <div class="p1"></div>
</div>

在这里插入图片描述

2)创建bfc的元素,它的边框盒不会与浮动元素重叠会避开浮动元素,因为里面是独立渲染区域不能和外部相互干扰,所以避开了浮动元素(相当于加了margin-left避开了浮动元)那么margin-left相对包含块的左边缘不是浮动元素。

原理就和clear是一样的增加外边距和清除区域
.p1{
    width:100px;
    height: 100px;
    float: left;
    background:lightblue;
}
.p2{
    background: red;
    height:300px;
    /* 创建BFC */
    overflow: hidden;
}   

如果想让bfc元素和普通元素有点距离可以设置margin-right,因为margin-right也是浮动的一部分.

在这里插入图片描述

  1. 创建bfc的元素(处在不同的BFC中),不会和它的子元素进行外边距合并因为它们不在同一bfc里面,它们的渲染是互不干扰,你不能说盖BFC里的元素和另外一个BFC中的元素的外边距进行合并,因为该BFC不能影响到另外一个BFC,所以不会出现外边距合并。
垂直外边距不会合并
.p1{
    width:100px;
    height: 100px;
    background:lightblue;
    margin-top: 100px;
}
.p2{
    background: red;
    height:300px;
    /* 在内部创建BFC */
    overflow: hidden;
}   

它不会计算absolute元素的高度因为绝对定位完全脱离文档流了,而浮动还跟文档流有一点关系比如:文字或行内元素会为浮动让出位置。

在这里插入图片描述

IFC行内格式化上下文规则:

  1. 盒子是水平一个接一个的排列,水平的margin,内边距,边框是可以有的。

  2. 垂直方向的对齐,可能是底部对齐,顶部对齐,也可能是基线对齐(这个是默认的);ps.这里的盒子应该是指的内联元素的盒子(span,strong等)和匿名内联盒子(只有文本,没有内联元素包含,自动创建的),他们合称内联盒子,一个或者多个内联盒子组成一个行框,行框的宽度由包含块和出现的浮动决定的(为什么有浮动呢,后面解释);行框的高度决定看我的这篇文章(css之line-height);一定要分清楚,行框和内联盒子的关系,要不然我所说的你就不太可能理解

  3. 行框中的内联盒子的高度小于行框的高度时,内联盒子的垂直方向的对齐方式取决于vertical-align属性

  4. 当一个行框水平不能容纳内联盒子时,他们将会在垂直方向上产生多个行框,他们上下一个挨着一个,但是不会重叠

  5. 一般来说,行框的左边界紧挨着包含容器的左边界,行框的右边界紧挨着包含容器的右边界,(是两个边都紧挨着)。然而,浮动盒子可能存在于包含边框边界和行框边界之间(后面解释这种情况);

  6. 多个内联盒子的宽度小于包含他们的行框时,他们在水平方向的分布取决于text-align属性(默认是left)

参考于:https://www.cnblogs.com/todayhappy/p/4608476.html

告别抓包失败!保姆级配置:让Burp+Proxifier稳定抓取任意微信小程序 本文提供了一套完整的Burp+Proxifier配置方案,确保稳定抓取微信小程序数据。从环境准备、工具选型到Burp Suite深度配置和Proxifier精准设置,详细解决了证书安装、进程捕获和乱码解析等核心问题,帮助开发者告别抓包失败,提升调试效率。 阅读详情

相关推荐

python爬虫入门教程(非常详细)

爬虫指的是一种自动化程序,能够模拟人类在互联网上的浏览行为,自动从互联网上抓取、预处理并保存所需要的信息。爬虫运行的过程一般是先制定规则(如指定要抓取的网址、要抓取的信息的类型等),紧接着获取该网址的HTML源代码,根据规则对源代码进行解析和抽取,最后进行处理和保存。爬虫在实际应用中广泛使用,如搜索引擎、大数据分析、交易数据采集等领域,都需要用到爬虫技术来实现信息的定向采集和处理。

工宗浩生财指南针 2万+

css之BFC块级格式化上下文

css之BFC块级格式化上下文 BFC 定义 BFC(块级格式化上下文),一个创建了新的BFC的盒子是独立布局的,盒子内元素的布局不会影响盒子外面的元素。在同一个BFC中的两个相邻的盒子在垂直方向发生margin重叠的问题 BFC是指浏览器中创建了一个独立的渲染区域,该区域内所有元素的布局不会影响到区域外元素的布局,这个渲染区域只对块级元素作用。 ...

low666的博客 725

Java对接快递鸟,查询快递物流信息

根据用户输入的订单号,我们的后台识别订单号并根据快递鸟查询快递API接口,实现自动查询的功能。下面是java版本的根据单号查询物流跟踪信息的详细示例代码。只需要下载就可以运行,(自己需要简单的修改)注:登录快递鸟用户管理后台后获得。登录快递鸟用户管理后台。

Roc的博客 960

【前端学习之HTML&CSS进阶篇】-- CSS第二篇 -- 块级格式化上下文与堆叠上下文

本节内容主要是块级格式化上下文的生成和计算规则以及堆叠上下文的应用,对于BFC区域原理的掌握是实现自己想要样式的必备之课,而Z-index的内容也是十分重要的关键样式之一。

lc1852109的博客 623

9 HAL库驱动框架简述(STM32HAL库)

HAL库外设的使用步骤总结如下:1、定义并填充xxx外设句柄结构体。2、如果遵循HAL库规范,通过HAL_xxx_MspInit()函数,实现外设底层资源的初始化,包括但不限于GPIO、时钟、DMA、中断等资源的初始化。3、调用HAL库的对应外设初始化函数,形如:HAL_xxx_Init()。4、初始化完成,开始使用外设。5、使用方法具体查看对应外设的HAL库驱动包中的说明:补充:HAL库使用主线外设初始化外设使用。

qq_25218501的博客 1983

sift、surf、orb 特征提取——三维重建

参考文章:[sift、surf、orb 特征提取及最优特征点匹配] 最近刚刚入门三维重建,在SFM算法的代码中注意到了feature_type( feature extraction method)这个参数,想细致了解一下这几种特征提取算法,在这里做一下笔记。 SIFT 简介 SIFT(Scale-Invariant Feature Transform)——尺度不变特征变换,是一种计算机视觉的特征提取算法,用来侦测与描述图像中的局部特征。 实质上,它是在不同的尺度空间上查找关键点(特征点),并计算出关键点的

bb_sy_w的博客 4362

CSS:块格式化上下文(BFC)

块格式化上下文是块级盒子的布局过程发生的区域,也是浮动元素与其他元素交互的区域。

前端御书房 750

手把手教你学simulink实例--基于Simulink的船舶动力定位系统建模与仿真

船舶动力定位系统(Dynamic Positioning System, DPS)是一种通过控制推进器来保持船舶在指定位置和航向的技术。它广泛应用于海上钻井平台、海洋调查船、起重船等需要精确位置控制的场景。DPS的核心任务是实时感知环境干扰(如风、浪、流),并通过闭环控制算法调整推进器输出,以抵消外界扰动并维持船舶的位置和姿态。本项目旨在基于MATLAB/Simulink平台,构建船舶动力定位系统的数学模型,并进行仿真分析,验证其性能和稳定性。

MHD0815的博客 1085

【CSS】格式化 (排版) 上下文

针对BFC网上有特别多的说法,但是都没有解释的很清楚,所以我是专门查过W3C文档的。在标准流中,我们所有的盒子,不管是块级盒子还是行内盒子,它们都属于某一个FC(格式化上下文),块级盒子属于BFC(块级格式化上下文),行内级盒子属于 IFC(行内格式化上下文)。BFC就是用来决定块级盒子是如何排布的。在BFC中,块级盒子是一个挨着一个在垂直方向排布的,垂直方向的间距由 margin 属性决定,并且在同一个BFC中,两个相邻的 box 之间 margin会折叠,每个元素的左边缘是紧挨着包含块的左边缘的。

小秀的博客 1333

最新腾讯手游游戏appid列表及urlScheme一览 urlscheme查询

[全网独家] 2024最新腾讯游戏appid列表及urlScheme一览 手游包含王者荣耀QQ飞车我的世界PUBG吃鸡和平精英金铲铲之战三角洲行动QQ炫舞拳皇98OL欢乐斗地主 元梦之星使命召唤等

代码简单说 Vue、JAVA、PHP、Node.js 熟练运用,接口、架构、性能全搞定。 2万+

智能家居系统设计:基于MATLAB的智能家居系统设计和仿真,包括智能家居控制、家庭能源管理和家庭安全监控

基于 MATLAB 的智能家居系统设计方法可以有效地解决各类智能家居问题。

走向CTO的路上... 1775

css【详解】格式化上下文 BFC 、 IFC 、FFC 、GFC

格式化上下文布局 FC(Formatting Context)格式化上下文—— 一个渲染区域,拥有一套渲染规则,它决定了其子元素如何定位,以及与其他元素之间的关系和相互作用。 IFC布局——行内格式化上下文 inline formatting context 触发IFC的方法 块容器盒内不包括任何块级盒,即块容器盒(html行内块级标签或块级标签)内全是行内盒(html内联标签) IFC布局的特点 行内盒水平排列为一行,当容器宽度不够时就会换行 每一行都会生成一个行盒(见触发IFC的方法.

朝阳39的博客 1241

【嘉立创EDA】从AD21导入pcb边界到嘉立创EDA专业版

有许多前期工程由AD进行完成,在后续update的过程中,由于开模等原因限制,部分pcb外型需要继续沿用,本文将此过程记录,以供有需要的读者参考。

l64481000的博客 4523

深入理解BFC与IFC

深入理解BFC与IFC

似水流年QC的博客 2403

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

BFC与IFC的区别

1、什么是BFC? BFC(Block Formatting Context)直译为"块级格式化上下文",是 Web 页面的可视化 CSS 渲染中的一部分,是布局过程中生成块级盒子的区域, 也是浮动元素和其他元素的交互限定区域。 2、怎样创建BFC? 根元素或者包含根元素的元素( html 元素会作为一个 BFC ),意味着 html 元素中的各个元素都在同一 BFC 浮动元素(元素的 float 不为 none) 绝对定位元素(元素的 position 为 absolute 或 fixed) 行内块

BigChicken3的博客 3822

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

CSS2.1常规流(包含BFC,IFC)

常规流中的盒可能是块,可能是行内,块级盒参与块格式话上下文(BFC),行内级盒参与行内格式化上下文(IFC) 一、BFC(Block Formatting contexts) BFC就是我们常说的块级格式化上下文。 哪些元素会建立新的块级格式化上下文? 浮动元素 绝对定位元素 非块盒的块容器(display为inline-blocks、table-cells和table-captions) ...

APieceOfBullshit 362

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

格式化上下文(FC)--BFC、IFC详解

IFC的line box(线框)高度由其包含行内元素中最高的实际高度计算而来(不受到竖直方向的padding/margin影响)IFC中的line box一般左右都紧贴整个IFC,但会因为float元素而扰乱。IFC中不可能有块级元素,当插入块级元素时(比如p中插入div)会产生匿名块与div分隔开,即产生两个IFC,每个IFC对外表现为块级元素,与div垂直排列。·水平居中:当一个块要在环境中水平居中,设置其为inline-block则会在外层产生IFC,通过text-align则可以使其水平居中。

qq_62224122的博客 2062

BFC和IFC

BFC和IFC的理解

qq_36619440的博客 1008

深入理解 BFC、IFC、GFC、FFC

1、定义 BFC全称 是 block formatting context,也就是 块级格式化上下文,是用于 布局块级盒子 的一块 渲染区域。 IFC全称 是 inline formatting context,也就是 内联格式化上下文,是用于 布局内联元素盒子 的一块 渲染区域。 GFC全称 是 gridLayout formatting context,也就是 网格布局格式上下文,是用于 布...

qq_44158936的博客 2978

BFC和IFC分别是什么?BFC有什么作用?

1、简要概括 Block level的box会参与形成BFC:例如display值为block/ list-item/ table Inline level的box会参与形成IFC:比如 display值为inline/ inline-table/ inline-block 2、FC(Formatting Context) 格式化上下文。定义的是页面中的一块渲染区域,并且有一套渲染规则。它决定了其子元素将如何定位,以及和其他元素的关系和相互作用。 3、布局规则 IFC布局规则:在行内格式化上下文中,b

weixin_43912756的博客 3098

BFC IFC 总结记录

引用参考:https://segmentfault.com/a/1190000017273573?utm_medium=referral&utm_source=tuicool http://www.cnblogs.com/lhb25/p/inside-block-formatting-ontext.html BFC 定义 BFC(Block formatting context)直...

weixin_33682719的博客 413

深入理解CSS中的BFC 与IFC , 布局的两大基础概念

本文介绍了CSS布局中的两个重要概念:BFC(块级格式化上下文)和IFC(行内格式化上下文)。BFC是独立布局环境,影响块级元素垂直排列,可解决浮动导致的高度塌陷和外边距合并问题,通过设置overflow、float、position等属性触发。IFC控制行内元素水平排列,处理文本对齐和换行行为,由display:inline或inline-block等触发。文章通过实例展示了BFC清除浮动、防止外边距合并,以及IFC实现行内元素对齐和图文混排的应用场景,比较了两者的区别,帮助开发者更好地控制页面布局。

m0_63472757的博客 917

BFC、IFC概念的布局规则、形成方法、用处

1、Formatting Context Formatting Context(格式化上下文):是W3C CSS2.1规范中的一个概念。它是页面中的一块渲染区域,并且有一套渲染规则,它决定了其子元素将如何定位,以及和其他元素的关系、相互之间的作用。 ...

qq_43743402的博客 773

前端面试-什么是BFC, IFC?

BFC(Block Formatting Contexts) 块级格式化上下文 块级格式化上下文是页面上的一块渲染区域,这块区域由符合条件的容器产生。容器内的子元素会由块盒子和浮动元素按如下规则排列: 纵向一个挨着一个排列 两个盒子的纵向间距由margin属性决定,两个相邻的盒子在垂直方向上的margin会有种“重叠合并”的效果,此时纵向间距距离取较大的那个margin值 这个容器可以看作一个独立的布局环境,容器外的元素与容器内的元素(包括浮动元素)在布局上不会影响到对方。这就产生了两种有趣的效果:

蛋黄酱来一勺 2169

学前端的你了解这些知识吗?——BFC、IFC、GFC、FFC

前端人员都应该了解的知识——BFC、IFC、GFC 和 FFC 前言 想要了解BFC、IFC、GFC、FFC,就必须先要了解FC。 FC的全称是:Formatting Contexts(格式化上下文),它是W3C规范中的一个概念。简单来说,它是页面中的一块渲染区域,并且有自己的一套渲染规则,它决定了其子元素如何定位,以及和其他元素的关系和相互作用。需要注意的是,它并不会影响区域外的元素 前置概念 先让我们了解几个基本概念 1、Box 简单来说,我们的web页面是由一个个BOx组合而成的,而display等

weixin_53515924的博客 3242

什么是 BFC、IFC、GFC 和 FFC 以及其布局规则和用处

什么是 BFC、IFC、GFC 和 FFC 以及其布局规则和用处Box 和 FC(即 formatting context)BFC布局规则IFC布局规则GFC布局规则FFC布局规则 Box 和 FC(即 formatting context) Box 一个页面是由很多个 Box 组成的,元素的类型和 display 属性决定了这个 Box 的类型。不同类型的 Box,会参与不同的 Formatting Context。 Block level的box会参与形成BFC,比如display值为block,lis

weixin_45531741的博客 1391
上一篇: 视觉格式化模型
下一篇: 堆叠上下文
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值