【前端布局技术】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 阅读详情

盒模型

在讲BFC、IFC之前,首先来了解一下盒模型。

盒模型的结构

盒模型由以下4个部分组成:

内容content + 内边距padding + 边框border + 外边距margin

盒模型的类型

盒模型分为两类:

一是标准盒模型,其组成为 margin + border + padding + content,如下图:
请添加图片描述
二是IE盒模型,其组成为 margin + content (border + padding) 请添加图片描述
而盒模型的类型可以通过【box-sizing】属性来进行控制。

这两种盒模型的区别在于:

  1. 对于标准盒模型而言,从图中其实就能看到,如果向元素中添加 padding、border、margin,其会影响元素的宽高。
  2. 而对于IE盒模型,添加 padding、border、margin 则不会影响元素的宽高。

元素宽高变化,则意味着可能会影响其它元素的布局!

在浏览器控制台中执行以下命令,就可以看到页面中的 box 区块(红色线框部分)

[].forEach.call(document.querySelectorAll('*'), function(a){a.style.outline = "1px solid red";}) 

BFC、IFC

BFC

BFC(Block Formatting Context),即块级格式化上下文。
IFC(Inline Formatting Context),即行内格式化上下文。

我们先来讲 BFC,实际上理解 BFC 之后,自然也就理解 IFC 了。

BFC是W3C CSS 2.1 规范中的一个概念,它决定了元素如何对其内容进行定位,以及与其他元素的关系和相互作用。当涉及到可视化布局的时候,Block Formatting Context 提供了一个环境,HTML元素在这个环境中按照一定规则进行布局。在官方文档中,是这样介绍BFC的:

一个BFC区域包含创建该上下文元素的所有子元素,但是不包括创建了新的BFC的子元素的内部元素,BFC是一块独立的渲染区域,可以将BFC看成是元素的一种属性,拥有了这种属性的元素就会使他的子元素与世隔绝,不会影响到外部其他元素

因此,实际上可以将 BFC 视作一个箱子,箱子里面的元素不会与箱子外面的元素产生作用。

同时,可以总结出 BFC 的两个特点:

  1. 每一个BFC区域中,只包含该元素的子元素,而其子元素的子元素则不在其中。
  2. 每一个 BFC 区域,都是独立的,互相之间不会产生影响。

如何创建 BFC

  • 根元素body本身就是个BFC;
  • 元素设置浮动
  • 元素设置绝对定位
  • display 设置为inline-block、table-cell、flex等;
  • overflow 设置为hidden

BFC 的应用

1.解决外边距塌陷问题(即垂直方向上的塌陷)

BFC可以用于解决开发过程中,外边距在垂直方向上的塌陷问题。看下面这个例子:
在这里插入图片描述
这两个盒子,都拥有 100 的外边距,但实际上两个盒子在垂直方向上的距离只有 100(本来应该是 200),这就是外边距塌陷。

那么如何使用 BFC 来解决这一问题呢?

只需要给这两个盒子都加一个父元素,并且将这个父元素设置成BFC区域,就可以解决这个margin塌陷的问题。
请添加图片描述

2.解决包含塌陷

有时候,给子元素加上 margin 时,会使得父元素位置也发生移动。例如下面这个例子:
请添加图片描述
很显然,我们只是想要子元素距离父元素50px,而不是整个父元素都一起跑。这个时候用padding可以解决问题,但是用BFC同样可以解决。

只需要将父元素变为BFC区域,就能得到解决
请添加图片描述
因为此时父元素是一个独立的区域,其中的任何操作,都不会影响到外部。

3.清除浮动

众所周知,将子元素设置浮动可能会导致父元素高度塌陷,因此需要清除浮动,即:overflow: hidden。而实际上这里就是创建了一个 BFC,从而使得子元素的变动不会影响到外部元素。

4.阻止标准流元素被浮动元素覆盖

大家都知道,浮动的元素会脱离文档流,跑到上一个层面,也就是和原本的元素们不在一个层面了。所以可能会出现浮动元素覆盖基本元素的问题。看下面这个例子:
请添加图片描述
红色元素浮动后,脱离了文档流,因此盖住了蓝色元素。那么此时,我们只需要让蓝色区域成为 BFC,即可做到不受浮动元素的影响。

而且还能利用这个特性,来实现蓝色盒子宽度根据红色盒子的宽度来做自动适应,即左边固定、右边自适应的两栏布局!

IFC

操作系统实验四 进程运行轨迹的跟踪与统计(哈工大李治军) 实验4 进程运行轨迹的跟踪与统计 实验目的 掌握 Linux 下的多进程编程技术; 通过对进程运行轨迹的跟踪来形象化进程的概念; 在进程运行轨迹跟踪的基础上进行相应的数据统计,从而能对进程调度算法进行实际的量化评价,更进一步加深对调度和调度算法的理解,获得能在实际操作系统上对调度算法进行实验数据对比的直接经验。 实验内容 进程从创建(Linux 下调用 fork())到结束的整个过程就是进程的生命期,进程在其生命期中的运行轨迹实际上就表现为进程状态的多次切换,如进程创建以后会成为就绪态;当该进程被调度以 阅读详情

相关推荐

架构决策之消息中间件MQ系列六-Pulsar

一、架构

恰恰虎的博客 7253

什么是BFC?

(1)、什么是BFC与IFCa、BFC(Block Formatting Context)即“块级格式化上下文”, IFC(Inline Formatting Context)即行内格式化上下文。常规流(也称标准流、普通流)是一个文档在被显示时最常见的布局形态。一个框在常规流中必须属于一个格式化上下文,你可以把BFC想象成一个大箱子,箱子外边的元素将不与箱子内的元素产生作用。 b、BFC是W3C

文摘资讯 469

XVF3800麦克风阵列实战:从选型到快速原型搭建

本文详细介绍了XVF3800麦克风阵列的选型与快速原型搭建实战经验。从开箱即用的特性到波束成形、回声消除等核心功能拆解,再到硬件设计避坑指南和固件开发技巧,帮助开发者高效实现智能语音设备的开发。特别适合智能音箱、会议终端等需要远场拾音和声源定位的应用场景。

weixin_29161719的博客 273

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

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

朝阳39的博客 1239

防火墙学习5---虚拟系统和跟系统通过路由表互访

虚拟系统与跟系统互访可分为虚拟系统访问根系统和跟系统访问虚拟系统。

weixin_48030849的博客 1031

定时移动鼠标点击鼠标,防止电脑息屏的vba脚本

定时移动鼠标,使系统始终处于激活状态,防止系统息屏。

panfei263031的博客 5928

BFC和IFC

BFC和IFC

yzj_xxj的博客 475

LinuxCNC---在PC端显示开发板LinuxCNC界面

  今天在调试开发板时,执行开发板上的linuxcnc指令,总是出现如下报错 LINUXCNC - 2.9.0~pre0 application-specific initialization failed: couldn't connect to display "192.168.137.3:1" Error in startup script: invalid command name "image" while executing "image create photo -file $f/$i

中华田园巨龙 3470

BFC的布局规则

在起初我们做网页应该还没彻底了解,到底是怎么进行一个布局,在我们头脑中布局应该分为三部分,头,中,尾三部分,这样理解也没有错,但是我们所有的布局都是会遵循BFC布局为标准。 今天来展示一下BFC布局的详细情况: BFC是怎样形成的 BFC的布局规则: 1、内部的Box会在垂直方向, 一个接-个地放置。 2、Box垂直方向的距离由margin决定。属于同-一个BFC的两个相邻Box的ma...

Startwithablank的博客 5533

制造业私有化LLM部署实战:从RAG到智能体,构建企业专属知识大脑

大型语言模型(LLM)作为人工智能的核心技术,通过在海量文本数据上进行预训练,具备了强大的语言理解和生成能力。其原理在于基于Transformer架构,通过自注意力机制捕捉长距离语义依赖。这一技术价值在于能将非结构化信息转化为可计算、可推理的知识,从而赋能企业实现知识的高效管理与应用。在制造业等强数据安全与知识密集型领域,私有化部署的LLM结合检索增强生成(RAG)和智能体(Agent)技术,能够深入业务流程,构建安全、专属的智能知识中枢。本文聚焦于如何利用Qwen、LangChain、向量数据库等技术栈,

weixin_42523711的博客 247

LM1875官方电路图元件作用解释说明以及电路调校

R1是为C1提供充放电回路用的电阻,这是老外工作严谨的地方,其实接好电位器之后直流通路就已经存在了,这个加上只能防止最恶劣情况时也能把C1的电能放掉,尽管只有一点点 C1是输入电容,主要作用是隔离前后级的直流信号,但是这个电容对音质的影响很大,可以换用不同的品牌和容量来部分修改音质和音色 R2提供LM1875正输入端的直流电平控制点,接地就表示在理想情况下Lm1875的输出直流电平是0V;还有一个作用就是确定放大器的交流输入阻抗为电阻值。 R3、R4是反馈电阻,这个电路的放大倍数为R4/R3+1=21倍。.

m0_50862404的博客 1万+

网页核心页面设计(第8章)

伪元素是 CSS 中的一种选择器,用于选择某些特定的元素或元素的一部分,而这些元素本身并不存在于文档的结构中。伪元素使得网页设计师可以更灵活地控制样式,从而可以为元素的内容、框架或文本提供额外的样式,增强网页的视觉效果和用户体验。 1、作业 2、伪元素清除浮动 BFC 的特点 独立性:BFC 内部的元素不会影响外部元素,外部元素也不会影响内部元素。这种独立性使得布局更加可控。清除浮动:当 BFC 中的元素浮动时,它会包裹住这些浮动的元素,避免其影响到外部的布局,有助于解决清除浮动的问题。高度计算:B

m0_48431810的博客 1107

排队论 | 排队论建模方法

排队论 | 排队论建模方法

算法如诗的博客 352

css代码上一章 下一章,第一章:css进阶【必备篇】

整理中高级前端系列,可以当作面试复习,也可以当作实战来看,分享一下 方便自己,方便他人。有不足的地方欢迎评论~结构性属性:display、position、 overflow、float、margin、padding表现性属性:background、border、font、textcss 选择器id、类、标签名、伪类(:link、:visited、:hover、:active、:nth-child...

weixin_33957382的博客 1475

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

CSS盒子模型居中方法,web前端开发教程视频

前言 下面分享了一些关于腾讯,酷狗,字节(实习的)面试真题,让大家参考。大家也自己去收集整理其他的面试题,可以通过这些面试题,查看自己的不足,也可以了解自己想要去的公司容易出现的面试题,进行有针对性复习。 问:BFC 与 IFC 区别 BFC 是块级格式上下文,IFC 是行内格式上下文: 内部的 Box 会水平放置 水平的间距由 margin,padding,border 决定 问:BFC会与float元素相互覆盖吗?为什么?举例说明 不会,因为 BFC 是页面中一个独立的隔离容器,其内部的元素不会与外

qd520_1314的博客 183

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

前端zoongjie

前端 HTML BFC 定义: Block formatting context ,直译为"块级格式化上下文"。 是一个独立的渲染区域,只有Block-level box参与 它规定了内部的Block-level Box如何布局,并且与这个区域外部毫不相干。 特性 BFC内的容器在垂直方向依次排列 类似正常情况下块元素在垂直方向上依次排列,较易理解。 属于同一个BFC的两个相邻容器的上下margin会重叠(相邻两容器上下外边距会发生重叠) 渲染前 渲染后 计算BF

qvwvq的博客 194

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

CSS3与页面布局学习总结

目录 一、BFC与IFC 1.1、BFC与IFC概要 1.2、如何产生BFC 1.3、BFC的作用与特点 二、定位 2.2、relative 2.3、absolute 2.4、fixed 2.5、z-index属性 2.6、菜单 2.7、:target伪类 三、浮动 3.1、float取值 3.2、float的特性 3.3、清除浮动 3.3.1、清除外部浮动 3.3.2、清除内部浮...

weixin_33756418的博客 116

前端面试题总结之HTML与CSS (一)

link与@import导入样式的区别 a、html页引用css的三种,一是页内的style标签,二是link外链,三是@import导入 b、link是xhtm标签,不只外链css,还可以是rss( Really Simple Syndication)服务,而@import只能是css c、link外链的文件会与文档同步加载,而@import则是等待文档加载完成后才加载 d、l...

前端小白菜 1085

学web开发技术,2021中高级前端面试题合集

02 目录 下面是这篇文章的目录结构,一般比较简单的问题我就一笔带过了,主要是分享一下比较有难度的知识点,答案来自网上,如果有版权问题我会删除。还有本文只是给出一个大概的知识点,如果想要深入学习还要靠自己去查一下哦! 如果答案有错误,欢迎指正! 计算机基础 前端基础(HTML/CSS) JavaScript 前端框架 浏览器渲染 计算机网络 手写代码 Webpack Node ES6 03 计算机基础 进程与线程的区别 进程是系统进行资源分配和调度的一个独立单位 线程是CPU调度和分派的基本单位,

m0_60196730的博客 245

高频面试题之CSS篇

1 浮动元素居中 (1) 没有宽度 父子元素都float:left;position:relative.父元素left:50%,子元素left:-50% <meta charset="utf-8"> <style> .box { border: 2px solid green; float: left; position: relative; ...

ljs_coding 381

在牛客网答题总结的前端面试71道HTML+CSS常考题

1、浏览器页面有哪三层构成,分别是什么,作用是什么?       构成:结构层、表示层、行为层        分别是:HTML、CSS、JavaScript        作用:HTML实现页面结构,CSS完成页面的表现与风格,JavaScript实现一些客户端的功能与业务。2、HTML5的优点与缺点?优点:        a、网络标准统一、HTML5本身是由W3C推荐出来的;       b、多...

bluedandelion的博客 4291

【前端三剑客——CSS】之BFC为何物

好了,这就是整理的前端从入门到放弃的学习笔记,还有很多没有整理到,我也算是边学边去整理,后续还会慢慢完善,这些相信够你学一阵子了。做程序员,做前端工程师,真的是一个学习就会有回报的职业,不看出身高低,不看学历强弱,只要你的技术达到应有的水准,就能够得到对应的回报。学习从来没有一蹴而就,都是持之以恒的,正所谓活到老学到老,真正懂得学习的人,才不会被这个时代的洪流所淘汰。一个人可以走的很快,但一群人才能走的更远。

sahtk89452的博客 1197

前端问题总结

前端问题总结 js重难点 Javascript是弱类型语言,单线程 淡入淡出轮播图时,在变化前吧当前的下标记录下来 Https的默认端口号是443 http的默认端口号是80/8080 1.多行文本省略号的设置 span{ width: 520px; word-break: break-all; te...

weixin_30770783的博客 348

接单程序4,前端

2,box-sizing:content-box的height,width是只包含了content的高度宽度,box-sizing:border-box的height,width是包含了border和padding和高度宽度。8,block可以设置高度宽度,inline不可以,但两者都可以设置padding和margin。1,<html>和 <body>元素本质上是block,可以设置box-sizing,padding,border,margin,bakcground,width,height。

m0_66612068的博客 162

html和css问题

一些常考点的题 1.盒模型概念 参考答案 2.position属性 参考答案 3.display https://blog.youkuaiyun.com/zgh0711/article/details/81536355 4.IFC和BFC https://blog.youkuaiyun.com/u011472830/article/details/73010596 5.双飞翼布局 ...

jo___jo的博客 162

《CSS核心技术详解》

前言 看似简单的CSS,却暗藏玄机,那是我们摸爬滚打好长时间后悟出的真理。 在很长的一段时间里,我并没有重视CSS,觉得CSS很简单,无非就是一些属性;后来才发现自己小看了CSS,对CSS的了解实在是太少,尤其是对其核心概念的理解太模糊,实际上它有很多神奇的地方并不为大家所知。对于一个新手来说,只知道一些理论但在实际开发中不会使用是不行的,于是笔者萌生了写作本书的最初想法。 市面上介绍CSS基础的...

weixin_34082695的博客 223
下一篇: 【前端布局规范与方案】三种传统布局方式
cannotbecounted
博客等级 码龄7年 101粉丝 59原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值