什么是BFC?

简介: 【10月更文挑战第27天】BFC是CSS中一个非常重要的概念,它对于理解和掌握页面布局以及解决一些常见的布局问题都有着重要的作用,通过合理地创建和利用BFC,可以实现更加灵活和稳定的页面布局。

BFC即Block Formatting Context,中文为块级格式化上下文,它是CSS中的一个重要概念:

定义与原理

  • BFC是Web页面中一个独立的渲染区域,它规定了内部的块级元素如何布局,并且与外部的元素相互隔离。在BFC中,元素按照一定的规则进行排列,这些规则决定了元素的位置、大小以及与其他元素之间的关系。
  • 当一个元素满足以下条件之一时,就会创建一个BFC:
    • 根元素(<html>)。
    • 浮动元素(float 属性不为 none)。
    • 绝对定位元素(position 属性为 absolutefixed)。
    • 行内块元素(display 属性为 inline-block)。
    • 表格单元格(display 属性为 table-cell)。
    • 表格标题(display 属性为 table-caption)。
    • 匿名表格单元格元素(display 属性为 table-cell 的匿名元素,如在使用 display: table 时,内部未明确指定 display 属性的子元素)。
    • 具有 overflow 属性且值不为 visible 的元素。
    • 弹性项目(display 属性为 flexinline-flex 中的子元素)。
    • 网格项目(display 属性为 gridinline-grid 中的子元素)。

布局规则

  • 内部元素排列:在BFC中,块级元素会在垂直方向上一个接一个地排列,每个元素的上外边距与下一个元素的上外边距会发生合并,除非它们之间有边框、内边距或非空内容将它们隔开。
  • 与浮动元素的关系:BFC中的元素不会与浮动元素重叠,而是会根据浮动元素的位置来调整自己的位置,从而实现自适应布局。
  • 包含浮动元素:BFC可以包含浮动的子元素,使浮动元素不会超出其包含块的范围,避免了浮动元素对页面布局的影响。

作用与应用场景

解决外边距塌陷问题

  • 外边距塌陷是指两个相邻的块级元素,当它们的上外边距和下外边距相遇时,会发生合并,导致外边距看起来比实际设置的要大。通过创建BFC,可以将两个元素分隔在不同的BFC中,从而避免外边距的塌陷。
    ```html
    <!DOCTYPE html>









- 在上述示例中,`box1` 和 `box2` 是两个相邻的块级元素,它们的外边距发生了塌陷。通过将 `box2` 包裹在一个创建了BFC的元素中(这里使用 `overflow: hidden;` 创建BFC),可以使 `box1` 和 `box2` 的外边距不再塌陷,各自按照设置的外边距显示。

#### 实现两栏或多栏布局
- BFC可以用于实现两栏或多栏布局,其中一侧的元素可以浮动,另一侧的元素通过创建BFC来实现自适应布局,避免与浮动元素重叠。
```html
<!DOCTYPE html>
<html lang="en">

<head>
  <meta charset="UTF-8">
  <title>BFC与两栏布局</title>
  <style>
   .left {
      float: left;
      width: 200px;
      height: 300px;
      background-color: lightblue;
    }

   .right {
      height: 300px;
      background-color: lightgreen;
      overflow: hidden;
    }
  </style>
</head>

<body>
  <div class="left"></div>
  <div class="right"></div>
</body>

</html>
  • 在这个两栏布局的示例中,左侧的元素通过 float: left; 进行浮动,右侧的元素通过 overflow: hidden; 创建BFC,从而实现了右侧元素自适应宽度,并且不会与左侧的浮动元素重叠。

清除浮动

  • 当一个元素包含浮动的子元素时,如果不进行处理,父元素的高度可能会塌陷,导致页面布局出现问题。通过在父元素上创建BFC,可以使父元素包含浮动的子元素,从而清除浮动,保持页面布局的正常。
    ```html
    <!DOCTYPE html>










```

  • 在上述示例中,父元素 parent 通过 overflow: hidden; 创建BFC,从而包含了浮动的子元素 child,防止了父元素高度塌陷,确保了页面布局的完整性。

BFC是CSS中一个非常重要的概念,它对于理解和掌握页面布局以及解决一些常见的布局问题都有着重要的作用,通过合理地创建和利用BFC,可以实现更加灵活和稳定的页面布局。

相关文章
|
4月前
|
人工智能 弹性计算 安全
从"聊天"到"干活":OpenClaw(Clawdbot)全解析(阿里云+本地部署+百炼API+FAQ)
“ChatGPT像网吧电脑,方便但权限有限;OpenClaw像自己的电脑,自由度拉满”——这是2026年AI领域最形象的能力划分。当普通AI还停留在网页端问答、无法触碰本地数据时,OpenClaw(原Clawdbot、Moltbot)已凭借“本地运行、文件访问、系统操作、技能扩展”四大核心优势,成为无数人的“个人AI工作系统”。它不是简单的聊天工具,而是能深度融入工作流程,接管文档管理、知识沉淀、编程开发、内容创作与自动化任务的“数字员工”。
902 1
|
7月前
|
人工智能 自然语言处理 机器人
2025年头部AI数字人公司技术解析,中国优秀数字人企业实探
2025年,数字人迈向规模化产业应用。世优科技“波塔AI数字人智能体”入选年度典型案例,凭借多模态交互、大模型+小模型架构与全栈技术,深入政务、文旅、医疗、教育等场景,实现降本增效。其技术自研、场景融合与生态共建能力,彰显数字人作为“新质生产力”的落地价值,引领人机协同新时代。
617 0
|
运维 监控 安全
Syslog 日志分析与异常检测技巧
系统日志蕴含设备运行关键信息,但分析提取颇具挑战。本文详解从命令行工具(如 Grep、Tail、Awk)到专业软件(如 EventLog Analyzer)的全流程日志分析技巧,助你高效挖掘 Syslog 价值,提升运维与安全响应能力。
759 4
|
存储 监控 安全
计算机硬件日常维护
【7月更文挑战第28天】
589 4
|
JavaScript
JS中splice与slice的区别【基础】
JS中splice与slice的区别【基础】
601 0
|
前端开发 Linux 调度
ftrace、perf、bcc、bpftrace、ply的使用
ftrace、perf、bcc、bpftrace、ply的使用
1085 2
|
机器学习/深度学习 计算机视觉 Ruby
【YOLOv11改进 - 注意力机制】iRMB: 倒置残差移动块,即插即用的轻量注意力
【YOLOv11改进 - 注意力机制】iRMB: 倒置残差移动块,即插即用的轻量注意力本文提出了一种新的轻量级密集预测模型EMO,结合高效的倒置残差块(IRB)和Transformer组件,设计了单残差元移动块(MMB)和倒置残差移动块(iRMB)。EMO在ImageNet-1K、COCO2017和ADE20K基准上表现出色,参数、效率和准确度达到良好平衡,尤其在iPhone14上运行速度比EdgeNeXt快2.8-4.0倍。
【YOLOv11改进 - 注意力机制】iRMB: 倒置残差移动块,即插即用的轻量注意力
|
JSON Go 数据格式
langchain 入门指南 - 让 LLM 自动选择不同的 Prompt
langchain 入门指南 - 让 LLM 自动选择不同的 Prompt
684 0
|
机器学习/深度学习 人工智能 安全
【大语言模型-论文精读】用于医疗领域摘要任务的大型语言模型评估综述(下)
【大语言模型-论文精读】用于医疗领域摘要任务的大型语言模型评估综述(下)
|
前端开发 开发者 容器
谈谈你对BFC的理解?
BFC,或者块级格式上下文(Block Formatting Context),是CSS中的一个重要概念,用于控制和规范块级元素在布局中的表现。理解BFC对于解决布局问题和处理元素之间的相互影响非常有帮助。
4072 0