BFC(block formating context),翻译过来就是块级格式化上下文。我们可以理解为:BFC就是一个Block-level Box内部的Block-level Box布局的一系列规则。下面我们列出将有哪些布局规则并且举例解释说明。

布局规则:

  1. 内部的Box会在垂直方向,从顶部开始一个接一个地放置。(即每个块级元素独占一行)

  2. Box垂直方向的距离由margin决定。属于同一个BFC的两个相邻Box的margin会发生叠加。(垂直方向上margin塌陷)

  3. 每个元素的margin box的左边, 与包含块border box的左边相接触(对于从左往右的格式化,否则相反)。即使存在浮动也是如此。(规则1产生的原因)

  4. BFC的区域不会与float box重叠。

  5. BFC就是页面上的一个隔离的独立容器,容器里面的子元素不会影响到外面的元素。反之也如此。

  6. 计算BFC的高度时,浮动元素也参与计算。(overflow:hidden清除浮动远离)

如何产生BFC:

  1. float 除了none以外的值

  2. overflow 除了visible 以外的值(hidden,auto,scroll )

  3. display (table-cell,table-caption,inline-block, flex, inline-flex)

  4. position值为(absolute,fixed)

规则解释说明:

  规则2: Box垂直方向的距离由margin决定。属于同一个BFC的两个相邻Box的margin会发生叠加。(垂直方向上margin塌陷)

 <!-- 样式 -->
<style>
.item {
width: 100px;
height: 100px;
background-color: #f44;
margin: 50px;
}
</style> <!-- 结构 -->
<div class="item"></div>
<div class="item"></div>

上图中两个元素上下都有50px的margin,但是由于规则2,显示出来的间隔只有50px;并没有我们像我们想象中出现100px的间隔。这种现象叫做margin塌陷。并且当上下margin不一致时,取较大的那个值。

规则3: 每个元素的margin box的左边, 与包含块border box的左边相接触(对于从左往右的格式化,否则相反)。即使存在浮动也是如此。(规则1产生的原因)

规则4: BFC的区域不会与float box重叠。

 <!-- 样式 -->
<style>
.aside {
width: 100px;
height: 100px;
background-color: #f66;
float: left;
} .main {
width: 300px;
height: 300px;
background-color: #fcc;
/*overflow: hidden;*/
}
</style> <!-- 结构 -->
<div class="container">
<div class="aside"></div>
<div class="main"></div>
</div>

当我们注释掉overflow: hidden时:此时两个div满足规则3,与外层border相连,由于浮动的div不占标准文档流位置,所有出现重叠现象;(第一幅图)

当我们添加上overflow: hidden时;此时class为main的div产生BFC,不与float元素重叠,满足规则4,所以class为main的div紧挨浮动的div。(第二幅图)

                         

详细BFC讲解可以参考:http://sentsin.com/web/529.html

BFC详解的更多相关文章

  1. CSS之BFC详解

    What:了解该知识点的概念,本质以及有关牵扯到的相关知识概念 BFC这个东西说常见的话你可能不觉得,但是你肯定会常用,也许你在用的时候也没想到BFC这东西.网上也有很多写这些东西的文章,但是自己写一 ...

  2. CSS中的BFC详解

    引言: 这篇文章是我对BFC的理解及总结,带你揭开BFC的面纱.你将会知道BFC是什么,形成BFC的条件,BFC的相关特性,以及他的实际应用. 一.何为BFC BFC(Block Formatting ...

  3. css详解3

    推荐学习链接:css盒模型 1.盒模型的常用属性 1.1.pading <html lang="en"> <head> <meta charset=& ...

  4. 块级格式化上下文(block formatting context)、浮动和绝对定位的工作原理详解

    CSS的可视化格式模型中具有一个非常重要地位的概念——定位方案.定位方案用以控制元素的布局,在CSS2.1中,有三种定位方案——普通流.浮动和绝对定位: 普通流:元素按照先后位置自上而下布局,inli ...

  5. dos下的edit命令使用详解

    dos下的edit命令使用详解 来源:网络 作者:未知 edit命令是一个简单的编辑软件,我们经常用它来编辑一些程序和批处理文件. 比如,我想在c盘根目录下编辑一个简单的批处理文件,要求无论当前盘和当 ...

  6. 详解 清除浮动 的多种方式(clearfix)

    说明 本文适合知道HTML 与 CSS基础知识的读者,或者想要了解清除浮动背后原理的读者! 1.什么是浮动 首先我们需要知道定位 元素在页面中的位置就是定位,解决问题之前我们先来了解下几种定位方式 : ...

  7. CSS2.1SPEC:视觉格式化模型之width属性详解(下)

    本文承接CSS2.1SPEC:视觉格式化模型之width属性详解(上),继续分析CSS视觉格式化模型中width以及相关值的计算问题: 注:与上节不同,本节的demo中由于出现了float,absol ...

  8. 详解CSS float属性

    CSS中的float属性是一个频繁用到的属性,对于初学者来说,如果没有理解好浮动的意义和表现出来的特性,在使用的使用很容易陷入困惑,云里雾里,搞不清楚状态.本文将从最基本的知识开始说起,谈谈关于浮动的 ...

  9. 详解CSS float属性(转)

    详解CSS float属性   阅读目录 基础知识 float的详细细节 float特殊情况 clear属性 清除浮动 float的应用 总结 CSS中的float属性是一个频繁用到的属性,对于初学者 ...

随机推荐

  1. Ubuntu 14.04 64bit 系统下打开PHPadmin时出现缺少mysqli|mysql 扩展的解决方法(php5)

    网上找了很多方法,都是翻来覆去的抄袭. 都在说把 /etc/php5/apache2/php.ini 下面的  ;extension=php_mysqli.dll  前面的 ; 注释符号去掉 再重启 ...

  2. Sqlserver 链接服务器和同义词

    在数据库的日常维护中,经常会遇到跨服务器的数据传输. 例如A服务器上的数据每天要从B服务器上去获取数据,然后插入到自己的服务器上.这种情况就要用到链接服务器了. 接下来,我就把我本机当作服务器A,17 ...

  3. JAVA中的数据结构 - 真正的去理解红黑树

    一, 红黑树所处数据结构的位置: 在JDK源码中, 有treeMap和JDK8的HashMap都用到了红黑树去存储 红黑树可以看成B树的一种: 从二叉树看,红黑树是一颗相对平衡的二叉树 二叉树--&g ...

  4. Win7配置IIS7

    1.安装 控制面板\程序\程序和功能\打开或关闭Windows功能  选择Internet信息服务勾选相应的内容 2.打开iis信息服务管理器  点击菜单\运行(WIN+R) 输入iis 如图所示 可 ...

  5. Javascript面对对象. 第五篇

    继承 继承是面向对象中一个核心的概念.其他正统面向对象语言都会用两种方式实现继承: 一个是接口实现,一个是继承. 而ECMAScript只支持继承,不支持接口实现,而实现继承的方式依靠原型链完成. / ...

  6. C:\Users\用户名\AppData里面的文件可以删除吗

    很多人发现电脑中C:\Users\用户名\AppData 占据了很大的空间,那么可以将其删除吗?下面为大家详细介绍相关知识! C:\Users\用户名\AppData里面一般有三个文件夹,分别是Loc ...

  7. BZOJ1115:[POI2009]石子游戏Kam (博弈论)

    挺水的 听说是阶梯nim和,就去看了一下,然后就会了= = 观察题目,发现拿第i堆棋子k个造成的影响就是第i+1堆棋子能多拿k个 可以把模型转化为,有n堆石子,每次从某一堆拿一个石子,放在下一堆中,不 ...

  8. WP8.1开发中对于XAML中一些语言的学习(1);

    以前在学习WP开发的时候,看到视频中说到程序在创建之初,MainPaige.xaml页面上有一些代码: <Page x:Class="草案.MainPage" xmlns=& ...

  9. 【转】Docker —— 从入门到实践

    http://yeasy.gitbooks.io/docker_practice/content/index.html Docker 是一个开源项目,诞生于 2013 年初,最初是 dotCloud ...

  10. 前端发展态势 && 前端工作流程个人浅析

    于在未开启cleartype的情况下,一些中文字体在非偶数字号下的显示效果欠佳,所以一般建议使用12.14.16.18.22px等偶数字号.也就 是对某个分辨率选择离它最近的偶数字号.例如:屏幕横向分 ...