CSS 中什么是BFC?

BFC,为 Block Formatting Context 的缩写,中文翻译为 块格式上下文

BFC 是 Web 页面 CSS 渲染的一个机制,是块级盒子布局中产生的区域。

你可以将一个 BFC 可以理解为一个容器,里面的元素不会影响到容器外的布局

怎样的元素属于 BFC?

  • 根元素,也就是 HTML 元素
  • 浮动元素,即使用了 float 属性且值不为 none
  • 定位元素
  • 块级容器(如 display 的值为 inline-blocks、table-cells、table-captions)
  • overflow 的值不为 visible 的元素
  • 使用了 display: flow-root 的元素。这是新出的值,专门用来创建无副作用的 BFC。兼容性存疑,比较少用。

当然还有一些 CSS 属性也可以触发 BFC,但比较少见,这里就不一一列举了,读者可自行阅读 MDN 文档。

目前来说,最常见的是通过 overflow: hidden 来构建 BFC。一般情况下,它的副作用最小。但如果元素下有超出盒子范围的内容,会被截掉,请谨慎使用。

BFC 的特性

BFC 主要有两个特性,我们来学习一下。

特性1:上下外边距重叠

同一个 BFC 下的两个相邻块级元素,会发生上下方向的 margin 重叠

比如前一个 div 设置了 margin-bottom: 20px,下一个 div 设置了 margin-top: 10px,然后你会发现它们的上下距离其实是 20px(二者的值),而不是 30px(二者之和)。

<style>  
  .box {    width: 100px;    height: 100px;  }  
  .b1 {    background-color: bisque;    margin-bottom: 20px;  }  
  .b2 {    background-color: blueviolet;    margin-top: 10px;  }
</style>

<div class="box b1"></div>
<div class="box b2"></div>

如果想避免这种情况,可以给这两个 div 裹上一个 BFC。

<style>
  .container {    overflow: hidden;  }  /* ... */
</style>
<div class="container">
  <div class="box b1"></div>
</div>
<div class="container">
  <div class="box b2"></div>
</div>

特性 2:浮动元素也会参与计算高度

浮动,是非常奇怪的一种效果。效果类似 word 的文字环绕排版,可以让文字和内联样式环绕着它。

当一个元素被赋予浮动效果后,它会脱落正常文档流,向左或向右平移到所在容器的边框(border)位置,或者碰到另一个浮动元素为止。

浮动元素脱离了正常文档流,一般情况下,计算容器元素的高度时,是考虑浮动元素的高度的。

BFC 可以强行让浮动元素参与计算。

<style>
  .container {    /* overflow: hidden; */    padding: 5px;    border: 1px solid #000;  }
  .box {    float: left;    width: 100px;    height: 100px;    background-color: cornflowerblue;  }
</style>
<div class="container">
  <div class="box"></div>
</div>

上面的这种写法,没有给 container 应用 BFC,会导致容器元素高度塌陷,效果见下图左边。

当我们将 overflow: hidden 的注释去除,容器元素就应用了 BFC,就能得到我们想要的容器元素根据子元素自动撑高的效果了。

文章来源网络,作者:运维,如若转载,请注明出处:https://shuyeidc.com/wp/115109.html<

(0)
运维的头像运维
上一篇2025-02-18 00:23
下一篇 2025-02-18 00:25

相关推荐

  • 个人主题怎么制作?

    制作个人主题是一个将个人风格、兴趣或专业领域转化为视觉化或结构化内容的过程,无论是用于个人博客、作品集、社交媒体账号还是品牌形象,核心都是围绕“个人特色”展开,以下从定位、内容规划、视觉设计、技术实现四个维度,详细拆解制作个人主题的完整流程,明确主题定位:找到个人特色的核心主题定位是所有工作的起点,需要先回答……

    2025-11-20
    0
  • 社群营销管理关键是什么?

    社群营销的核心在于通过建立有温度、有价值、有归属感的社群,实现用户留存、转化和品牌传播,其管理需贯穿“目标定位-内容运营-用户互动-数据驱动-风险控制”全流程,以下从五个维度展开详细说明:明确社群定位与目标社群管理的首要任务是精准定位,需明确社群的核心价值(如行业交流、产品使用指导、兴趣分享等)、目标用户画像……

    2025-11-20
    0
  • 香港公司网站备案需要什么材料?

    香港公司进行网站备案是一个涉及多部门协调、流程相对严谨的过程,尤其需兼顾中国内地与香港两地的监管要求,由于香港公司注册地与中国内地不同,其网站若主要服务内地用户或使用内地服务器,需根据服务器位置、网站内容性质等,选择对应的备案路径(如工信部ICP备案或公安备案),以下从备案主体资格、流程步骤、材料准备、注意事项……

    2025-11-20
    0
  • 如何企业上云推广

    企业上云已成为数字化转型的核心战略,但推广过程中需结合行业特性、企业痛点与市场需求,构建系统性、多维度的推广体系,以下从市场定位、策略设计、执行落地及效果优化四个维度,详细拆解企业上云推广的实践路径,精准定位:明确目标企业与核心价值企业上云并非“一刀切”的方案,需先锁定目标客户群体,提炼差异化价值主张,客户分层……

    2025-11-20
    0
  • PS设计搜索框的实用技巧有哪些?

    在PS中设计一个美观且功能性的搜索框需要结合创意构思、视觉设计和用户体验考量,以下从设计思路、制作步骤、细节优化及交互预览等方面详细说明,帮助打造符合需求的搜索框,设计前的规划明确使用场景:根据网站或APP的整体风格确定搜索框的调性,例如极简风适合细线条和纯色,科技感适合渐变和发光效果,电商类则可能需要突出搜索……

    2025-11-20
    0

发表回复

您的邮箱地址不会被公开。必填项已用 * 标注