css之BFC是什么

news2024/11/18 11:18:49

在讲BFC之前先来了解一下FC

FC-Formatting Context

FC全称Formatting Context(格式化上下文),元素在标准流里面都属于一个FC的

官网解释:

Boxes in the normal flow belong to a formatting context,which may be block or inline, but not both simultaneously Block-level boxes participate in a block formatting context(BFC).  Inline-level boxes participate in an inline formatting context(IFC)

大意就是:元素在标准流中属于一个FC,可能是block FC也可能是inline FC,但不可能是同时属于它俩,块级元素属于BFC 行内元素数据IFC

  • 块级元素的布局属于 Block Formatting Context (BFC)
  • 行内元素的布局属于Inline Formatting Context(IFC)

BFC-Block Formatting Context

块级元素所在的那个布局环境就是BFC

MDN上有整理哪些具体情况会创建BFC:以下只是一部分

  • 根元素<html>
  • 浮动元素(元素的float值不是none)
  • 绝对定位或fixed定位元素(元素的position为absolute或fixed)
  • 行内块元素(display:inline-block)
  • 表格单元格(元素的display:table-cell,HTML表格单元格默认为该值),表格标题(元素的display为table-caption,HTML表格标题默认为该值)
  • 匿名表格元素(元素的display为table table-row table-row-group table-header-group table-footer-group (分别是HTML table 、row、tbody、thead、tfoot的默认属性)或inline-table)
  • overflow计算值(Computed)不为visible的块级元素
  • 弹性元素(display为flex或inline-flex元素的直接子元素)
  • 网格元素(display为grid或inline-grid元素的直接子元素)
  • display为flow-root的元素

BFC有什么用?

在BFC中,

元素从顶部开始在垂直方向一个接着一个排列,

相邻的两个元素之间的距离由margin指定。

在同一个BFC中,相邻的两个元素,在垂直方向上的margin会合并折叠

每个元素的左边缘是紧挨着包含块的左边缘的

那么这个东西有什么用呢?

  • 解决margin的折叠问题
  • 解决浮动导致的高度塌陷问题

1如何解决margin折叠问题?产生一个新的BFC,就不会折叠了

<html> 
<head>
 <style>
    .class1 {
      height: 100px;
      width: 300px;
      background-color: orange;
      margin-bottom: 50px;
      overflow: auto;
    }
 
    .class2 {
      height: 100px;
      width: 200px;
      background-color: red;
      margin-top: 50px;
 
    }
  </style>
</head>
<body>
 
 <div class="class1">盒子1</div>
 <div class="class2">盒子2</div>
</body>
</html>

上面盒子1和盒子2同属于html这个BFC

盒子1高100px,         margin-bottom:50px

盒子2也是高100px,  margin-top:50px;

看图所示,两个盒子之间的间距只有50px,margin折叠了

要解决这个问题 就要让两个盒子不属于同一个BFC

给盒子1或者2加属性overflow:auto只是让盒子内部产生了新的BFC,并没有改变两个盒子同属于一个BFC的问题,所以这样改行不通

给盒子1包裹一层div 然后设置div的overflow:auto,这样盒子1属于外层div产生的BFC,而盒子2属于html的BFC,它们属于不同的BFC,就不会出现margin折叠的问题了

2 如何解决高度塌陷问题

<head>
 <style>
    .class2 {
      height: 100px;
      width: 100px;
      background-color: red;
    }
 
    .class3 {
      float: left;
      background-color: blueviolet;
      height: 300px
    }
 
    .container {
      background-color: aquamarine;
      /* overflow: auto; */
    }
  </style>
</head>
 
<body>
  <div class="container">
    <span>span1</span>
    <span>span2</span>
    <div class="class3">盒子3浮动元素</div>
  </div>
  <div class="class2">盒子2</div>
</body>

如图所示,container内有三个元素,两个span 一个div盒子3是浮动元素,由于container自身没有高度,盒子3浮动 导致container高度塌陷,

与container平级的盒子2也被覆盖,看不到

解决container高度塌陷,也会同时清浮动,一举两得

给container加overflow:auto

使container内部产生BFC,就会解决高度塌陷的问题,同时盒子2也会显现出来

注意:BFC只能解决浮动导致的塌陷问题,而绝对定位导致的塌陷是解决不了的

如果盒子3是绝对定位,那是无法解决conatiner高度塌陷的问题

BFC的高度在没设置或者auto的情况下 是如何计算高度的呢?

  • 如果只有行内元素,则行高的距离,行内元素的高度

  • 如果只有块级元素,则是块级元素的高度

  • 如果有绝对定位元素,将被忽略

  • 如果有浮动元素,那么会增加自身高度以包裹这些浮动元素

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

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

相关文章

指针(基础)

目录 一、内存和地址 二、指针是什么&#xff1f; 三、指针变量的内容 四、指针类型 五、间接访问操作符 &#xff08;一&#xff09;易混淆 六、野指针 &#xff08;一&#xff09;野指针成因 1. 指针未初始化 2. 指针越界访问 3. 指针指向的空间释放 &…

php xss攻击

文章目录一、什么是xss攻击二、攻击类型三、php相关处理函数1、htmlspecialchars 函数2、htmlentities 函数3、strip_tags 函数一、什么是xss攻击 xss攻击通常指的是通过利用网页开发时留下的漏洞&#xff0c;通过巧妙的方法注入恶意指令代码到网页&#xff0c;使用户加载并执…

make menuconfig分析

在uboot源码顶层目录下&#xff0c;进入scripts/kconfig目录&#xff0c;打开Makefile文件 mconf作为可执行参数,uboot源码顶层目录下的配置文件传递给conf

39_tp6的rce漏洞

tp6的rce漏洞 一、环境搭建 使用docker本地搭建tp6环境 1. 下载镜像 docker pull vulfocus/thinkphp:6.0.122. 端口映射 启动镜像,并将80端口映射到8081端口,防止80端口冲突,运行容器 docker run -it -d -p 8081:80 1fc5d159922e3. 打开网站 默认的网页目录是在public目…

怎么在线识别图片文字?说一个思路

图片中的文字怎么在线识别&#xff1f;很多小伙伴在接收到图片类型的文件时&#xff0c;不知道怎么处理其中记录的信息。打字整理嫌麻烦怕出错的话&#xff0c;可以借助识别软件来处理&#xff0c;下面给大家介绍三种比较好用的工具&#xff0c;希望能解决你的问题。方法一、在…

SAP ADM100-Unit3 系统配置介绍:如何设置配置文件参数

本节将介绍如何改变配置文件参数的值。 1、管理并维护配置文件 如果想去调整配置文件参数,可以使用操作系统特定的编辑器去调整参数。但是,这个过程是有确定风险的,因此用户必须确保这个调整被正确的执行和记录。设置的参数不正确可能导致实例无法启动。因此,SAP系统提供…

JVM学习疑问之——逃逸分析

前言 根据之前安排的jvm学习计划在进行jvm学习&#xff0c;找到了尚硅谷宋红康老师的jvm视频&#xff0c;跟着视频学习、做笔记&#xff0c;学习到了很多&#xff0c;为尚硅谷及宋红康老师点赞。说到这里&#xff0c;虽然我有一键三连&#xff0c;但这么好的视频&#xff0c;我…

(六)redis持久化操作(RDBAOF)

目录 一、RDB&#xff08;Redis DataBase&#xff09; 1、简介 2、持久化流程 3、dump.rdb文件 4、配置文件 5、rdb的备份 6、rdb的恢复 7、优势 8、劣势 二、AOF&#xff08;Append Only File&#xff09; 1、简介 2、持久化流程 3、AOF和RDB同时开启 4、AOF启动…

HTML中引入CSS样式的第三种方式:链入外部样式表文件

<!-- 第三种方式&#xff1a;链入外部样式表文件&#xff0c;这种方式最常用。 就是将样式写到一个独立的xxx.css文件当中&#xff0c;在需要的网页上直接引入这个xxx.css文件就可以了。 语法格式&#xff1a; <head> …

【自学Docker 】Docker port命令

Docker port命令 概述 docker port命令教程 docker port 命令可以用于列出指定的 Docker容器 的端口映射&#xff0c;或者将容器里的端口映射到宿主机。该命令后面的 CONTAINER 可以是容器Id&#xff0c;或者是容器名。 docker port语法 haicoder(www.haicoder.net)# docke…

jsp 校园相册管理系统Myeclipse开发mysql数据库web结构java编程计算机网页项目

一、源码特点 jsp 校园相册管理系统 是一套完善的web设计系统&#xff0c;对理解JSP java编程开发语言有帮助&#xff0c;系统采用web模式开发&#xff0c;系统具有完整的源代码和数据库&#xff0c;系统主要采用B/S模式开发。开发环境 为TOMCAT7.0,Myeclipse8.5开发&#xf…

计算机组成原理 | 第五章:输入输出系统 | 程序中断方式

文章目录&#x1f4da;概述&#x1f407;I/O系统的概述&#x1f407;输入输出系统的组成&#x1f407;I/O设备与主机的联系&#x1f407;I/O设备与主机信息传送的控制方式&#x1f4da;I/O接口&#x1f407;为什么要设置接口❓&#x1f407;接口的功能和组成&#x1f407;接口和…

Pygame的SurfaceImageTime

Surface用来生成一个矩形&#xff0c;Image用来导入外部图片&#xff0c;Time用来暂停时间。 Surface 生成矩形 facepy.Surface((200,200))填充颜色 face.fill(blue) 放入界面 screen.blit(face,(50,50)) Image 导入图片 imgpy.image.load(d:\\图片\\1.jpg) 缩放…

make prerequisite: 根据文件状态自动确定是否重新执行

Basic 先看一个简单的例子&#xff08;引自Makefile Tutorial By Example&#xff09;&#xff1a;当我们对同一个makefile执行两次make命令时&#xff0c;由于第一次运行已经生成了目标文件blah&#xff0c;第二次make会直接输出blah is up to date&#xff0c;而不会重新com…

(四)Redis配置文件redis.conf详解

目录 一、Units单位 二、INCLUDES&#xff08;包含配置&#xff09; 三、NETWORK&#xff08;网络配置&#xff09; 四、GENERAL&#xff08;总则&#xff09; 五、SNAPSHOTTING&#xff08;拍摄快照&#xff09; 六、REPLICATION&#xff08;复制&#xff09; 七、SECU…

【苹果相册日历推位置推送iMessage】需要将真机的udid复制出来在此添加

推荐内容IMESSGAE相关 作者✈️IMEAX推荐内容iMessage苹果推软件 *** 点击即可查看作者要求内容信息作者✈️IMEAX推荐内容1.家庭推内容 *** 点击即可查看作者要求内容信息作者✈️IMEAX推荐内容2.相册推 *** 点击即可查看作者要求内容信息作者✈️IMEAX推荐内容3.日历推 *** …

通过伪代码结合理论模拟pc端接入单点登录(Oauth2浙里办)

前言 还记得那是一个惺忪的早晨&#xff0c;带着困意的我正准备去公司上班&#xff0c;坐车坐到一半&#xff0c;钉钉突然袭来一条红色预警信息&#xff0c;公司查出来有个人阳了&#xff0c;好消息&#xff1a;万幸我还在去公司的路上&#xff0c;没有和他有过多的接触&#x…

机器学习中的数学原理——对数似然函数

这个专栏主要是用来分享一下我在 机器学习中的 学习笔记及一些感悟&#xff0c;也希望对你的学习有帮助哦&#xff01;感兴趣的小伙伴欢迎 私信或者评论区留言&#xff01;这一篇就更新一下《 白话机器学习中的数学——对数似然函数》&#xff01; 目录 一、什么是对数似然函数…

SD卡打不开怎么办?sd卡损坏修复,盘点一些实用的教程

SD卡的应用十分广泛&#xff0c;比如&#xff0c;手机、数码相机、摄像机、MP4、航拍器、车载导航等。但是随着SD卡的使用时间的长短&#xff0c;有时会出现常见问题—SD卡打不开。SD卡里面保持着我们很多重要数据&#xff0c;如果它打不开&#xff0c;很可能导致我们里面重要数…

CSS倒影炫酷属性 -webkit-box-reflect 的使用

文章目录效果预览一、相关知识点介绍属性相关二、实现步骤总结效果预览 一、相关知识点 介绍 文档 MDN关于倒影属性介绍&#xff1a;https://developer.mozilla.org/en-US/docs/Web/CSS/-webkit-box-reflect 官方说明&#xff1a; 非标准:该特性是非标准的&#xff0c;不在标…