美文网首页
如何理解CSS中BFC?

如何理解CSS中BFC?

作者: 叫维特的少年 | 来源:发表于2021-02-24 15:37 被阅读0次

什么是BFC?

定义: 块格式化上下文(Block Formatting Context,BFC) 是Web页面的可视化CSS渲染的一部分,是块盒子的布局过程发生的区域,也是浮动元素与其他元素交互的区域。

BFC 特性及应用
  • 同一个 BFC 下外边距会发生折叠
    通过代码来理解
<style>
div {
    height:100px;
    background:#00f;
    margin:500px;
}
</style>
//两个 div 元素都处于同一个 BFC 容器下 (这里指 body 元素) ,css样式下第一个 div 的下边距和第二个 div 的上边距发生了重叠,两个盒子之间距离只有 50px,而不是 100px
<body>
    <div></div>
    <div></div>
</body>
// 如果想要避免外边距的重叠,可以将其放在不同的 BFC 容器中
  • BFC 可以包含浮动的元素(清除浮动)
    浮动的元素会脱离普通文档流,来看下下面一个例子
// 由于容器内元素浮动,脱离了文档流,所以容器只剩下 2px 的高度(来自边框)。如果使触发容器的 BFC,那么容器将会包裹着浮动元素
<div style="border: 1px solid #000;">  
    <div style="width: 100px;height: 100px;background: red;float: left;"></div>
</div>
// 下面我们将其清除浮动触发BFC,将可包裹浮动元素
<div style="border: 1px solid #000;overflow:hidden">
    <div style="width: 100px;height: 100px;background: red;float: left;"
></div>
</div>
//清除浮动的方式有很多,通常使用::after伪类来解决
  • BFC 可以阻止元素被浮动元素覆盖
    这个经典的css布局试题(两列自适应布局)就是应用的BFC特性
<div style="float:left;width:200px;background:blue">left</div> 
<div style="height:100%;background:red">right</div>
//右侧元素没有被浮动元素覆盖,实现两栏布局

触发BFC
下列方式会触发BFC(摘抄自MDN)

  • 根元素或包含根元素的元素
  • 浮动元素(元素的 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或 strict 的元素
  • 弹性元素(display为 flex 或 inline-flex元素的直接子元素)
  • 网格元素(display为 grid 或 inline-grid 元素的直接子元素)
  • 多列容器(元素的 column-count 或 column-width 不为 auto,包括 column-count 为 1)
  • column-span 为 all 的元素始终会创建一个新的BFC,即使该元素没有包裹在一个多列容器中
    总结
  • 同一个 BFC 下外边距会发生折叠
  • BFC 可以阻止元素被浮动元素覆盖
  • BFC 可以包含浮动的元素(清除浮动)

相关文章

  • 如何理解CSS中BFC?

    什么是BFC? 定义: 块格式化上下文(Block Formatting Context,BFC) 是Web页面的...

  • 关于 BFC 的布局应用:清除浮动、文字环绕

    关于 BFC 的布局应用:清除浮动、文字环绕 参考文档:理解CSS中BFC BFC(Block Formattin...

  • CSS中重要的BFC

    CSS中有个重要的概念BFC,搞懂BFC可以让我们理解CSS中某些原本诡异(??)的地方。 1. 简介 在解释BF...

  • HTML+CSS \03

    一、html和css部分 1、如何理解CSS的盒子模型? 2、BFC? 什么是 BFCBFC(Block Form...

  • Why can't I change

    1、如何理解CSS的盒子模型? 2、 BFC? 什么是 BFCBFC(Block Formatting Conte...

  • CSS中BFC的理解!

    浮动,绝对定位元素,inline-blocks,table-cells,table-captions,和overf...

  • 理解css中的BFC

    BFC 即 Block Formatting Contexts (块级格式化上下文),它是页面中的一块渲染区域,并...

  • CSS清除浮动的方法

    BFC CSS中的BFC BFC:block formatting context块级格式化上下文; BFC 与清...

  • 关于CSS的BFC

    参考:理解CSS布局和BFCCSS深入理解流体特性和BFC特性下多栏自适应布局 1、概念BFC(Block For...

  • BFC?

    BFC是前端面试中CSS部分的一个常考项,但是这个概念却是很不好理解的。 官方的定义 BFC (block for...

网友评论

      本文标题:如何理解CSS中BFC?

      本文链接:https://www.haomeiwen.com/subject/rskufltx.html