前端基础知识CSS系列 - 05(BFC的理解)

一、是什么

我们在页面布局的时候,经常出现以下情况:

  • 这个元素高度怎么没了?
  • 这两栏布局怎么没法自适应?
  • 这两个元素的间距怎么有点奇怪的样子?
  • ......

原因是元素之间相互的影响,导致了意料之外的情况,这里就涉及到BFC概念

BFC(Block Formatting Context),即块级格式化上下文,它是页面中的一块渲染区域,并且有一套属于自己的渲染规则:

  • 内部的盒子会在垂直方向上一个接一个的放置
  • 对于同一个BFC的俩个相邻的盒子的margin会发生重叠,与方向无关。
  • 每个元素的左外边距与包含块的左边界相接触(从左到右),即使浮动元素也是如此
  • BFC的区域不会与float的元素区域重叠
  • 计算BFC的高度时,浮动子元素也参与计算
  • BFC就是页面上的一个隔离的独立容器,容器里面的子元素不会影响到外面的元素,反之亦然

BFC目的是形成一个相对于外界完全独立的空间,让内部的子元素不会影响到外部的元素

二、触发条件

触发BFC的条件包含不限于:

  • 根元素,即HTML元素
  • 浮动元素:float值为left、right
  • overflow值不为 visible,为 auto、scroll、hidden
  • display的值为inline-block、inltable-cell、table-caption、table、inline-table、flex、inline-flex、grid、inline-grid
  • position的值为absolute或fixed

三、应用场景

利用BFC的特性,我们将BFC应用在以下场景:

防止margin重叠(塌陷)
<style>p {color: #f55;background: #fcc;width: 200px;line-height: 100px;text-align:center;margin: 100px;}
</style>
<body><p>Haha</p ><p>Hehe</p >
</body>

两个p元素之间的距离为100px,发生了margin重叠(塌陷),以最大的为准,如果第一个P的margin为80的话,两个P之间的距离还是100,以最大的为准。

前面讲到,同一个BFC的俩个相邻的盒子的margin会发生重叠

可以在p外面包裹一层容器,并触发这个容器生成一个BFC,那么两个p就不属于同一个BFC,则不会出现margin重叠

<style>.wrap {overflow: hidden;// 新的BFC}p {color: #f55;background: #fcc;width: 200px;line-height: 100px;text-align:center;margin: 100px;}
</style>
<body><p>Haha</p ><div class="wrap"><p>Hehe</p ></div>
</body>
清除内部浮动
<style>.par {border: 5px solid #fcc;width: 300px;}.child {border: 5px solid #f66;width:100px;height: 100px;float: left;}
</style>
<body><div class="par"><div class="child"></div><div class="child"></div></div>
</body>

BFC在计算高度时,浮动元素也会参与,所以我们可以触发.par元素生成BFC,则内部浮动元素计算高度时候也会计算

.par {overflow: hidden;
}
自适应多栏布局

这里举个两栏的布局

<style>body {width: 300px;position: relative;}.aside {width: 100px;height: 150px;float: left;background: #f66;}.main {height: 200px;background: #fcc;}
</style>
<body><div class="aside"></div><div class="main"></div>
</body>

前面讲到,每个元素的左外边距与包含块的左边界相接触

因此,虽然.aslide为浮动元素,但是main的左边依然会与包含块的左边相接触

BFC的区域不会与浮动盒子重叠

所以我们可以通过触发main生成BFC,以此适应两栏布局

.main {overflow: hidden;
}

这时候,新的BFC不会与浮动的.aside元素重叠。因此会根据包含块的宽度,和.aside的宽度,自动变窄

小结

可以看到上面几个案例,都体现了BFC实际就是页面一个独立的容器,里面的子元素不影响外面的元素

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

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

相关文章

Prompt Engineering 学习指南:从入门到精通的最佳路径与资源

本 Prompt Engineering 技术报告,旨在提供一个从入门到精通的清晰学习路径、核心方案,并附上最关键的 GitHub 仓库资源。您可以将此报告作为快速提升 Prompt 能力的“速查手册”和“成长地图”。 Prompt Engineering 学习指南:从入门到精通的最佳路径与资源 技术报告摘要 (…

fastmcp MCPConfig多服务器使用案例;sse、stdio、streamable-http使用

1、sse、stdio、streamable-http使用 参考&#xff1a;https://gofastmcp.com/deployment/running-server#the-run-method stdio本地使用&#xff1b;sse、streamable-http远程调用&#xff08; Streamable HTTP—New in version: 2.3.0&#xff09; 调用&#xff1a; stdio、…

网站服务器被DDOS攻击打不开,是要换高防服务器还是加CDN能防护住?

高防云服务器、高防 IP 和高防 CDN 作为常见应对网络攻击的重要利器&#xff0c;它们各自有着独特的特点和应用场景&#xff0c;从技术架构看&#xff0c;高防云服务器是资源型防护&#xff0c;深度整合计算与防御资源&#xff1b;高防IP是流量型防护&#xff0c;以代理模式实现…

深入解析原型模式:从理论到实践的全方位指南

深入解析原型模式&#xff1a;从理论到实践的全方位指南 引言&#xff1a;为什么需要原型模式&#xff1f; 在软件开发过程中&#xff0c;对象创建是一个频繁且关键的操作。传统方式&#xff08;如直接使用new关键字&#xff09;在某些场景下会显得效率低下且不够灵活。想象这…

HuggingFace镜像配置失效问题深度解析:Python模块导入机制的陷阱

前言 在使用HuggingFace的transformers和datasets库时&#xff0c;国内用户经常会遇到网络连接问题。虽然设置了镜像源环境变量&#xff0c;但仍然报错无法连接到huggingface.co。本文将深入分析这个问题的根因&#xff0c;并从Python模块导入机制的角度解释为什么环境变量设置…

leetcode146-LRU缓存

leetcode 146 思路 什么是LRU缓存&#xff1f; LRU&#xff08;Least Recently Used&#xff09;缓存是一种常见的缓存淘汰策略&#xff0c;核心思想是&#xff1a;当缓存容量满时&#xff0c;优先淘汰最久未使用的数据。LeetCode 146 题要求实现一个支持get和put操作的 LR…

MQTT:构建高效物联网通信的轻量级协议

MQTT – 轻量级物联网消息推送协议 MQTT&#xff08;Message Queuing Telemetry Transport&#xff09;是机器对机器(M2M)/物联网(IoT)连接协议。它被设计为一个极其轻量级的发布/订阅消息传输协议。对于需要较小代码占用空间和/或网络带宽非常宝贵的远程连接非常有用&#xf…

AI自动生成复杂架构图,流程图,思维导图

AI自动生成复杂架构图&#xff0c;流程图&#xff0c;思维导图方案 1. 背景 在我们自己去绘制架构图&#xff0c;流程图&#xff0c;思维导图的时候&#xff0c;我们通常需要花费大量的时间去绘制。 目前的一些直接生图的模型也只能生成简单的流程图&#xff0c;不能生成复杂…

129. 求根节点到叶节点数字之和 --- DFS +回溯(js)

129. 求根节点到叶节点数字之和 --- DFS 回溯&#xff08;js&#xff09; 题目描述解题思路完整代码 题目描述 129. 求根节点到叶节点数字之和 解题思路 和 257. 二叉树的所有路径&#xff08;js&#xff09; 是一样的思路。 不一样的地方就是遇到叶子节点的时候把路径拼接…

SpringBoot电脑商城项目--修改默认收货地址

1. 修改默认收货地址-持久层 1.1 规划sql语句 检测当前用户向设置为默认收货地址的这条数据是否存在 SELECT * FROM t_address WHERE aid#{aid} 在修改用户的收获默认地址之前&#xff0c;先将所有的收货地址设置为非默认 UPDATE t_address SET is_default0 WHERE uid#{uid} …

LabVIEW FPGA 资源扩展

针对NI CompactRIO 9045 控制器 Kintex-7 70T FPGA 资源不足问题&#xff0c;通过 NI 9151 R 系列可重配置 I/O 模块扩展外部 FPGA 处理能力&#xff0c;在保留原有机箱架构下实现实时任务分流&#xff0c;解决Slice、LUT 等资源紧张问题&#xff0c;提升系统并行处理能力。 ​…

【漏洞复现】Apache Kafka Connect 任意文件读取漏洞(CVE-2025-27817)

文章目录 前言一、Apache Kafka 简介二、漏洞描述三、影响版本四、FOFA查询语句五、漏洞原理分析六、漏洞复现七、修复建议前言 由于Apache Kafka客户端未对用户输入进行严格验证和限制,未经身份验证的攻击者可通过构造恶意配置读取环境变量或磁盘任意内容,或向非预期位置发…

day13-软件包管理

1.每日复盘与今日内容 1.1复盘 yum源/apt源配置文件,核心下载地址.二进制部署服务.编译安装软件. 2.软件包管理-实战部分 2.1 yum源/apt源配置 源下载软件的地址配置多种源 1️⃣系统也有默认的源&#xff0c;里面也包含很多常用的软件. 2️⃣安装nginx、yum源 3️⃣安…

榕壹云快递寄件系统:聚合快递、智能追踪、二次开发,一站式物流解决方案

在电商物流高速发展的今天&#xff0c;快递寄件需求呈现爆炸式增长。传统分散的寄件方式效率低下&#xff0c;用户迫切需要一个整合多家快递公司的便捷平台。榕壹云公司开发的快递寄件系统应运而生&#xff0c;通过聚合多家快递资源、优化操作流程、提供丰富的功能模块&#xf…

一款功能强大的专业CSV编辑工具

Rons Data Edit是一款为Windows操作系统设计的现代CSV文件编辑器&#xff0c;它结合了优雅、强大和易用性&#xff0c;它可以打开任何格式的分隔文本文件(如CSV、TSV等)&#xff0c;并允许用户完全控制文件的内容和结构。 功能特点 支持明暗主题&#xff0c;可以在预定义的20多…

什么是软件架构?和系统设计有何区别?

一、软件架构的定义与核心要素 1.1 基本概念 软件架构(Software Architecture)是指系统的高层结构,包含: 组件(Components)及其相互关系指导设计的架构原则和决策满足质量属性(Quality Attributes)的技术方案引用权威定义:IEEE 1471标准将架构描述为"系统的基本组织,…

九尾狐编程语言新算法“超维时空演算体”

一、核心架构设计 1&#xff0e;量子&#xfe63;生物混合计算基座 ◇底层采用量子纠缠拓扑网络&#xff0c;处理超越经 典计算复杂度的问题&#xff08;如 NP - Hard 优化&#xff09;&#xff0e;中层嵌入类脑脉冲神经网络&#xff0c;模拟人脑跨领域联想能力&#xff0c;…

RoboVerse--为机器人学习打造的大一统世界--UC Berkeley...--2025.4.26

ROBOVERSE 包含一个可扩展的仿真平台、大规模的合成数据集&#xff0c;以及统一的基准测试。 该仿真平台通过统一协议&#xff0c;支持新任务和演示的无缝接入&#xff0c;保证了灵活性和可扩展性。该数据集包含 1,000 多个多样化任务及超过 1,000 万个状态转换&#xff0c;构…

Fiddler抓包工具实战指南:结合Charles、Postman优化Web与移动调试流程

在Web开发与移动端调试的工作流程中&#xff0c;网络请求的可视化、分析和控制能力对开发效率有着决定性影响。特别是在处理复杂接口联调、性能瓶颈排查&#xff0c;甚至安全漏洞分析时&#xff0c;一款可靠的抓包工具几乎成为了每一位开发者的“标配”。 Fiddler作为长期深受…

6/19作业

思维导图 单选题 树 1. 向一棵平衡二叉树中插入一个结点后&#xff0c;一定会改变其平衡性。 &#xff08; &#xff09; A 正确 B 错误 正确答案&#xff1a;B 你的答案&#xff1a;A 官方解析&#xff1a; 向平衡二叉树中插入节点并不一定会改变其平衡性。平衡二叉树(如AVL树…