CSS:BFC

BFC,Block Formatting Context,块级格式化上下文,是一个独立的渲染区域或隔离的独立容器,它决定了其子元素如何布局,并且与这个区域外部的元素无关。

形成 BFC 的条件

  1. float 的值不为 none(left、right)
  2. overflow 的值不为 visible(hidden、auto、scroll)
  3. display 的值为 table-cell、table-caption、inline-block、flex、inline-flex
  4. position 的值为 absolute 或 fixed
  5. <html> 根元素

BFC 的特性

  1. 内部的 Box 会在垂直方向,一个接一个的放置。即使存在浮动也是如此。
  2. Box 垂直方向的距离由 margin 决定。属于同一个 BFC 的两个相邻的 Box 的 margin 会发生重叠。
  3. BFC 的区域不会与 float box 重叠(定位情况除外)。
  4. BFC 是一个页面上的独立容器,容器里面的子元素不会影响到外面的元素,反之亦然。
  5. 计算 BFC 的高度时,浮动元素也参与计算。

BFC 可以解决的问题

  1. 解决浮动导致的父元素高度塌陷问题

问题:当父元素没有设置固定高度且子元素都浮动时,父元素会出现高度塌陷。

<html><style>.container {width: 300px;border: 1px solid red;/* overflow: hidden; */}.item {background-color:orange;float: left;width: 100px;height: 100px;	}</style><body><div class="container"><div class="item"></div></div></body>
</html>

在这里插入图片描述

解决方案:父元素样式增加 overflow: hidden;

最终效果:

在这里插入图片描述

  1. 解决外边距合并问题

问题:普通文档流中,处于同一个 BFC 中的块级元素之间的垂直外边距会发生外边距合并。合并后的外边距的高度等于两个发生合并的外边距的高度中的较大者。

<html><style>.item1, .item2 {background-color:orange;width: 100px;height: 100px;	}.item1 {margin-bottom: 70px;}.item2 {margin-top: 30px;}</style><body><div class="container"><div class="item1"></div><div class="item2"></div></div></body>
</html>

在这里插入图片描述
此时,两个盒子之间的垂直间距等于最大的外边距 70,而不是两个外边距之和 100。

解决方案:任意选择一个子元素创建 BFC(如 box)

<html><style>.item1, .item2 {background-color:orange;width: 100px;height: 100px;	}.item1 {margin-bottom: 70px;}.item2 {margin-top: 30px;}.box {overflow: hidden;}</style><body><div class="container"><div class="item1"></div><div class="box"><div class="item2"></div></div></div></body>
</html>

最终效果:
在这里插入图片描述
3. 解决文字环绕问题 / 实现两栏布局

问题:正常情况下,左侧元素浮动时,会与右侧元素重叠,形成文字环绕效果,从而无法实现两栏布局。

<html><style>.container {width: 300px;}.item1 {background-color:orange;width: 100px;height: 100px;float: left;	}.item2 {background-color: #d0e4fe;}</style><body><div class="container"><div class="item1">左侧浮动元素</div><div class="item2">右侧非浮动元素会环绕在浮动元素的右侧,达到文字环绕的效果。父元素的高度取决于右侧内容的高度。如果右侧内容较少,会造成父元素高度塌陷;如果右侧内容足够多,则会继续填充到浮动元素的下方。</div></div></body>
</html>

在这里插入图片描述
解决方案:给右侧元素设置 overflow: hidden; 来形成 BFC。

最终效果:
在这里插入图片描述

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

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

相关文章

无人机数据链技术,无人机数据链路系统技术详解,无人机数传技术

早期的无人机更多的为军事应用服务&#xff0c;如军事任务侦查等&#xff0c;随着技术和社会的发展&#xff0c;工业级无人机和民用无人机得到快速的发展&#xff0c;工业级无人机用于农业植保、地理测绘、电力巡检、救灾援助等&#xff1b;民用无人机用于航拍、物流等等领域。…

AcuAutomate:一款基于Acunetix的大规模自动化渗透测试与漏洞扫描工具

关于AcuAutomate AcuAutomate是一款基于Acunetix的大规模自动化渗透测试与漏洞扫描工具&#xff0c;该工具旨在辅助研究人员执行大规模的渗透测试任务。 在大规模的安全测试活动中&#xff0c;AcuAutomate可以帮助我们同时启动或停止多个Acunetix扫描任务。除此之外&#xff…

prometheus+mysql_exporter监控mysql

prometheusmysql_exporter监控mysql 一.安装mysql 1.下载&#xff1a;wget -i -c http://dev.mysql.com/get/mysql57-community-release-el7-10.noarch.rpm 2.安装客户端&#xff1a;yum -y install mysql57-community-release-el7-10.noarch.rpm 3.安装服务端&#xff1a;yum …

服务器4c是什么意思?8g是什么?

4核8G是云服务器的参数&#xff0c;代表云服务器的硬件配置和网络带宽&#xff0c;4核代表CPU、8G是指内存、12M代表带宽值为12Mbps&#xff0c;腾讯云百科txybk.com以腾讯云轻量应用服务器4核8G12M带宽配置为例&#xff0c;来详细介绍下服务器参数&#xff1a; 4c8g是什么意思…

Linux环境下HTTP隧道的安全性与性能优化策略

在Linux环境下&#xff0c;HTTP隧道技术为远程办公和数据同步提供了极大的便利。为了确保这种技术的安全性和性能&#xff0c;我们需要采取一系列策略来保障其稳定运行。 安全性策略 安全性是HTTP隧道技术的首要考虑因素。以下是一些建议&#xff0c;以确保HTTP隧道的安全性&…

django连接本地数据库并执行增删改查

1&#xff0c;首先需要将本地数据库的表同步到django的models.py文件 py manage.py inspectdb tb_books tb_heros > demo001/models.py 2&#xff0c;同步成功后models.py会根据每张表映射出不同的类 models.py文件根据数据库表映射出对应的类 3&#xff0c;然后根据不同…

k8s核心概念

Kubernetes 的 Master 包含四个主要的组件&#xff1a;API Server、Controller、Scheduler 以及 etcd Kubernetes 的架构&#xff1a;Master API Server&#xff1a;顾名思义是用来处理 API 操作的&#xff0c;Kubernetes 中所有的组件都会和 API Server 进行连接&#xff0…

Flutter使用问题整理

前言 写这篇文章是为了记录平时在使用flutter时遇到的问题&#xff0c;及解决方案&#xff0c;方便再次遇到时能够快速解决。 问题及解决 问题1 真机运行项目&#xff0c;在构建时提示 Running Gradle task assembleDebug... 41.8s [!] App r…

docker jenkins 报错:script.sh.copy: 1: mvn: not found

找不到mvn,一般是没配置环境变量的问题。点开系统配置&#xff0c;设置环境变量即可

【mediasoup-sfu-cpp】发送端给nack缓存包

发送端的处理。D:\XTRANS\soup\mediasoup-sfu-cpp\worker\src\RTC\RtpStreamSend.cppRtpStreamSend::ReceiveNack D:\XTRANS\soup\mediasoup-sfu-cpp\worker\src\RTC\RtpStreamSend.cpp 发送端:根据FeedbackRtpNackPacket里的每个包填充要响应重传而发送的包 挨个填充vector,…

C#系列-Entity Framework 架构(18)

下图展示了EF的整体架构。现在让我们逐个地看看架构的各个组件&#xff1a; EF组件图 EDM&#xff08;Entity Data Mode 实体数据模型&#xff09;:EDM 由三个主要部分组成&#xff1a;概念模型&#xff0c;映射和存储模型。 Conceptual Model&#xff08;概念模型&#xff0…

科技云报道:云原生是大模型“降本增效”的解药吗?

科技云报道原创。 在过去一两年里&#xff0c;以GPT和Diffusion model为代表的大语言模型和生成式AI&#xff0c;将人们对AI的期待推向了一个新高峰&#xff0c;并吸引了千行百业尝试在业务中利用大模型。 国内各家大厂在大模型领域展开了激烈的军备竞赛&#xff0c;如&#…