美文网首页CSS
CSS-BFC的理解

CSS-BFC的理解

作者: riverhh | 来源:发表于2019-02-15 21:02 被阅读41次

简介
在使用CSS的过程中,经常会听到触发BFC,但是何为BFC。BFC(Block formatting context)简单的翻译就是“块级格式化上下文”。BFC是一个独立的渲染区域,它规定Block-level Box如何布局,并且与整个区域外部毫不相干。 BFC有什么作用,BFC什么时候会触发,本文浅析一下BFC产生条件、特性、主要用途,以及它工作的原理。希望喜欢的朋友可以点个赞,或者关注一波本人,谢谢。

触发BFC的条件

元素的显示模式通常可以分为:块级元素、行内元素、行内块元素,但是实际上存在的远远不止这三种显示模式,而这三种是我们经常使用的。

并不是所有的元素都可以触发BFC的效果,W3C规定显示模式为:block、list-item、table的元素会触发BFC。(注意当显示模式为inline-block的时候会触发IFC)

以上的盒子具有BFC条件,但是怎么样才能触发BFC呢,从而创造这个封闭的环境。需要给以上的元素添加如下的属性就可以出触发BFC的效果了

float属性不为none
position为absolute或者是fixed
display为inline-block、table-cell、table-caption、flex、inline-flex
overflow不为visible

BFC具有的特性

  1. 在BFC中,内部的Box会在垂直方向,一个接一个地放置;
  2. Box垂直方向的距离由margin决定,属于同一个BFC下相邻两个Box的margin会发生重叠;
  3. 在BFC中,每一个盒子的左外边缘(margin-left)会触碰到容器的左边缘(border-left)(对于从右到左的格式来说,则触碰到右边缘),即使存在浮动也是如此。即不会发生margin穿透
  4. 形成了BFC的区域不会与float box重叠(可阻止因浮动元素引发的文字环绕现象);
  5. 计算BFC高度时,浮动元素也参与计算(BFC会确切包含浮动的子元素,即闭合浮动)。

原本浮动元素应该是脱离文档流的,但BFC中会计算其高度。

综上特性所述,BFC就是页面上的一个隔离的独立容器,容器里面的子元素不会影响到外面的元素。

BFC特性的一些应用

  1. 清除元素内部浮动
    只要把父元素设为BFC就可以清除子元素的浮动了,最常见的用法就是在父元素上设置overflow:hidden样式,对于IE6加上zoom:1就可以了
    主要用到:就算BFC的高度时,自然也会检测到浮动的盒子高度

    清除元素内部浮动.png
  2. 解决外边距合并的问题
    外边距合并的问题,主要用到盒子垂直方向的距离由margin决定。属于同一个BFC的两个相邻的盒子的外边距会发生合并

不属于同一个BFC的盒子不会发生外边距合并的的效果

BFC外边距合并.png
  1. 制作右侧自适应盒子的问题
    主要用到BFC区域的盒子不会与浮动的盒子产生交集,而是紧贴浮动边缘
    右侧自适应盒子.png

相关文章

  • CSS-BFC的理解

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

  • BFC

    原文:[布局概念] 关于CSS-BFC深入理解 面试的时候尽量不讲定义,而是讲例子。 定义 BFC全称叫做(Blo...

  • 理解CSS-BFC(Block-Formatting-Conte

    前言 BFC 已经是一个耳听熟闻的词语了,但是我对于BFC的概念以及应用场景一直都不是很明白,据说搞懂BFC可以让...

  • CSS-BFC

        block formatting context块级格式化上下文    bfc是一个独立的渲染区域,只有b...

  • css-BFC

    BFC? ps:一开始看到这名词的时候我心里是拒绝的,什么鬼? 概念 (Block formatting cont...

  • CSS-BFC

    先挖坑 参考链接

  • CSS-BFC

    Visual formatting model 是用来处理和在视觉媒体上显示文档时使用的计算规则。该模型是 CSS...

  • css-BFC

    BFC(block formatting context):块格式化上下文 理解BFC BFC和堆叠上下文都没有定...

  • CSS-BFC

    BFC box,Formatting Context在解释 BFC 是什么之前,需要先介绍 Box、Formatt...

  • CSS-BFC初探

    BFC 块格式化上下文(Block Formatting Context,BFC) BFC产生的条件 根元素 元素...

网友评论

    本文标题:CSS-BFC的理解

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