css:详解BFC块级格式化上下文

news/2024/4/28 19:48:19/文章来源:https://blog.csdn.net/weixin_43972437/article/details/127755302

定义

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

根据以上定义,可以得出几个关键信息:

  • BFC 有点像元素的一个属性,是需要设置的,不是生来一个 div 放到那就拥有 BFC 功能
  • 设置了 BFC,这个元素就是一个独立的区域了

好了,那我们接下来看看如何设置 BFC

设置 BFC

任何一个元素只要满足以下其中一点,就有了 BFC 功能

  • body根元素
  • 设置浮动,不包括none
  • 设置定位,absoulte或者fixed
  • 行内块显示模式,inline-block
  • 设置overflow,即hidden,auto,scroll
  • 表格单元格,table-cell
  • 弹性布局,flex

作用

1、解决 margin 垂直塌陷问题:

开发中我们会遇到这种问题,给两个元素都加了margin,会以长的来计算,这是因为这个元素不是 BFC,所以按照道理,相距是 100px 也没有问题,但是我们想要的并不是这样的效果,而是相距 200px

<!DOCTYPE html>
<html lang="en">
<head><style>.outer1 {width: 100px;height: 100px;background-color: #f00;margin-bottom: 100px;}.outer2 {width: 100px;height: 100px;background-color: #f00;margin-top: 100px;}</style>
</head>
<body><div class="outer1"></div><div class="outer2"></div>
</body>
</html>

在这里插入图片描述
修改后的代码如下:

<!DOCTYPE html>
<html lang="en">
<head><style>.outer1 {width: 100px;height: 100px;background-color: #f00;margin-bottom: 100px;}.outer2 {width: 100px;height: 100px;background-color: #f00;margin-top: 100px;}</style>
</head>
<body><div style="overflow: hidden;"><div class="outer1"></div></div><div style="overflow: hidden;"><div class="outer2"></div></div>
</body>
</html>

在这里插入图片描述
我们给 outer1 和 outer2 外边包了一层 BFC,这样的话渲染区域就是独立的了

为什么直接给 outer1 和 outer2 设置 BFC 不行呢?
因为给 outer1 和 outer2 设置 BFC 后,影响的也只是其内部的渲染,而 margin 属性元素外部的渲染,所以这样设置是无效的

2、解决 margin 父元素塌陷问题:

可以看到,我们想要子元素 inner 距离父元素顶部有距离,但是设置margin 后带着父元素一起向下了 50px

<!DOCTYPE html>
<html lang="en">
<head><style>.outer {width: 100px;height: 100px;background-color: #f00;}.inner {width: 30px;height: 30px;background-color: #000;margin-top: 50px;}</style>
</head>
<body><div class="outer"><div class="inner"></div></div>
</body>
</html>

在这里插入图片描述
只需要将父元素设置为 BFC 区域就可以了:

<!DOCTYPE html>
<html lang="en">
<head><style>.outer {width: 100px;height: 100px;background-color: #f00;// 方式一padding-top: 1px;// 方式二// overflow: hidden;}.inner {width: 30px;height: 30px;background-color: #000;margin-top: 50px;}</style>
</head>
<body><div class="outer"><div class="inner"></div></div>
</body>
</html>

在这里插入图片描述

3、浮动导致父元素高度塌陷

<!DOCTYPE html>
<html lang="en">
<head><style>.outer {width: 100px;background-color: #f00;/* overflow: hidden; */}.inner {width: 30px;height: 30px;background-color: #000;/* float: left; */}</style>
</head>
<body><div class="outer"><div class="inner"></div></div>
</body>
</html>

正常情况:
在这里插入图片描述
子元素加上 float: left;,造成父元素高度塌陷,父元素高度为0
在这里插入图片描述
父元素加上 overflow: hidden;,则又变为正常情况。
在这里插入图片描述

4、阻止浮动元素覆盖普通元素

<!DOCTYPE html>
<html lang="en">
<head><style>.outer1 {width: 100px;height: 100px;background-color: #f00;/* float: left; */}.outer2 {height: 300px;background-color: #000;/* overflow: hidden; */}</style>
</head>
<body><div class="outer1"></div><div class="outer2"></div>
</body>
</html>

正常情况下:
在这里插入图片描述
outer1 加上 float: left;
在这里插入图片描述
outer2 加上 overflow: hidden;
在这里插入图片描述

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

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

相关文章

云原生之K8S------list-watch机制,调度约束以及故障排查

一&#xff0c;list-watch机制 1&#xff0c;list-watch介绍 1&#xff0c;kubernetes是通过list-watch的机制进行每个组件的动作&#xff0c;保持数据同步的&#xff0c;每个组件之间的设计实现了解耦。 2&#xff0c;用户是通过kubelet根据配置文件&#xff0c;向apiserve…

人工智能--机器学习概述、motplotlib的使用-折线图、散点图、柱状图、饼图

机器学习 步骤&#xff1a; 获取数据–数据基本处理–特征工程–机器学习&#xff08;算法&#xff09;–模型评估与调优 人工智能三要素&#xff1a;数据、算法、计算力 CPU 控制单元多&#xff0c;计算单元少—更适合IO密集型任务 GPU计算单元多----更适合计算密集型任务 …

IDA详细使用教程

文章目录软件介绍目录结构启动页面IDA文件加载界面介绍常用快捷键操作概述函数操作数据类型操作导航操作类型操作关闭数据库软件介绍 Ollydbg 仅仅是运行于 Windows 用户模式下的一种 32 位调试器&#xff0c;而 IDA 是运行于 32/64 位下&#xff0c;可用作反编译和调试的一个…

现在Web前端工程师年薪区间是多少?

对于互联网公司来说用户就是上帝&#xff0c;做好客户体验一切才有可能。所以互联网公司都会把钱砸向前端&#xff0c;Web前端程序员也越来越受到企业争相聘用。但web前端工程师真的那么值钱吗&#xff1f; 1web前端不同阶段薪资待遇如何&#xff1f; 目前Web前端工程师可谓是佼…

浏览器无痕模式有什么作用,手机浏览器开启无痕模式的方法

在我们的手机基本上都安装了浏览器&#xff0c;当我们在上网过程中&#xff0c;不想浏览记录被留下&#xff0c;那么开启无痕模式是非常有必要的。那么&#xff0c;浏览器的无痕模式有什么作用&#xff0c;手机浏览器如何开启无痕模式呢&#xff1f;下面教大家如何在手机浏览器…

基于springboot的信息化药品管理系统

项目描述 临近学期结束&#xff0c;还是毕业设计&#xff0c;你还在做java程序网络编程&#xff0c;期末作业&#xff0c;老师的作业要求觉得大了吗?不知道毕业设计该怎么办?网页功能的数量是否太多?没有合适的类型或系统?等等。这里根据疫情当下&#xff0c;你想解决的问…

第九期|不是吧,我在社交媒体的照片也会被网络爬虫?

顶象防御云业务安全情报中心监测到&#xff0c;某社交媒体平台遭遇持续性的恶意爬虫盗取。被批量盗取用户信息和原创内容&#xff0c;经分类梳理和初步加工后&#xff0c;被黑灰产转售给竞争对手或直接用于恶意营销。由此不仅给社交媒体平台的数字资产带来直接损失&#xff0c;…

ActiveState Platform - November 2022

ActiveState Platform - November 2022 ActiveState平台定期更新新的、修补的和版本化的软件包和语言。 Python 3.10.7、3.9.14、3.8.14-解决了许多安全问题的点发布。 Python C库-ibxml 2.10.3、libxslt 1.1.37、libexpat 2.4.9、zlib 1.2.13、curl 7.85.0和sqlite3 3.39.4&am…

大数据必学Java基础(九十六):PreparedStatement完成CURD和批处理

文章目录 PreparedStatement完成CURD和批处理 一、完成CURD 二、批处理 1、什么是批处理

数字图像处理练习题整理 (二)

注: 内容仅供参考, 不保证正确性, 如有误欢迎交流指正.鸣谢: 感谢 &#x1f430;&#x1f414;&#x1f9c4;&#x1f4af;&#x1f4af; 小组的各位同学为内容整理提供的帮助 四.空域邻域滤波 1. 高斯模板生成 请写出生成大小为 (2N1)(2N1)、标准差为 sigma 的高斯模板 H 的…

Redis基础架构

可以存哪些数据&#xff1f; 对于键值数据库而言&#xff0c;基本的数据模型是key-value模型。 例如&#xff0c;“hello”: “world”就是一个基本的 KV 对&#xff0c;其中&#xff0c;“hello”是 key&#xff0c;“world”是 value。SimpleKV 也不例外。在 SimpleKV 中&am…

【Transformers】第 2 章:文本分类

&#x1f50e;大家好&#xff0c;我是Sonhhxg_柒&#xff0c;希望你看完之后&#xff0c;能对你有所帮助&#xff0c;不足请指正&#xff01;共同学习交流&#x1f50e; &#x1f4dd;个人主页&#xff0d;Sonhhxg_柒的博客_CSDN博客 &#x1f4c3; &#x1f381;欢迎各位→点赞…

PyCharm连接MySQL数据库竟然如此简单

在 PyCharm 中是可以通过内置的工具来连接、操作数据库的&#xff0c;并且对于市面上大多数主流数据库都是支持的。 本篇教程就教大家如何通过 Pycharm 内置的数据库工具连接 MySQL 数据库。 连接 MySQL 首先打开 PyCharm &#xff0c;点击菜单栏的 View --> Tool Window…

PyCharm使用心得体会1

一、Pycharm使用的心得体会 1. 查找功能的使用 查找可以使用的小功能 match case区分大小写words 精确匹配&#xff1f;regex 正则表达式 这个是在选择到的内容中继续进行检索 类似二次检索 2. 软件左下角的structure可以看到文件的结构 show inherited表示展示继承的方法 在…

项目搭建(七)爱心代码❤网站部署(静态网站)

爱心代码❤网站部署&#xff08;静态网站&#xff09;一、环境基础二、修改Tomcat启动配置三、放置静态网站四、启动Tomcat一、环境基础 如果你已经部署了Apache-Tomcat&#xff0c;恭喜你&#xff0c;你已经完成90%的部署工作 如果没有tomcat&#xff0c;那你先部署tomcat吧 …

Restful风格的编程

Restful风格的编程1、 Restful简介2、查询用户以及用户详情2.1常用注解2.2查询用户详情3、处理创建请求3.1RequestBody注解3.1.1用途3.1.2语法规范3.2日期类型的处理3.3BindingResult4、用户信息修改与删除4.1用户信息修改4.2案例前端界面后端控制器1、 Restful简介 Restful比…

HTML爱心代码 | 一起体验理工男的极致浪漫(电视剧男主同款)

写在前面 大家好&#xff0c;我是陈橘又青&#xff0c;今天中午刷微博&#xff0c;看到最近《点燃我温暖你》中男主角——理工男李峋的爱心代码撩到了无数人&#xff0c;于是把代码开源分享给大家。 文章目录写在前面运行示例完整代码保姆级运行教学添加背景图片修改爱心颜色运…

工业物联网解决方案:PLC数据上云

智能制造已成为工业发展的趋势&#xff0c;以PLC为代表的工控系统时制造业转型的核心&#xff0c;通过对其进行数据采集&#xff0c;可以实现远程监控&#xff0c;及时管理和维护。随着通信技术的发展&#xff0c;PLC的数据上云逐渐成为企业的新需求&#xff0c;可以更好远程监…

国际物流详解:国际物流有哪些特点?国际物流有哪些优势?

随着互联网信息的快速发展&#xff0c;越来越多的人通过通关网络接触到了国外世界&#xff0c;随之而来的采购购物潮也使得国内国际物流业发展迅速。那么国际物流有哪些特点?又有哪些优势呢?下面我们一起来详细了解一下国际物流主要特点和优势吧!一、国际物流是什么 在了解国…

oracle实验七(安全管理)

&#xff08;实验目的及要求&#xff09; 实验目的 &#xff08;1&#xff09; 掌握 Oracle 数据库安全控制的实现。 &#xff08;2&#xff09; 掌握 Oracle 数据库用户管理。 &#xff08;3&#xff09; 掌握 Oracle 数据库权限管理。 &#xff08;4&#xff09; 掌握 Oracle…