美文网首页
对BFC的理解

对BFC的理解

作者: 隔壁老王z | 来源:发表于2020-08-05 16:34 被阅读0次

一.什么是BFC?

1、BFC全称Block Formatting Context ,中文直译为块级格式上下文。它是 W3C CSS 2.1 规范中的一个概念,它决定了元素如何对其内容进行定位,以及与其他元素的关系和相互作用。
通俗的来说:BFC是一个独立的布局环境,我们可以理解为一个箱子(实际上是看不见摸不着的),箱子内部的元素不会影响到外部。即BFC中的元素的布局是不受外界的影响(我们往往利用这个特性来消除浮动元素对其非浮动的兄弟元素和其子元素带来的影响。)并且在一个BFC中,块盒与行盒(行盒由一行中所有的内联元素所组成)都会垂直的沿着其父元素的边框排列。
2、BFC布局规则
@1. 在BFC下,内部的Box会在垂直方向,一个接一个地放置。
@2. Box垂直方向的距离由margin决定。属于同一个BFC的两个相邻Box 的margin会发生重叠
@3. 在BFC中,每一个盒子的左外边缘(margin-left)会触碰到容器的左边缘(border-left)(对于从右到左的格式来说,则触碰到右边缘),即使存在浮动也是如此。
@4. BFC的区域不会与float box重叠。
@5. 计算BFC的高度时,浮动元素也参与计算

二.触发BFC

触发 BFC 的条件如下:
浮动元素,float 除 none 以外的值
绝对定位元素,position(absolute,fixed)
display 为以下其中之一的值inline-block, table-cell, table-caption, flex,inline-flex
overflow 除了 visible 以外的值(hidden,auto,scroll)

三.BFC的应用
1.解决浮动塌陷问题

<style>
.parent {
    border: 2px solid #428bca;
}

.child {
    width: 100px;
    height: 100px;
    float: left;
    background: #3BD49E;
}
</style>
<div class="parent">
    <div class="child"></div>
</div>
高度塌陷.PNG

效果如上图,可见如果父元素只包含浮动元素,且父元素未设置高度和宽度的时候,那么它的高度就会塌缩为零。解决这种问题,可以为其父元素创建 BFC。

.parent {
    border: 2px solid #428bca;
    overflow: auto;
  }
父元素创建BFC后

2、自适应两栏布局
我们还可以运用BFC可以阻止元素被浮动元素覆盖的特性来实现自适应两栏布局。

<div class="aside"></div>  
<div class="main"></div>  
div {  
    width:300px;  
}   
.aside {  
      width: 100px;  
      height: 150px;  
      float: left;  
      background: black;  
}  
.main {  
     height:200px;  
     background-color:red;  
}

如果我们需要将黑色区域撑到红色的左边,就需要利用规范的第四条:
BFC的区域不会与float重叠:

.main {  
    overflow:hidden;  
    height:200px;  
    background-color:red;  
}  

这时候左栏宽度固定,右栏宽度会随着浏览器宽度的调整而调整,从而实现一个自适应两栏布局。


相关文章

  • 对BFC的理解

    FC,即formatting context,格式上下文——————它是W3C CSS2.1规范中的一个概念,定义...

  • 对BFC的理解

    一.什么是BFC? 1、BFC全称Block Formatting Context ,中文直译为块级格式上下文。它...

  • 对 BFC 的理解

    BFC (Block Formatting Context) 是 CSS 中的一个概念,用于解决布局问题。它是一个...

  • 对BFC的理解,如何创建BFC

    先来看两个相关的概念: Box: Box 是 CSS 布局的对象和基本单位,⼀个⻚⾯是由很多个 Box 组成的,这...

  • 我对BFC的理解~

    前端7班+余愿 鉴于我对BFC的理解难度,我觉得有必要把我的理解过程记录并保存下来,以后忘了可以随时来翻翻,也可以...

  • 我对BFC的理解

    对css有了解的朋友肯定都知道盒式模型这个概念,对一个元素设置css,首先需要知道这个元素是block还是inli...

  • CSS面试题

    谈一谈你对 BFC/IFC 的理解 BFC 全称 Block Formatting Context,即块级格式化上...

  • CSS 其他小点

    对BFC规范的理解? BFC,块级格式化上下文,一个创建了新的 BFC 的盒子是独立布局的,盒子里面的子元素的样式...

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

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

  • 对BFC的深层理解

    BFC(Block Formatting Context)块级格式化上下文 注意:BFC首先是块,其次需要具备下面...

网友评论

      本文标题:对BFC的理解

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