CSS之BFC的理解
概念
BFC,全称 Block Formatting Context,意为块格式化上下文。它是 Web 页面的可视化 CSS 渲染的一部分,是块盒子的布局过程发生的区域,也是浮动元素与其他元素交互的区域。
以下方式会创建块格式化上下文:
- 根元素(
<html>
) - 浮动元素(元素的
float
不是none
) - 绝对定位元素(元素的
position
为absolute
或fixed
) - 行内块元素(元素的
display
为inline-block
) - 表格单元格(元素的
display
为table-cell
,HTML 表格单元格默认为该值) - 表格标题(元素的
display
为table-caption
,HTML 表格标题默认为该值) - 匿名表格单元格元素(元素的
display
为table
、table-row
、table-row-group
、table-header-group
、table-footer-group
(分别是 HTML table、row、tbody、thead、tfoot 的默认属性)或inline-table
) overflow
值不为visible
的块元素- display 值为
flow-root
的元素 - contain 值为
layout
、content
或paint
的元素 - 弹性元素(
display
为flex
或inline-flex
元素的直接子元素) - 网格元素(
display
为grid
或inline-grid
元素的直接子元素) - 多列容器(元素的
column-count
或column-width
不为auto
,包括column-count
为 1) column-span
为all
的元素始终会创建一个新的 BFC,即使该元素没有包裹在一个多列容器中。
功能
清除浮动
1 | <div class="parent"> |
1 | .parent { |
未添加 overflow: hidden;
时:
添加后创建了 BFC:
解决外边距合并问题
1 | <div class="container"> |
1 | .container { |
未在父元素添加 overflow: hidden;
时:
添加后:
实现两列自适应布局
1 | <div class="parent"> |
1 | .parent { |
未在第二个子元素添加 overflow: hidden;
时:
添加后:
特性
具有 BFC 特性的元素可以看作是隔离了的独立容器,容器里面的子元素不会在布局上影响到外面的元素,并且 BFC 具有普通容器所没有的一些特性。
通俗来讲,可以把 BFC 理解为一个封闭的箱子,箱子内部的元素无论如何改变,都不会影响到外部。
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 LqZww's blog!
评论
ValineLivere