一:BFC 是什么

     MDN解释:

A block formatting context is a part of a visual CSS rendering of a Web page. It is the region in which the layout of block boxes occurs and in which floats interact with each other,一个块级格式化上下文[BFC]是可视化CSS渲染网页的一部分,它是一个区域,块级布局,相互浮动在这个区域发生。个人翻译参考百度翻译

A block formatting context contains everything inside of the element creating it that is not also inside a descendant element that creates a new block formatting context.一个BFC块区域包含所有里面的元素,除子元素创建了新的BFC。(因为各个BFC是一个独立的区域,BFC之间相互不影响)

所以:由于html(根元素)是独立的BFC,在里面的浮动,块级布局等才会相互影响,若新创建BFC,则相邻BFC之间的浮动元素,或是其他元素将不会影响。如,相邻两个块级元素的外边距折叠的情况将不会发生。

 二:如何触发BFC

  • position为absolute 或者fixed  (总结为 脱离文档流)
  • float不为none(也是要脱离文档流)
  • the root element or something that contains it(根元素可产生独立BFC)
  • display值为:inline-block,table-cell,table-caption,flex,inline-flex(flex和inline-flex是css3的特性)
  • overflow:不为visible的任何其他值
  • fieldset元素

 三:BFC的作用

  • BFC就是一种布局方式,在这种布局方式下,内部盒子们自所在的 containing block 顶部起一个接一个垂直排列,水平方向上撑满整个宽度 (除非内部的盒子自己内部建立了新的 BFC)。  developer center上面有对BFC的一段描述:

    一个 block formatting context 是web页面可视化CSS渲染的一个部分,是一块 block boxes 排布以及 float 元素相互作用的区域。可以理解为一个作用范围,在一个BFC里的布局与其之外的布局不相关或者说不相互影响

  • 延伸作用1:两个独立的BFC之间不会折叠
  • 延伸作用2:BFC可以包裹浮动元素,清除浮动的另一种方法。
  • 延伸作用3:解决层内浮动溢出问题,

.实例

chrome浏览器效果:

如图:浮动元素溢出,为content元素创建独立BFC包含浮动元素,可解决浮动溢出

    • 延伸作用4  : 可以阻止元素被浮动元素覆盖

参考:http://www.cnblogs.com/youxin/p/3345120.html

https://developer.mozilla.org/en-US/docs/Web/Guide/CSS/Block_formatting_context

BFC (Block formatting context)的更多相关文章

  1. BFC --- Block Formatting Context --- 块级格式化上下文

    虽然知道块级格式化上下文是什么东西,但要我把这个东西给说清楚,还真的不是一件容易的事儿,所以这篇文章我就要说说清楚到底什么使传说中的BFC,即块级格式化上下文. 一.BFC的通俗理解 通俗的理解 -- ...

  2. CSS BFC(Block Formatting Context)

    BFC是 W3C CSS 2.1 规范中的一个概念Block Formatting Context的缩写即格式化上下文,它决定了元素如何对其内容进行定位,以及与其他元素的关系和相互作用.简单讲,它是提 ...

  3. BFC(Box Formatting Context)的原理

    BFC 已经是一个耳听熟闻的词语了,网上有许多关于 BFC 的文章,介绍了如何触发 BFC 以及 BFC 的一些用处(如清浮动,防止 margin 重叠等).虽然我知道如何利用 BFC 解决这些问题, ...

  4. 对于BFC(block format context)理解

    目录 前言 Box: CSS布局的基本单位&盒模型 什么是BFC?(Block formatting contexts) 元素与盒 正常流 块级与行内级 产生垂直外边距合并的必备条件 前言 什 ...

  5. 【转】关于Block Formatting Context--BFC和IE的hasLayout

    转自穆乙 http://www.cnblogs.com/pigtail/ 一.BFC是什么? BFC(Block Formatting Context)直译为“块级格式化范围”. 是 W3C CSS ...

  6. 关于Block Formatting Context--BFC和IE的hasLayout

    转文请标明 --- 出处:穆乙 http://www.cnblogs.com/pigtail/ 一.BFC是什么? BFC(Block Formatting Context)直译为"块级格式 ...

  7. css Block formatting context BFC

    w3c关于BFC解释: http://www.w3.org/TR/CSS21/visuren.html#block-formatting Mdn描述: A block formatting conte ...

  8. 什么是BFC(Block Formatting Context)

    原文:https://segmentfault.com/a/1190000012221820 https://www.w3.org/TR/CSS2/visuren.html#block-formatt ...

  9. 关于Block Formatting Context--BFC和IE的hasLayout(转)

    转文请标明 --- 出处:穆乙 http://www.cnblogs.com/pigtail/ 一.BFC是什么? BFC(Block Formatting Context)直译为“块级格式化范围”. ...

随机推荐

  1. 使用jvisualvm的jstatd方式远程监控Java程序

    使用Java自带的jvisualvm调试Java程序,可以查看CPU.内存.类及线程等信息,还可以进行Dump,无疑是一个利器 由于客户端是Windows.服务端是Linux,并且是最小安装的Linu ...

  2. 在weblogic下部署找不到授权文件的解决方法

     很多用户在weblogic上部署的时候,会遇到类似的报错信息,提示授权找不到,解决这个问题的思路如下: 第一步确定授权的没有过期, 客户如果修改了系统时间,会对授权生效产生影响,在进行操作前先将 ...

  3. lodop 代码注释

    LODOP.SET_PRINT_PAGESIZE(1,1000,1500,"");  /*1,纵向输出;1000,宽度;1500,高度*:单位为0.1毫米/LODOP.ADD_PR ...

  4. mysql的日期函数介绍

    仅供参考 DAYOFWEEK(date)  返回日期date是星期几(1=星期天,2=星期一,……7=星期六,ODBC标准)mysql> select DAYOFWEEK('1998-02-03 ...

  5. ES6入门——类的概念

    1.Class的基本用法 概述 JavaScript语言的传统方式是通过构造函数,定义并生成新对象.这种写法和传统的面向对象语言差异很大,下面是一个例子: function Point(x, y) { ...

  6. 二、ionic如何使用外链

    1.ionic如何使用外链并返回原有页面? html如下: 对应的controller如下: (function() { angular.module('app').controller('extra ...

  7. 实验二:klee处理未建模函数和处理error的方式

    首先,能够分析klee源码固然重要.但是目前尚未到那个地步.我按照我的过程,记录和分析我所做的实验. 结论性内容是: 1.klee处理printf传入符号值的情形时,报为error,不会将符号值具体化 ...

  8. zabbix系列之四——快速使用

    https://www.zabbix.com/documentation/3.4/manual/quickstart/login Quickstart 1login and configuring u ...

  9. CSS3 响应式web设计,CSS3 Media Queries

    两种方式,一种是直接在link中判断设备的尺寸,然后引用不同的css文件: <link rel="stylesheet" type="text/css" ...

  10. 如何让你的Ssh连接,更加安全?

    希望你会涨姿势. First: vim /etc/ssh/sshd_config 在Port 22下面加一行,以端口1438为例,Port 1438 然后保存,重启ssh服务 systemctl re ...