美文网首页
CSS篇——BFC

CSS篇——BFC

作者: 方_糖 | 来源:发表于2019-11-20 15:34 被阅读0次

一、BFC是什么

BFC(Block Format Content)又称块级格式化上下文。是页面盒模型布局中的一种 CSS 渲染模式,相当于一个独立的容器,里面的元素和外部的元素相互不影响。

CSS2.1 中只有 BFCIFC(Inline Format Content), CSS3中还增加了 GFCFFC。

二、创建 BFC 的方式有:

  • html 根元素
  • float 浮动
  • 绝对定位
  • overflow 不为 visiable
  • display 为表格布局或者弹性布局

三、 BFC重要特性有:

  • Box垂直方向的距离由margin决定,在一个BFC中,两个相邻的块级盒子的垂直外边距会产生折叠。
  • 在BFC中,每一个盒子的左外边缘(margin-left)会触碰到容器的左边缘(border-left)(对于从右到左的格式来说,则触碰到右边缘)
  • 形成了BFC的区域不会与float box重叠
  • 计算BFC高度时,浮动元素也参与计算

四、 BFC的主要作用有:

  • 清除浮动
  • 防止同一 BFC 容器中的相邻元素间的外边距重叠问题
    具体情况如下:

防止同一 BFC 容器中的相邻元素间的外边距重叠问题

1.创建两个普通的div: div1(小100px), div2(大200px) 。

<body>
        <div id="div1"></div>
        <div id="div2"></div>
   </body>

效果如图:

由于div1和div2同属于<html>下的元素,所以div1和div2同在一个BFC。

image.png
2.分别设置div1:margin-bottom:100px; ,div2:margin-top:100px

效果如图:

我们预期的结果应该是中间的间距为100px + 100px = 200px ,但是由于BFC的特性:"Box垂直方向的距离由margin决定,在一个BFC中,两个相邻的块级盒子的垂直外边距会产生折叠。" 导致间距只有100px

image.png

3.所以为了达到我们预期的200px效果,就不能让div1和div2处在同一个BFC里面

当两个相邻块级子元素分属于不同的BFC时可以阻止margin重叠

所以想要margin不重叠,我们只需要给其中一个div添加父元素,再对父元素使用overflow:hidden;overflow:auto;overflow:auto;使他们不在一个BFC里,具体如下:

<div id="div1"></div>
 <div style="overflow: hidden"><div id="div2"></div></div>

清除浮动

1.创建两个普通的div: div1(小100px), div2(大200px) 。div1设置float:left;,此时div由于有float的属性了,所以变成了BFC。
效果如图:

image.png
2.如果我们要让两个div不重叠,只需要使div2也成为了BFC即可,这里我们也给div2添加overflow:hidden

形成了BFC的区域不会与float box重叠

效果如图:


image.png

相关文章

  • CSS篇——BFC

    一、BFC是什么 BFC(Block Format Content)又称块级格式化上下文。是页面盒模型布局中的一种...

  • CSS清除浮动的方法

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

  • 前端系列知识目录

    CSS系列??? 10 分钟理解 BFC 原理 JavaScript系列学习??? 进阶篇 ? JavaScirp...

  • CSS BFC和CSS hack

    简述CSS BFC和CSS hack BFC BFC定义:浮动元素和绝对定位元素,非块级盒子的块级容器(例如inl...

  • CSS BFC 扫盲篇

    有人问我对 CSS 的 BFC 了解多少,我一脸懵逼。后来谷歌查询了一番,发现工作中已经多次使用了 BFC 特性却...

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

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

  • 快速弄懂 BFC

    参考 BFC 是什么 css 2.1 规范。BFC(Block formatting context)直译为"块级...

  • CSS-BFC的理解

    简介在使用CSS的过程中,经常会听到触发BFC,但是何为BFC。BFC(Block formatting cont...

  • 前端面试基础题

    BFC、IFC、GFC、FFC CSS2.1中只有BFC和IFC, CSS3中才有GFC和FFC。 到底什么是BF...

  • 前端知识点之谈一谈css盒模型、BFC

    知识点:--css 盒模型--标准模型和 IE 模型--BFC 谈一谈 css 盒模型、BFC 是面试中常见的问题...

网友评论

      本文标题:CSS篇——BFC

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