BFC,全称为(Block formatting context)。按照我的理解是我们在某一条件下会触发BFC布局,会产生一定的效果。

Block Formatting Contexts翻译为:块级元素格式化上下文。它决定了块级元素如何对它的内容进行布局,以及与其他元素的关系和相互作用。

其中块级元素可以理解为父级元素,内容即是子元素,子元素也为块元素,其他元素指的是与内容同级别的兄弟元素,相互作用指的是BFC里的元素与外面的元素不会发生影响。

而触发BFC的条件是:

1、float的值不为none
2、overflow的值不为visible
3、display的值为table-cell、table-caption和inline-block之一
4、position的值不为static或者releative中任何一个

普通文档流的布局规则(一般像我这种新手没有布局意识的,就应该是普通文档流布局了。。。)

1、浮动的元素是不会被父级计算高度
2、非浮动元素会覆盖浮动元素的位置
3、margin会传递给父级
4、两个相邻的元素上下margin会重叠

BFC的布局规则

1、浮动的元素会被父级计算高度(父级触发了BFC)
2、非浮动元素不会覆盖浮动元素的位置(非浮动元素触发了BFC)
3、margin不会传递给父级(父级触发了BFC)
4、两个相邻的元素上下margin不会重叠(给其中一个元素添加一个单独的父级,然后让他的父级触发了BFC)

实例:

<!--html代码
BFC满足条件:display:inline-block;
所以会遵循BFC的布局规则,使得其浮动元素会被父级计算高度,从而也就避免了高度塌陷。
-->
<div style="border: 1px solid #f00; display: inline-block;">
<div style="width: 100px; height: 100px; background: green; float: left;"></div>
</div>
<!--
BFC满足条件:overflow:hidden;兄弟元素之间不会相互覆盖
-->
<div style="border: 1px solid #f00; margin-top: 100px;">
<div style="width: 100px; height: 100px; background: green; float: left;">hello1</div>
<div style="width: 100px; height: 100px; background: red; overflow: hidden;">helloagain</div>
</div>
<!--
BFC满足条件:overflow:hidden;使得父级元素与子集元素margin不会重叠
-->
<div style="background: blue; margin-top: 100px; overflow: hidden;">
<div style="width: 100px; height: 100px; background: green; margin-top: 100px;">hello1</div>
<div style="width: 100px; height: 100px; background: red;">helloagain</div>
</div> <!--
BFC满足条件:overflow:hidden;使得父级元素与子集元素margin不会重叠,以及同级元素的margin不会重叠
-->
<div style="margin-top: 100px;">
<div style="width: 100px; height: 100px; background: green; margin: 100px 0;">hello1</div>
<div style="overflow: hidden;">
<div style="width: 100px; height: 100px; background: red; margin: 100px 0;">helloagain</div>
</div>
</div>

前端BFC布局学习的更多相关文章

  1. 浅析前端BFC布局

    一.常见定位方案 二.BFC 概念 BFC 即 Block Formatting Contexts (块级格式化上下文),它属于上述定位方案的普通流. 它是一个独立的渲染区域,只有Block-leve ...

  2. android前端开发 布局学习

    元素背景设置 -------------------------------- Android中shape中的属性大全 http://www.oschina.net/question/166763_3 ...

  3. 前端flex布局学习笔记

    flex布局,即为弹性布局,其为盒模型提供最大的灵活性,任何一个容器都可以指定为flex布局. eg:.box{ display:flex: } 行内元素也可以使用flex布局. 注意:设置flex布 ...

  4. CSS3与页面布局学习总结(八)——浏览器兼容与前端性能优化

    一.浏览器兼容 1.1.概要 世界上没有任何一个浏览器是一样的,同样的代码在不一样的浏览器上运行就存在兼容性问题.不同浏览器其内核亦不尽相同,相同内核的版本不同,相同版本的内核浏览器品牌不一样,各种运 ...

  5. CSS3与页面布局学习笔记(八)——浏览器兼容性问题与前端性能优化方案

    一.浏览器兼容 1.1.概要 世界上没有任何一个浏览器是一样的,同样的代码在不一样的浏览器上运行就存在兼容性问题.不同浏览器其内核亦不尽相同,相同内核的版本不同,相同版本的内核浏览器品牌不一样,各种运 ...

  6. CSS3与页面布局学习总结(四)——页面布局大全BFC、定位、浮动、7种垂直居中方法

    目录 一.BFC与IFC 1.1.BFC与IFC概要 1.2.如何产生BFC 1.3.BFC的作用与特点 二.定位 2.2.relative 2.3.absolute 2.4.fixed 2.5.z- ...

  7. (转载)CSS3与页面布局学习总结(三)——BFC、定位、浮动、7种垂直居中方法

    目录 一.BFC与IFC 1.1.BFC与IFC概要 1.2.如何产生BFC 1.3.BFC的作用与特点 二.定位 2.2.relative 2.3.absolute 2.4.fixed 2.5.z- ...

  8. CSS3与页面布局学习总结(四)——页面布局大全

    一.负边距与浮动布局 1.1.负边距 所谓的负边距就是margin取负值的情况,如margin:-100px,margin:-100%.当一个元素与另一个元素margin取负值时将拉近距离.常见的功能 ...

  9. BFC布局

    这几天都没有写博客,自己的懒惰又要跑出来了,发觉不能再这样下去了,不然就什么都不想干了,然后将之前已经写得差不多的博客重新检视了一遍.这篇博客已经写得挺久的了,但是一直没有发布,现在补充了一些,也让自 ...

随机推荐

  1. Android逆向之旅---解析编译之后的AndroidManifest文件格式

    一.前言 今天又是周六了,闲来无事,只能写文章了呀,今天我们继续来看逆向的相关知识,我们今天来介绍一下Android中的AndroidManifest文件格式的内容,有的同学可能好奇了,Android ...

  2. 在getview方法中有三个参数,起到优化的部分为ViewHolder的使用,主要方法setTag(),getTag()

    适配器代码如下: public class Myadapter extends BaseAdapter { List<String> date; Context context; //构造 ...

  3. SSL异常javax.net.ssl.SSLHandshakeException: Received fatal alert: handshake_failure

    jdk 7 http://www.oracle.com/technetwork/java/javase/downloads/jce-7-download-432124.html jdk 8 http: ...

  4. (转)Hyper-v 安装CentOS 7 (其他虚拟机一样参考)

    转:https://www.cnblogs.com/dunitian/p/4976077.html 平台之大势何人能挡? 带着你的Net飞奔吧!http://www.cnblogs.com/dunit ...

  5. windowns环境下mysql 安装教程

    windowns环境下mysql 安装教程 一:这里以绿色版安装为例(解压就可以使用) 下载地址: 下载页面:https://dev.mysql.com/downloads/mysql/  2:点击 ...

  6. loj#2838 「JOISC 2018 Day 3」比太郎的聚会

    分析 预处理每个点的前根号小的距离 对于每次询问删除点小于根号则已经处理好 否则直接暴力dp即可 代码 #include<bits/stdc++.h> using namespace st ...

  7. 术语-IT术语-全栈工程师:全栈工程师

    ylbtech-术语-IT术语-全栈工程师:全栈工程师 全栈工程师是指掌握多种技能,并能利用多种技能独立完成产品的人. 1.返回顶部 1. 中文名:全栈工程师 外文名:Full Stack engin ...

  8. CSS-父元素宽度自适应子元素宽度之和

    最近碰见这样一个需求,要让图片横向排列设置 x 方向的滚动条滚动查看,原本当直接创建一个 IFC(inline,float 什么的)就解决了,搞了半天发现搞不定(IFC 也是不能父元素宽度自适应子元素 ...

  9. FCKEditor添加字体

    默认情况下,FCKEditor在进行文本编辑时,无法使用中文字体.自个摸索了下:打开 fckconfig.js 文件 找到第154行(应该是),会发现:FCKConfig.FontNames = 'A ...

  10. 【ABAP系列】SAP ABAP模块-取整操作中CEIL和FLOOR用法

    公众号:SAP Technical 本文作者:matinal 原文出处:http://www.cnblogs.com/SAPmatinal/ 原文链接:[ABAP系列]SAP ABAP模块-取整操作中 ...