面试官:请说说什么是BFC?大白话讲清楚

CSS高频面试考点全解析:盒模型、BFC、Flex/Grid与动画细节 CSS作为前端样式的基础语言,知识点碎片化且缺乏严密逻辑,但面试官却偏爱从最基础的概念切入,层层深入考察候选人的真实功底。从盒模型与BFC的触发原理,到Flex与Grid在布局中的边界划分,再到选择器优先级和样式隔离机制,每一个环节都藏着容易被忽略的细节。CSS动画的性能优化逻辑同样关键,理解transform与opacity为何能跳过Layout与Paint,才能写出流畅的交互;而css deep方法、rotate3d坐标系等进阶话题,则是区分“会用”与“懂原理”的分水岭。掌握这些核心考点,不仅有助于应对 阅读详情

BFC到底是什么东西

BFC 全称:Block Formatting Context, 名为 "块级格式化上下文"。

W3C官方解释为:BFC它决定了元素如何对其内容进行定位,以及与其它元素的关系和相互作用,当涉及到可视化布局时,Block Formatting Context提供了一个环境,HTML在这个环境中按照一定的规则进行布局。

简单来说就是,BFC是一个完全独立的空间(布局环境),让空间里的子元素不会影响到外面的布局。那么怎么使用BFC呢,BFC可以看做是一个CSS元素属性

怎样触发BFC

这里简单列举几个触发BFC使用的CSS属性

  • overflow: hidden
  • display: inline-block
  • position: absolute
  • position: fixed
  • display: table-cell
  • display: flex

BFC的规则

  • BFC就是一个块级元素,块级元素会在垂直方向一个接一个的排列
  • BFC就是页面中的一个隔离的独立容器,容器里的标签不会影响到外部标签
  • 垂直方向的距离由margin决定, 属于同一个BFC的两个相邻的标签外边距会发生重叠
  • 计算BFC的高度时,浮动元素也参与计算

BFC解决了什么问题

1.使用Float脱离文档流,高度塌陷

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>高度塌陷</title>
    <style>
        .box {
            margin: 100px;
            width: 100px;
            height: 100px;
            background: red;
            float: left;
        }
        .container {
            background: #000;
        }
    </style>
</head>
<body>
    <div class="container">
        <div class="box"></div>
        <div class="box"></div>
    </div>
</body>
</html>
复制代码

效果:

可以看到上面效果给box设置完float结果脱离文档流,使container高度没有被撑开,从而背景颜色没有颜色出来,解决此问题可以给container触发BFC,上面我们所说到的触发BFC属性都可以设置。

修改代码

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>高度塌陷</title>
    <style>
        .box {
            margin: 100px;
            width: 100px;
            height: 100px;
            background: red;
            float: left;
        }
        .container {
            background: #000;
            display: inline-block;
        }
    </style>
</head>
<body>
    <div class="container">
        <div class="box"></div>
        <div class="box"></div>
    </div>
</body>
</html>
复制代码

效果:

2.Margin边距重叠

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <style>
        .box {
            margin: 10px;
            width: 100px;
            height: 100px;
            background: #000;
        }
    </style>
</head>
<body>
    <div class="container">
        <div class="box"></div>
        <div class="box"></div>
    </div>
</body>
</html>
复制代码

效果:

可以看到上面我们为两个盒子的margin外边距设置的是10px,可结果显示两个盒子之间只有10px的距离,这就导致了margin塌陷问题,这时margin边距的结果为最大值,而不是合,为了解决此问题可以使用BFC规则(为元素包裹一个盒子形成一个完全独立的空间,做到里面元素不受外面布局影响),或者简单粗暴方法一个设置margin,一个设置padding。

修改代码

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Margin边距重叠</title>
    <style>
        .box {
            margin: 10px;
            width: 100px;
            height: 100px;
            background: #000;
        }
    </style>
</head>
<body>
    <div class="container">
        <div class="box"></div>
        <p><div class="box"></div></p>
    </div>
</body>
</html>
复制代码

效果:

3.两栏布局

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>两栏布局</title>
    <style>
            div {
                 width: 200px;
                 height: 100px;
                 border: 1px solid red;
            }

    </style>
</head>
<body>
    <div style="float: left;">
        两栏布局两栏布局两栏布局两栏布局两栏布局两栏布局两栏布局两栏布局两栏布局两栏布局两栏布局两栏布局两栏布局
    </div>
    <div style="width: 300px;">
        我是蛙人,如有帮助请点个赞叭,如有帮助请点个赞叭,如有帮助请点个赞叭,如有帮助请点个赞叭,如有帮助请点个赞叭,如有帮助请点个赞叭
    </div>
</body>
</html>
复制代码

效果:

可以看到上面元素,第二个div元素为300px宽度,但是被第一个div元素设置Float脱离文档流给覆盖上去了,解决此方法我们可以把第二个div元素设置为一个BFC。

修改代码

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>两栏布局</title>
    <style>
            div {
                 width: 200px;
                 height: 100px;
                 border: 1px solid red;
            }

    </style>
</head>
<body>
    <div style="float: left;">
        两栏布局两栏布局两栏布局两栏布局两栏布局两栏布局两栏布局两栏布局两栏布局两栏布局两栏布局两栏布局两栏布局
    </div>
    <div style="width: 300px;display:flex;">
        我是蛙人,如有帮助请点个赞叭,如有帮助请点个赞叭,如有帮助请点个赞叭,如有帮助请点个赞叭,如有帮助请点个赞叭,如有帮助请点个赞叭
    </div>
</body>
</html>
复制代码

效果:

结语

谢谢你读完本篇文章,希望对你能有所帮助,如有问题欢迎各位指正。整理的一些Java面试题可在】工众号【不脱发有志青年】

 

前端校招笔试备战:从百度真题看JavaScript基础与工程化考点 前端开发岗位的校招笔试,看似题型多变,实则始终围绕JavaScript语言基础、浏览器渲染机制、网络协议与工程化工具链展开。理解闭包、事件循环、原型链等核心概念,掌握防抖节流、深拷贝、Promise串行等常见手写题,是应对大厂筛选的底层能力。这些原理不仅决定笔试成绩,更直接关系到实际项目中的性能优化与边界处理。从URL输入到页面渲染,从跨域方案到缓存策略,都是前端工程师日常排查问题、设计架构的必备知识。回归到2019年百度校招笔试题,正是对上述知识体系的集中检验,通过真题复盘可以高效定位知识盲区、整理解题思 阅读详情

相关推荐

2017字节跳动前端笔试题拆解:底层原理与备考策略

前端面试的核心始终围绕JavaScript、浏览器与工程化等底层能力展开。从闭包、原型链到事件循环,从手写Promise、防抖节流到HTTP缓存与跨域方案,大厂笔试不仅考察知识记忆,更检验原理理解与工程素养。理解这些技术概念的本质,能帮助开发者应对技术栈快速迭代的挑战。在面试准备中,以知识点自查与三轮复习法为抓手,系统梳理高频考点,培养边界意识与代码规范,即可有效提升笔试通过率。本文基于2017年字节跳动秋招前端笔试题型,深度剖析经典题型背后的考察逻辑,并给出可落地的备考路线,为正在准备前端面试的开发者提供

weixin_29001327的博客 308

BFC是什么?BFC可以做什么?

BFC块格式化上下文

weixin_42479421的博客 288

别再手动折腾了!PICO Unity SDK 一键配置开发环境保姆级教程(含PDC串流调试)

本文详细介绍了PICO Unity SDK的一键配置功能,帮助开发者快速搭建VR开发环境。通过自动化配置流程,大幅减少手动设置时间,提升开发效率。文章还涵盖了PDC串流调试技巧和常见问题解决方案,是PICO VR开发的实用指南。

weixin_30335575的博客 454

前端BFC是什么

什么是BFC?相信有一部分人面试时应该会被面试官问过吧,没了解过的人估计一脸懵逼。其实这是一个很简单的东西,面试官也是想考察你知识面是否广泛。 全称块级格式化上下文?什么意思不懂。看了好多博客,基本都是抄的,真心都不是大白话。我今天来总结一下,用菜鸟级别的语言来描述。 BFC 应该可以抽象成一个 独立的个体,出淤泥而不染的白莲花。 是的不受其他元素的影响,始终保持自己独立。就是正常的普通流布局规则...

前端打工人的博客 354

低功耗和UPF介绍

参考[UPF]低功耗(Low Power Design)and UPF介紹

青春易逝,愿不负昭华,期待梦与远方 1万+

那些年对支付宝的研究[整理]

支付宝功能强大.他内部各个功能间的跳转是通过Uri 实现的.而使用window.location.href 即可.跟浏览器一样的协议.很方便 H5启动支付宝: alipays://platformapi/startapp?appId=20000067&url=网址 alipays://platformapi/startapp?appId=20000691&url=网址 ali...

技术专研 8919

flex布局讲解、BFC讲解

1、flex详解弹性布局(display:flex;)属性详解 - cdgogo - 博客园 2、BFC详解 面试官:请说说什么是BFC?大白话讲清楚_蛙人的博客-优快云博客 什么是BFC?看这一篇就够了_Leon的博客-优快云博客_bfc

m0_37756431的博客 762

直方图均衡化原理及matlab和opencv实现代码

详细分析了直方图均衡化的数学原理,配有matlab和opencv实现代码

qq_21603315的博客 4779

2026前端面试必杀技:大白话详解高频面试题2

大白话回答:很多人背完概念就忘,面试时重点说“是什么+怎么触发+实际能用在哪”,结合场景说,分分钟加分!BFC说白了就是块级格式化上下文,简单理解就是一个“独立的渲染小房间”,房间里的元素怎么布局、间距多少,都不影响外面的元素,外面的也干扰不到里面,相当于给元素做了个“隔离罩”。触发条件(满足一个就行,记常用的)

前端大白话 982

UMI——斯坦福刷盘机器人:通过手持夹爪革新数据收集方式,且使用视觉SLAM和Diffusion Policy预测动作

没想到今年年初的斯坦福mobilealoha的热度刚过,而到今年2月的下旬,斯坦福另一个团队又推出了UMI刷盘机器人,且这两个团队还互相认识、还在一块共同切磋(顺带小小感叹一下,斯坦福的氛围是真好而且真高产)斯坦福UMI刷盘机器人其与mobile aloha(以及AirExo: Low-Cost Exoskeletons for Learning Whole-Arm Manipulation in the Wild)最大的不同在于其收集数据处理的非真实的机器人,而是一个手持夹持器(从而大幅降低成本)

u013250861的博客 1357

【问题解决】Python 异步 asyncio 卡死、协程不执行、任务泄漏,保姆级排错

本文详细分析了Python异步编程中常见的卡死、协程不执行和任务泄漏问题。文章首先列举了这些问题的典型表现,如程序卡住、死锁、任务未启动等。然后深入剖析了各类问题的根源,包括同步阻塞操作、未正确await、资源未清理等。针对这些问题,文章提供了两套解决方案:一是异步编程最佳实践,包括安全协程执行、带超时的执行、任务清理等实用方法;二是死锁检测和预防机制,通过锁管理和等待图分析来避免死锁。文章还包含可直接使用的代码示例,帮助开发者快速定位和解决异步编程中的常见问题。

博客 451

【前端】求职必备知识点3-CSS:BFC、position、两栏布局、三栏布局、水平居中(6种方法)、垂直居中(7种方法)

上述式子中,top和bottom为0,margin等于auto,此时浏览器为了满足这个等式会把上下的距离均匀分给margin,即达到我们想要的居中效果。横向也是一样的道理。原理:对当前元素的position设置为absolute,并且相对于父元素定位。的三栏布局:注意绝对定位的元素脱离文档流,相对于最近的已经定位的祖先元素进行定位。因此需要知道子元素的大小。原理:属于同一个BFC的两个相邻的Box的margin会发生重叠。原理:计算BFC的高度时,浮动子元素也参与计算。相对于该元素所在行的基线的垂直对齐。

karshey的博客 312

34、婴儿监视器应用开发指南

本文详细介绍了基于 ESP32 和 Edge Impulse 开发婴儿监视器应用的全过程,涵盖音频处理、机器学习推理、ESP RainMaker 平台集成以及内存监控等功能。通过实现 AppAudio、AppRmaker 和 AppMem 三个核心类,完成了婴儿哭声的实时检测与远程通知,并通过合理的内存管理优化,有效节省了 ESP32 的内部 RAM 资源。文章还提供了完整的代码示例和配置说明,适用于物联网和嵌入式 AI 应用开发爱好者参考学习。

python9snake的博客 95

2026前端面试必杀技:大白话详解高频面试题(直击考点,看完直接上战场)

大白话回答:很多人背完概念就忘,面试时重点说“是什么+怎么触发+实际能用在哪”,结合场景说,分分钟加分!BFC说白了就是块级格式化上下文,简单理解就是一个“独立的渲染小房间”,房间里的元素怎么布局、间距多少,都不影响外面的元素,外面的也干扰不到里面,相当于给元素做了个“隔离罩”。触发条件(满足一个就行,记常用的)

前端大白话 881

三极管、MOS管和晶体管综合对比——《器件手册--三极管、MOS管和晶体管》

IGBT(Insulated Gate Bipolar Transistor,绝缘栅双极型晶体管)是一种复合全控型电压驱动式功率半导体器件,结合了MOSFET的高输入阻抗、开关速度快的优点和双极型晶体管(BJT)的低导通压降、高电流密度的优点。例如,在NPN型三极管中,当基极电流增加时,集电极电流会按照一定的比例(放大倍数β)增加,这个比例通常在几十到几百之间。在NMOS管中,当栅极相对于源极的电压(Vgs)小于开启电压(Vth)时,漏极和源极之间没有导电沟道,电流无法通过,处于截止状态。

XU157303764的博客 2886

IMSL CNL 7.0.0 (x86-64)Crack

IMSL CNL 7.0.0 (x86-64)Crack intel的算法库破解文件,这是C++版本的破解文件

2026 前端面试必杀技(大白话完整版)

—含 Vue3.5 最新特性,不啰嗦、直接背、直接用大家好,这篇是,全程大白话,不绕弯、不重复、不搞晦涩理论,从基础到框架、从工程化到性能,,面试照着说就能拿高分。

前端大白话 1001

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

CSS面试硬核考点:盒模型、BFC、margin塌陷与层叠上下文解析

CSS盒模型定义了元素的实际占地尺寸,BFC(块级格式化上下文)则形成独立渲染结界,二者是理解布局问题的根基。margin塌陷源于垂直margin合并机制,层叠上下文与z-index决定的并非简单数值大小,这些概念共同构成CSS面试中最易“一追问就露馅”的深水区。从原理到工程实践,掌握盒模型计算、触发BFC的方式、防塌陷方案、层叠顺序以及浮动清除,能帮助开发者高效定位样式异常,并合理规划组件层级。围绕浏览器渲染底层逻辑,逐一拆解这些高频考点,梳理从基础概念到实战应用的完整路径,适合准备前端面试或希望系统补强

weixin_29012677的博客 294

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

知识梳理——CSS

1.画一条0.5px的线 采用meta viewport的方式 <meta name="viewport" content="initial-scale=1.0, maximum-scale=1.0, user-scalable=no" /> 采用border-image的方式 采用transform: scale()的方式 .line:after { content:""; position: absolute;

wytraining 213

精华笔记 112314

promise 异步编程的方式 1.回调 2.时间监听, promise与事件监听不同的是,事件一旦错过了,再去监听是得不到答案的。 3.promise 避免回调地狱,缺点:无法取消promise,一旦新建便无法取消,如果不设置回调函数,promise内部抛出错误,不会反映到外部,处于Pending状态时,无法得知自己进展到哪个状态 4.async await promise函数接受一个函数作为参数,改函数的两个参数,分别是resolve和reject。resolve函数的作用是在异步操作成功时调用,将

Supple11的博客 449

一些关于简历的分享

important 细节(排版、格式、标点、专业名词拼写、大小写、手机/邮箱格式) 1.专业技能(熟练程度) 2.教育背景 3.工作经历 4.项目经历 STAR模式 第一步,项目背景不用过多介绍,几句话即可。如果这个项目是一个大流量、大用户、复杂度高的项目,请一定描述出来,这是亮点。 第二步,自己完成的任务,一定要写明“参与”还是“负责”,用词很重要。当然,如果你对项目的某一个模块很熟悉,也可以写“负责 xxx 模块”。只要你在面试时能回答的上来即可,完全看你个人对项目的熟悉程度。注意,对.

weixin_51060775的博客 397

牛客网收集的前端面试题(html+css+js部分)

它是一个独立的渲染区域,只有块级元素参与, 它规定了内部的块级元素如何布局,并且与这个区域外部毫不相干。简单来说就是,

qq_65995258的博客 289

前端面试八股文:高频 100 题一口气吃透,背完就能开大!(附答案 & 解析)

《前端面试高频100题精要指南》 本文整理了前端面试中最常考察的100道核心题目,涵盖HTML/CSS基础、JavaScript原理、框架应用等方向,帮助开发者系统备战技术面试。 核心内容: HTML/CSS篇(15题) 盒模型差异、BFC原理、Flex布局、响应式设计等高频考点 经典问题如"display:none与visibility区别""1px边框解决方案" JavaScript篇(30题) 数据类型检测、原型链、闭包、事件循环等核心机制 手写Promise、

热爱技术与前沿创新,深耕科技领域,在科创中精进自我;探索技术乐趣,分享技术干货与成长心得,以技术为伴,热爱生活,在科创与生活中双向成长。 478

前端面试八股文七天冲刺:核心考点与答题实战指南

前端面试中概念题看似零散,实则围绕JavaScript、浏览器、网络、框架等核心知识展开。以闭包、事件循环、原型链为代表的语言机制,决定了异步编程和模块化设计的上限;而浏览器渲染流程、HTTP缓存策略,则直接影响页面性能与用户体验。理解这些底层原理,不仅是应对标准化面试题的基础,更是工程实践中排查问题、优化架构的必备能力。从基础概念到框架响应式原理,从手写防抖函数到工程化构建流程,掌握高频考点并形成系统知识网,是短期高效备战的正确姿势。围绕面试中反复出现的典型问题,梳理概念、原理与应用三位一体的回答结构,配

weixin_32349561的博客 284

从2017到2026:前端校招笔试题型复盘与考点解析

前端面试始终围绕JavaScript语言核心与浏览器机制展开,闭包、原型链、事件循环等概念是考察候选人对异步编程和内存模型理解深度的试金石。理解事件循环的宏任务与微任务调度顺序,掌握闭包在防抖节流、模块封装中的实际应用,是应对不同年份前端笔试题的共同前提。随着工程化与性能优化要求提升,Webpack、微前端、渲染性能监控等知识点也逐渐成为高频考点。本文从基础语法到综合设计题,梳理典型题型与解题思路,帮助校招候选人和在职前端建立系统复习坐标,从容面对从笔试到面试的完整考察链路。

weixin_29003437的博客 268
上一篇: 设计一个填充工具完美解决前后端甩锅的问题了
下一篇: 阿里一面:TCP 的 Keepalive 和 HTTP 的 Keep-Alive 是一个东西吗?
程序员职业指南
博客等级 码龄4年 2138粉丝 960原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值