bfc是什么_一次弄懂css的BFC

前言

BFC在css的学习中是重要的但不易理解的概念,BFC也牵扯了很多其他问题,如浮动、定位、盒模型等,因此弄懂BFC是很有必要的。本文对BFC进行总结,希望对你有所帮助。

BFC是什么?

先看看MDN的定义:

块格式化上下文(Block Formatting Context,BFC) 是Web页面的可视化CSS渲染的一部分,是块盒子的布局过程发生的区域,也是浮动元素与其他元素交互的区域。

官方文档的说法很难理解,查阅多方资料后,得到以下的结论:

BFC(block formatting context)块级格式化上下文,它是页面中的一块渲染区域,并且有一套属于自己的渲染规则,它决定了元素如何对齐内容进行布局,以及与其他元素的关系和相互作用。 当涉及到可视化布局的时候,BFC提供了一个环境,HTML元素在这个环境中按照一定规则进行布局

简短的总结:BFC是一个独立的布局环境,BFC内部的元素布局与外部互不影响

BFC的布局规则

  1. 内部的Box会在垂直方向一个接着一个地放置。
  2. Box垂直方向上的距离由margin决定。属于同一个BFC的两个相邻的Box的margin会发生重叠。
  3. 每个盒子的左外边框紧挨着包含块的左边框,即使浮动元素也是如此。
  4. BFC的区域不会与float box重叠。
  5. BFC就是页面上的一个隔离的独立容器,容器里面的子元素不会影响到外面的元素,反之亦然。
  6. 计算BFC的高度时,浮动子元素也参与计算。

如何触发BFC?

这里只记录常用方法,想要了解全部触发BFC的方法请点击此链接

a9b8ebb77e9f307acd5794773e7bb427.png

BFC可以解决哪些问题?

  • 解决浮动元素令父元素高度坍塌的问题

方法:给父元素开启BFC

原理:计算BFC的高度时,浮动子元素也参与计算

演示:

41b6b96ef35d2df96f0d9b75e77e89a4.gif
  • 非浮动元素被浮动元素覆盖

方法:给非浮动元素开启BFC

原理:BFC的区域不会与float box重叠

演示:

945749e27f7b05f587476d67d6580fb3.gif
  • 两栏自适应布局

方法:给固定栏设置固定宽度,给不固定栏开启BFC。

原理:BFC的区域不会与float box重叠

演示:

d55f116caaac148e5dd2f73beedd796e.gif
  • 外边距垂直方向重合的问题

方法:给上box或者下box任意一个包裹新的box并开启BFC

原理:属于同一个BFC的两个相邻的Box的margin会发生重叠。

演示:

85960112459ac3bbb14b1b7911dec14a.gif

结语

以上就是本文关于BFC的全部内容,如果有不正确的地方,欢迎大家指正。码字不易,且赞且珍惜。

参考

BFC官方文档

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/427481.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

ES6模块的import和export用法总结

ES6之前已经出现了js模块加载的方案,最主要的是CommonJS和AMD规范。commonjs主要应用于服务器,实现同步加载,如nodejs。AMD规范应用于浏览器,如requirejs,为异步加载。同时还有CMD规范,为同步加载方案如sea…

windows网关详解 【了解网关的重要性,增加网络性能】【FreeXploiT综合文】

理解Windows中的路由表和默认网关 每一个Windows系统中都具有IP路由表,它存储了本地计算机可以到达的网络目的地址范围和如何到达的路由信息。路由表是TCP/IP通信的基础,本地计算机上的任何TCP/IP通信都受到路由表的控制。 理解路由表 你可以运行 route …

隐藏该监视器无法显示模式_【春星开讲 | 9137】达芬奇4K调色监看的好伙伴——明基PD2720U专业显示器...

近几年来,4K制作成为影视行业的一个热词,从标清到高清,从高清到超高清,从2K到4K,影视前期拍摄设备和后期制作流程都在发生着剧烈的变革。单就我所从事的影视调色行业而言,4K调色也是很多调色师梦寐以求但也…

了解WWW服务与HTTP协议 【入门与应用】

轻松认识HTTP协议的概念和工作原理 当我们想浏览一个网站的时候,只要在浏览器的地址栏里输入网站的地址就可以了,例如:www.microsoft.com,但是在浏览器的地址栏里面出现的却是:http://www.microsoft.com,你…

flex 下对齐_flex布局

基本概念在父元素上启用display:flex 开启弹性布局,子元素叫flex item,父元素叫flex container父元素的属性flex-dirention属性有4个值.box { flex-direction: row | row-reverse | column | column-reverse; }row(默认值)&#x…

BOOT INI专辑

Windows 可能在 Boot.ini 文件中使用 Signature() 语法概要在安装 Windows 之后,您可能注意到在 Boot.ini 文件中高级 RISC 计算 (ARC) 路径项以"signature()"语法开头。例如: signature(8b467c12)disk(1)rdisk(0)partition(2)/winnt"des…

指针强化

铁律1:指针是一种数据类型 1)指针也是一种变量,占有内存空间,用来保存内存地址 测试指针变量占有内存空间大小 int a 10;char *p1 100; //分配4个字节的内存char ****p2 100;int *p3 NULL;p3 &a;*p3 20; //间接的修改a…

windows游戏编程_苹果的Mac和微软的Windows该如何选择?

WORK HARD FOR A BETTER LIFEMac&Windows如何选择?///教你认识Mac与Windows的区别正确选择最适合自己的电脑苹果Mac系列电脑一直属于小众化产品,使用的人较少。有些朋友给使用Macbook系列电脑的朋友打上“装X”、“华而不实”等标签。而使用MacBook的…

子网掩码相关教学 子网掩码快速算法 沉睡不醒blog

如果你希望每个子网中只有5个ip地址可以给机器用,那么你就最少需要准备给每个子网7个ip地址,因为需要加上两头的不可用的网络和广播ip,所以你需要选比7多的最近的那位,也就是8,就是说选每个子网8个ip。好,到…

Wireshark抓包分析TCP建立/释放链接的过程以及状态变迁分析

Wireshark抓包分析TCP建立/释放链接的过程以及状态变迁分析 一、介绍计算机网络体系结构 1.计算机的网络体系结构 在抓包分析TCP建立链接之前首先了解下计算机的网络通信的模型,我相信学习过计算机网络的都比较熟悉,如下图所示是一个OSI七层模型、TCP/IP…

代码 直接调节显示设备亮度_LED显示屏参数系列,亮度是什么,如何调节,如何选择...

亮度概念:亮度:在给定方向上, 每单位面积上的发光强度。亮度的单位是cd/m2,读作Candela per square metre(坎德拉每平方米)。有时候LED显示屏厂家会标示亮度单位为nit(尼特)&#xf…

r语言error in match.fun(fun) :_Go语言200行写区块链源代码分析

Github上有一个Repo,是一个使用Go语言(golang),不到200行代码写的区块链源代码,准确的说是174行。原作者起了个名字是 Code your own blockchain in less than 200 lines of Go! 而且作者也为此写了一篇文章。https://medium.com/mycoralheal…

方案的写法

转至野路子吴鲁加的网络日志方案的写法今天看《胡雪岩》第二册P530提道:像这些“说贴”,最要紧的是简洁,要几句话就能把那些大官儿说动心,才是上品……这个说帖,王有龄、赵景贤一定会看完,但递到黄宗汉手中…

oracle distinct分页优化_Oracle SQL性能优化最常用的40条建议

关于Oracle SQL优化的内容,这一篇应该能满足常规大部分的应用优化需求,整整40条优化建议,干货满满。1. SQL语句执行步骤语法分析> 语义分析> 视图转换 >表达式转换> 选择优化器 >选择连接方式 >选择连接顺序 >选择数据的…

Python的文件

今天我们主要来讲一下关于Python文件的一些知识: 1、当我们先打开一个文件的时候,在Python中可以这样子做:使用open()函数,大概类似于这样:f open(lsf.txt),你应该知道txt是记事本文件的后缀吧&#xff0c…

必须理解的分布式系统中雷同的集群技术及原理

写在前面 在当今信息爆炸的时代,单台计算机已经无法负载日益增长的业务发展,虽然也有性能强大的超级计算机,但是这种高端机不仅费用高昂,也不灵活,一般的企业是负担不起的,而且也损失不起,那么将…

如何获取.then的返回值_仅仅知道如何终止XHR请求,或许对你来说是不够的!

TLDR:当我们需要的时候,我们可以通过AbortController接口来终止一个或者多个请求。前言到目前为止,我们有两个常用的基本的手段去发送请求进而局部刷新页面内容,其一是XMR(XMLHttpRequest),其二是fetch,我们一个个说XH…

Java - 常用工具类 - 集合框架

转载于:https://www.cnblogs.com/wnzhong/p/9309371.html

stunnel使用详解

http://www.stunnel.org/faq/args.htmlhttp://www.colasoft.com.cn/support/monitor_stunnel.php科来网络分析系统与stunnel结合使用科来网络分析系统是一款强大的网络检测分析工具,可对网络中未加密的数据传输进行检测分析并实时显示分析结果,包括用户的…

binlog日志_【删库跑路】使用Binlog日志恢复误删的MySQL数据

前言“删库跑路”是程序员经常谈起的话题,今天,我就要教大家如何删!库!跑!路!开个玩笑,今天文章的主题是如何使用Mysql内置的Binlog日志对误删的数据进行恢复,读完本文,你…