软件开发的一般被称为民工,搞前端的,有人形容为是掏粪工,说白了连民工级别高都没有。说直接点就是个制作界面的,注意,连设计界面的都算不上,一般前端都是拿着设计稿去照这样子开发的。

说这些无非是觉得前端前端,却一点也不高端啊,就连逼格高的术语都找不到几个,但少不代表没有,比如Closure、BFC、IFC、GFC和FFC,等等,怎么这么多C啊,C==操?本文就简单列举下这几个C到底都他妈的什么意思,虽然这些东西都没什么卵用,但万一被哪个傻缺面试官来跟你贫这些词汇呢?有备无患。

CSS2.1中只有BFC和IFC, CSS3中才有GFC和FFC。

What's FC?
一定不是KFC,FC的全称是:Formatting Contexts,是W3C CSS2.1规范中的一个概念。它是页面中的一块渲染区域,并且有一套渲染规则,它决定了其子元素将如何定位,以及和其他元素的关系和相互作用。

BFC
BFC(Block Formatting Contexts)直译为"块级格式化上下文"。Block Formatting Contexts就是页面上的一个隔离的渲染区域,容器里面的子元素不会在布局上影响到外面的元素,反之也是如此。如何产生BFC?
float的值不为none。 
overflow的值不为visible。 
position的值不为relative和static。
display的值为table-cell, table-caption, inline-block中的任何一个。 
那BFC一般有什么用呢?比如常见的多栏布局,结合块级别元素浮动,里面的元素则是在一个相对隔离的环境里运行。

IFC
IFC(Inline Formatting Contexts)直译为"内联格式化上下文",IFC的line box(线框)高度由其包含行内元素中最高的实际高度计算而来(不受到竖直方向的padding/margin影响)
IFC中的line box一般左右都贴紧整个IFC,但是会因为float元素而扰乱。float元素会位于IFC与与line box之间,使得line box宽度缩短。 同个ifc下的多个line box高度会不同。 IFC中时不可能有块级元素的,当插入块级元素时(如p中插入div)会产生两个匿名块与div分隔开,即产生两个IFC,每个IFC对外表现为块级元素,与div垂直排列。
那么IFC一般有什么用呢?
水平居中:当一个块要在环境中水平居中时,设置其为inline-block则会在外层产生IFC,通过text-align则可以使其水平居中。
垂直居中:创建一个IFC,用其中一个元素撑开父元素的高度,然后设置其vertical-align:middle,其他行内元素则可以在此父元素下垂直居中。

GFC
GFC(GridLayout Formatting Contexts)直译为"网格布局格式化上下文",当为一个元素设置display值为grid的时候,此元素将会获得一个独立的渲染区域,我们可以通过在网格容器(grid container)上定义网格定义行(grid definition rows)和网格定义列(grid definition columns)属性各在网格项目(grid item)上定义网格行(grid row)和网格列(grid columns)为每一个网格项目(grid item)定义位置和空间。 
那么GFC有什么用呢,和table又有什么区别呢?首先同样是一个二维的表格,但GridLayout会有更加丰富的属性来控制行列,控制对齐以及更为精细的渲染语义和控制。

FFC
FFC(Flex Formatting Contexts)直译为"自适应格式化上下文",display值为flex或者inline-flex的元素将会生成自适应容器(flex container),可惜这个牛逼的属性只有谷歌和火狐支持,不过在移动端也足够了,至少safari和chrome还是OK的,毕竟这俩在移动端才是王道。
Flex Box 由伸缩容器和伸缩项目组成。通过设置元素的 display 属性为 flex 或 inline-flex 可以得到一个伸缩容器。设置为 flex 的容器被渲染为一个块级元素,而设置为 inline-flex 的容器则渲染为一个行内元素。
伸缩容器中的每一个子元素都是一个伸缩项目。伸缩项目可以是任意数量的。伸缩容器外和伸缩项目内的一切元素都不受影响。简单地说,Flexbox 定义了伸缩容器内伸缩项目该如何布局。

参考链接:
http://www.w3cplus.com/css3/css3-grid-layout.html
http://www.w3.org/TR/css3-grid-layout
http://www.w3.org/TR/css3-flexbox/
http://www.fiffys.com/?p=23
http://www.w3.org/TR/CSS2/visuren.html#block-formatting

相关阅读
1. 如何用原生JS来操作CSS Rule?2. 22个你可能不常用的css属性,很强大3. 移动页面开发的重要知识点整理4. 移动设备上到底支持那些安全字体?5. 怎么用Javascript来控制CSS3的动画播放多次?6. CSS选择器的优先权规则,前端必备7. 关于CSS3的animation使用的一些坑,需要注意下!8. CSS3的transition和animation到底有什么区别?9. 向粗暴的reset.css说No,如有需要可考虑normalize.css!10. CSS3 transition使用的注意事项和局限

本文链接: http://www.xiaomeiti.com/note/3608 [复制网址],转载务必注明来源链接。

小科普:到底什么是BFC、IFC、GFC和FFC,次奥?相关推荐

  1. css3中的BFC,IFC,GFC和FFC(转载)

    作者原文网址:http://www.cnblogs.com/dingyufenglian/p/4845477.html   What's FC? 一定不是KFC,FC的全称是:Formatting C ...

  2. (37) BFC IFC GFC FFC概念

    一.什么是FC? Formatting Contexts,是W3C CSS2.1规范中的一个概念.它是页面中的一块渲染区域,并且有一套渲染规则,它决定了其子元素将如何定位,以及和其他元素的关系和相互作 ...

  3. BFC/IFC/GFC/FFC分别是什么?

    BFC

  4. css----BFC,IFC,GFC,FFC的区别

    FC:Formatting Contexts,是W3C CSS2.1规范中的一个概念.它是页面中的一块渲染区域,并且有一套渲染规则,它决定了其子元素将如何定位,以及和其他元素的关系和相互作用. BFC ...

  5. BFC到底是什么?IFC、GFC、FFC?

    1.BFC的定义 我们常说的文档流分为普通流.浮动流与定位流三种. FC(formatting context格式化上下文),指的是一块渲染区域,依靠渲染规则,决定其子元素如何布局及与其他元素的关系和 ...

  6. BFC、IFC、GFC、FFC

    BFC.IFC.GFC.FFC CSS2.1中只有BFC和IFC, CSS3中才有GFC和FFC. 那么到底什么是BFC.IFC.GFC和FFC呢? What's FC? 一定不是KFC,FC的全称是 ...

  7. 【转】前端的BFC、IFC、GFC和FFC

    什么是BFC.IFC.GFC和FFC CSS2.1中只有BFC和IFC, CSS3中才有GFC和FFC. FC的全称是:Formatting Contexts,是W3C CSS2.1规范中的一个概念. ...

  8. CSS——FC(BFC/IFC/FFC/GFC)超详细版+原理案例分析

    文章目录 一.Box 二.包含块 2.1 确定一个元素的包含块 2.2 EXAMPLE 三.FC(Formatting Context) 四.BFC 1. BFC的形成条件 2. BFC的布局规则 3 ...

  9. 学前端的你了解这些知识吗?——BFC、IFC、GFC、FFC

    BFC.IFC.GFC 和 FFC 前言 想要了解BFC.IFC.GFC.FFC,就必须先要了解FC. FC的全称是:Formatting Contexts(格式化上下文),它是W3C规范中的一个概念 ...

  10. BFC、IFC、GFC、FFC概念理解、布局规则、形成方法、用处浅析

    接着聊一下BFC.IFC,与FFC.GFC,GFC是一种二维度的布局方式,现在也蛮火,但是因为兼容性问题比较大,现在用的不多.其实这些布局方式经常会遇到,主要是想了解一下相关的各种概念和术语. 想要理 ...

最新文章

  1. 1058 A+B in Hogwarts
  2. bean ref的bean可以做判断吗_Spring Boot @Condition 注解,组合条件你知道吗
  3. 类型转换函数(三十五)
  4. 3. 什么是icmp?icmp与ip的关系_「2020.12.3」黄俊捷热搜被爆料?郭俊辰交往女朋友?为什么三只跨年不合体?郝富申和王俊凯关系?Naomi和alracco?...
  5. P2221 [HAOI2012]高速公路
  6. 记录之使用3080ti运行tensorflow-gpu=1.x版本的源码
  7. Web Service 简单实例(java 版本) ,IDE自动生成客户端代码方法
  8. MySQL 学习二:高手必备!MySQL 增删改查高级命令大全硬核总结!
  9. 三星Galaxy Note 10最新消息:将取消所有实体按键
  10. ief12执行一次js才有效_陈列到底多久调一次才有效?
  11. linux指令ls -1,linux命令1--ls
  12. 解决使用elementUI框架el-upload跨域上传时session丢失问题
  13. 交换排序图解_排序算法(一):初级比较排序
  14. 三维计算机软件图,三维cad看图
  15. UE4 粒子特效基础学习 (02-光晕效果制作)
  16. 联合阿里在职测开工程师耗时一个星期写的 【接口测试+自动化接口接口测试详解]
  17. linux里关于Tab/Ctrl/Shift/Insert的快捷键
  18. 跟开涛学shiro练习代码
  19. 【因缘际会】知乎APP的简单的产品体验报告
  20. c++一维数组找出五个数中的最大和最小值

热门文章

  1. php相亲段子,个个都是老司机!NPC段子手们经典语录
  2. mac下面如何修改只读文件
  3. CSAPP:malloclab (显式空闲链表 LIFO+首次适配)
  4. 《创业算法》:技术人做CEO的优势和劣势
  5. 相机内存卡照片恢复方法
  6. BFS解小孩分油问题
  7. 《东周列国志》第二十一回 管夷吾智辨俞儿 齐桓公兵定孤竹
  8. Google Chrome自定义新标签页
  9. 泛函极值问题与变分法
  10. 编写函数求整形数组a中存储的m个不重复的整数的第k大的整数(其中m=1,1=k=m)很简单的一个思路是酱紫的:管他辣么多干啥,上来一把排序然后直接得答案...