【前端面经】BFC

BFC

  • BFC
    • [什么是 BFC?](#什么是 BFC?)
    • [元素开启 BDC 后的特殊布局效果](#元素开启 BDC 后的特殊布局效果)
    • [元素开启 BFC 的方式](#元素开启 BFC 的方式)

BFC

什么是 BFC?

  1. 官方解释:A block formatting context (BFC) is a part of a visual CSS rendering of a web page. It's the region in which the layout of block boxes occurs and in which floats interact with other elements.
  2. 通俗理解 :BFC(块级格式化上下文)是一种在布局上具有特定效果的渲染区域 。创建/开启 BFC 意味着元素被激活了这种特殊的布局效果,从而使其内部的元素布局和浮动元素的交互方式与默认情况有所不同。

元素开启 BDC 后的特殊布局效果

  1. 官方解释
    • contain internal floats.
    • suppress margin collapsing.
    • exclude external floats.
  2. 通俗理解
    • 元素中的子元素浮动时,自身高度不会塌陷
    • 元素中的子元素不会产生 margin 塌陷问题
    • 元素不会被外部的浮动元素所覆盖

元素开启 BFC 的方式

常见的元素开启 BFC 的方式如下,

  • 根元素 <html> ==> The root element of the document ().
  • 浮动元素 ==> Floats (elements where float isn't none).
  • 绝对定位或固定定位的元素 ==> Elements where position is absolute or fixed.
  • 行内块元素 ==> Inline-blocks (elements with display: inline-block).
  • 表格单元格 ==> Table cells (elements with display: table-cell, which is the default for HTML table cells).
  • 表格标题 ==> Table captions (elements with display: table-caption, which is the default for HTML table captions).
  • overflow: hidden/scroll/auto 的元素 ==> Block elements where overflow has a value other than visible and clip.
  • 伸缩项目 ==> Flex items (direct children of the element with display: flex or inline-flex) if they are neither flex nor grid nor table containers themselves.
  • 多列容器 ==> Multicol containers (elements where column-count or column-width isn't auto, including elements with column-count: 1).
  • column-span: all 的元素 ==> column-span: all should always create a new formatting context, even when the column-span: all element isn't contained by a multicol container
  • display: flow-root 的元素,副作用最低! ==> display: flow-root.
相关推荐
豐儀麟阁贵2 分钟前
8.5在方法中抛出异常
java·开发语言·前端·算法
zengyuhan50332 分钟前
Windows BLE 开发指南(Rust windows-rs)
前端·rust
醉方休35 分钟前
Webpack loader 的执行机制
前端·webpack·rust
前端老宋Running43 分钟前
一次从“卡顿地狱”到“丝般顺滑”的 React 搜索优化实战
前端·react.js·掘金日报
隔壁的大叔43 分钟前
如何自己构建一个Markdown增量渲染器
前端·javascript
用户4445543654261 小时前
Android的自定义View
前端
WILLF1 小时前
HTML iframe 标签
前端·javascript
枫,为落叶1 小时前
Axios使用教程(一)
前端
小章鱼学前端1 小时前
2025 年最新 Fabric.js 实战:一个完整可上线的图片选区标注组件(含全部源码).
前端·vue.js
ohyeah1 小时前
JavaScript 词法作用域、作用域链与闭包:从代码看机制
前端·javascript