一、什么是BFC

  • 是 Block Formatting Contexts 的缩写,名为“块级格式化上下文”。
  • 是指浏览器中创建了一个独立的渲染区域,并且拥有一套渲染规则,他决定了其子元素如何定位,以及与其他元素的相互关系和作用。

二、BFC的特点

  • 具有 BFC 特性的元素可以看作是隔离了的独立容器,容器里面的元素不会在布局上影响到外面的元素,并且 BFC 具有普通容器所没有的一些特性。通俗一点来讲,可以把 BFC 理解为一个封闭的大箱子,箱子内部的元素无论如何变化,都不会影响到外部。

三、怎样触发BFC

  • overflow: hidden

  • position: absolute

  • position: fixed

  • display: inline-block

  • display: table-cell

  • display: flex

四、BFC布局规则

  • BFC 就是一个块级元素,块级元素会在垂直方向一个接一个的排列

  • BFC就是页面上的一个隔离的独立容器,容器里面的子元素不会影响到外面的元素。同样外面的也不会影响里面的。

  • 垂直方向的距离由margin决定, 属于同一个BFC的两个相邻的标签外边距会发生重叠

  • 计算BFC的高度时,浮动元素也参与计算

五、BFC解决了什么问题

  • 问题:在子元素设置成浮动元素的时候,会产生父元素高度塌陷的问题。

  • 解决方法:给父元素设置overflow:hidden;的时候会产生BFC由于在计算BFC高度时,自然也会检测浮动的子盒子高度。所以当子盒子有高度但是浮动的时候,通过激发父盒子的BFC功能,会产生清除浮动的效果。

  • 问题:属于同一个BFC的两个相邻盒子垂直方向的margin会发生重叠。

  • 解决方法:根据属于同一个BFC的两个相邻盒子垂直方向的margin会发生重叠的性质,可以给其中一个盒子再包裹一个盒子父元素,并触发其BFC功能(例如添加overflow:hidden;)这样垂直方向的两个盒子就不在同一个BFC中了,因此也不会发生垂直外边距合并的问题了。

六、结语

      非常感谢您能读完这篇文章,也欢迎评论补充哦,如果您感觉这篇文章对您有帮助的话,希望您能点个推荐和收藏哦,非常感谢!

一篇文章带你搞定BFC~的更多相关文章

  1. 一篇文章带你搞定 ElasticSearch 术语

    这篇文章主要介绍 ElasticSearch 的基本概念,学习文档.索引.集群.节点.分片等概念,同时会将 ElasticSearch 和关系型数据库做简单的类比,还会简单介绍 REST API 的使 ...

  2. 一篇文章带你搞懂 SpringBoot与Swagger整合

    Swagger使用由于不喜欢csdn的markwoen编辑器,对代码样式支持不好,看着不舒服,对审美要求比较高的同学移步github:https://github.com/itguang/swagge ...

  3. 五分钟学Java:一篇文章带你搞懂spring全家桶套餐

    原创声明 本文首发于微信公众号[程序员黄小斜] 本文作者:黄小斜 转载请务必在文章开头注明出处和作者. 本文思维导图 什么是Spring,为什么你要学习spring? 你第一次接触spring框架是在 ...

  4. 一篇文章带你搞懂 etcd 3.5 的核心特性

    作者 唐聪,腾讯云资深工程师,极客时间专栏<etcd实战课>作者,etcd活跃贡献者,主要负责腾讯云大规模k8s/etcd平台.有状态服务容器化.在离线混部等产品研发设计工作. etcd ...

  5. 一篇文章带你搞懂InnoDB的索引|结合样例

    关注公众号[程序员白泽],带你走进一个不一样的程序员/学生党 前言 前阵子面试的时候,在第三面问到了MySQL索引相关的知识点,并且给出了一些SQL语句分析索引的执行情况.所以今天这篇文章给大家讲讲索 ...

  6. 这一篇文章帮你搞定Java(含Java全套资源)

    当下想学习Java开发的人越来越多,对于很多零基础的人来说,没有相关的视频教程及相关的学习线路,学起来是一件很费劲的事情,还有很多人从网上及其它渠道购买视频,这些视频资料的价格对于刚毕业的大学生来说也 ...

  7. 一篇文章带你搞懂DEX文件的结构

    *本篇文章已授权微信公众号 guolin_blog (郭霖)独家发布 DEX文件就是Android Dalvik虚拟机运行的程序,关于DEX文件的结构的重要性我就不多说了.下面,开练! 建议:不要只看 ...

  8. MYSQL(基本篇)——一篇文章带你走进MYSQL的奇妙世界

    MYSQL(基本篇)--一篇文章带你走进MYSQL的奇妙世界 MYSQL算是我们程序员必不可少的一份求职工具了 无论在什么岗位,我们都可以看到应聘要求上所书写的"精通MYSQL等数据库及优化 ...

  9. 【项目实践】一文带你搞定Spring Security + JWT

    以项目驱动学习,以实践检验真知 前言 关于认证和授权,R之前已经写了两篇文章: [项目实践]在用安全框架前,我想先让你手撸一个登陆认证 [项目实践]一文带你搞定页面权限.按钮权限以及数据权限 在这两篇 ...

随机推荐

  1. 解决 docker 日志占满磁盘导致 docker 服务停止的问题

    #进入 root 模式 sudo -i # 查看目录大小 sudo du -h --max-depth=1 # 应该会定位到这个目录 `/var/libs/docker/containers` # 最 ...

  2. 126_Power BI中使用DAX计算股票RSI及股票均线相关

    博客:www.jiaopengzi.com 焦棚子的文章目录 请点击下载附件 一.背景 前些日子,有朋友在交流股票RSI用DAX处理的问题,由于RSI股票软件的算法几乎都是需要用到股票从上市第一天开始 ...

  3. .NET 6 从0到1使用Docker部署至Linux环境

    前言 作为一名.Net菜鸟开发者,平时对Linux接触的并不多,项目部署这一块都是运维小哥顶着,但是作为混迹在云原生项目组的人咱也不能什么都不知道,该掌握的知识还是要懂的,所以借着这次机会,梳理一下项 ...

  4. MongoDB 各项命名规范

    每日一句 Progress is the result of a bunch of failures. 进步是不断失败的成果. 概述 MongoDB涉及到的一些比如集合啥的命令规范. 集合的命名规范 ...

  5. 记一次生产事故的排查与优化——Java服务假死

    一.现象 在服务器上通过curl命令调用一个Java服务的查询接口,半天没有任何响应.关于该服务的基本功能如下: 1.该服务是一个后台刷新指示器的服务,即该服务会将用户需要的指示器数据提前计算好,放入 ...

  6. 卸载windows安装ubuntu的完全指南

    卸载windows安装ubuntu的完全指南 新配置了一台深度学习服务器,但是预装系统为windows10,与需求不符.于是,自己动手安装ubuntu(18.04).此文为过程记录. 主要步骤: 准备 ...

  7. 看看CabloyJS工作流引擎是如何实现Activiti边界事件的

    CabloyJS内置工作流引擎的基本介绍 1. 由来 众所周知,NodeJS作为后端开发语言和运行环境,支持高并发.开发效率高,有口皆碑,但是大多用于数据CRUD管理.中间层聚合和中间层代理等工具场景 ...

  8. ElasticSearch7.3学习(三十一)----Logstash基础学习

    一.Logstash基本介绍 Logstash 是一个功能强大的工具,可与各种部署集成. 它提供了大量插件,可帮助你解析,丰富,转换和缓冲来自各种来源的数据(文件.数据库......).logstas ...

  9. 有关安装pycocotools的办法

    1,首先需要安装Visual C++ 2015构建工具,地址https://download.microsoft.com/download/5/f/7/5f7acaeb-8363-451f-9425- ...

  10. Event Loop我知道,宏任务微任务是什么鬼?

    在介绍宏任务和微任务之前,先抛出一个问题.相信大家在面试的时候,会遇到这样的相似的问题: setTimeout(function(){undefined console.log('1') }); ne ...