说说css中的格式化上下文

一、什么是FC?
FC,Formatting Contexts,是W3C CSS2.1规范中的一个概念。它是页面中的一块渲染区域,并且有一套渲染规则,它决定了子元素将如何定位,以及和其他元素的关系和相互作用。
二、BFC
BFC,Block Formatting Contexts,块级格式化上下文。BFC是页面上的一个隔离的渲染区域,容器里面的子元素不会在布局上影响到外面的元素,反之也是如此。
1、触发BFC的条件

A、浮动元素,float除none以外的值;
B、绝对定位元素,position值为二者absolute,fixed之一;
C、display值为三者inline-blocks,table-cells,table-captions之一;
D、overflow值为三者hidden,auto,scroll之一。 

2、BFC的特性

A、BFC可以阻止外边距折叠;
B、BFC可以包含浮动的元素;
C、BFC可以阻止元素被浮动元素覆盖;
D、BFC尽可能让元素不在一行,内部元素都是块级元素,包含div ul ol li dl dt dd h1 h2 h3 h4 h5 h6 p。

3、BFC的用途
比如常见的多栏布局,结合块级别元素浮动,内部元素不受外部环境影响。
三、IFC
IFC,Inline Formatting Contexts,内联格式化上下文。IFC的line box高度由行内子元素中最大的实际高度确定,不受竖直方向的padding/margin影响。IFC中不可能有块级元素,如果插入了块级元素(如p中插入div)会产生两个匿名块与div分隔开,即产生两个IFC,每个IFC对外表现为块级元素,与div垂直排列。
1、触发IFC的条件

A、display值为inline-blocks,inline;
B、设置font-size;
C、设置line-height,行高是指上下文本行的基线间的垂直距离;
D、设置height;
E、设置vertical-aligin。

2、IFC的特性
让元素尽可能在同一行,内部元素都是内联元素,包含a b span I b em img input select strong。
3、IFC的用途
比如水平居中,设置text-align:center,垂直居中设置其vertical-align:middle。

三、FFC
FFC,Flex Formatting Contexts,自适应格式化上下文,display值为flex或者inline-flex的元素将会生成自适应容器(flex container)。
1、触发FFC的条件
display值为flex。
2、FFC的特性
声明了一个弹性伸缩盒子。
3、FFC的用途
响应式布局。

四、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会有更加丰富的属性来控制行列,控制对齐以及更为精细的渲染语义和控制。

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

时间: 2024-10-27 07:32:11

说说css中的格式化上下文的相关文章

CSS中块级格式化上下文(BFC)的特性与应用

一.何为BFC 块级格式化上下文(Block Formatting Context)是网页CSS视觉渲染的一部分,并用于决定盒子的布局.在定位体系中属于常规流(Normal Flow)(另外两种定位体系为浮动(Floats)和绝对定位(Absolute Positioning)). 二.BFC如何形成 BFC的形成,根据W3C所言: 浮动.绝对定位元素(position 为 absolute 或 fixed).行内块元素 display:inline-block.表格单元格display:tab

理解CSS中的BFC(块级可视化上下文)[译]

开篇 一些元素,如float元素,如position为absolute,inline-block,table-cell或table-caption的元素,以及overflow属性不为visible的元素,它们将会建立一个新的块级格式化上下文. 上述定义已经很详细的描述了块级格式化上下文(Block Formatting Context)是如何形成的,为了方便起见,文中均用BFC代替.现在,让我们用一种简单的方式对其进行重新定义: BFC也是HTML中的一个盒子(看不见而已),只有满足至少下列条件

CSS中块级元素水平格式化

CSS中块级元素的(width+padding+marninig+border)因该等于其包含块的width.其中margin可能为负值,其他均为正值. 如果width和margin-left和margin-right都设置为auto的话,浏览器代理会默认将margin-left和margin-right设为0,将width设为包含块的width. 如果width与margin-left.margin-right其中一个为auto,而另一个margin设为固定值的话,浏览器代理会把为auto的那

我对CSS中的BFC的理解

 1.什么是BFC 其实在老师让我们写这篇叫BFC的时候,我跟本不知道有什么BFC的东西. 后来,我找了一些资料,知道了,BFC是Block Formatting Context (块级格式化上下文)的缩写,它是W3C CSS 2.1 规范中的一个概念,是一个独立的渲染区域,只有Block-level box参与, 它规定了内部的Block-level Box如何布局,并且与这个区域外部毫不相干. 2.什么情况下会创建BFC CSS规范说明了在下列这些情况下会创建新的block formatti

深入理解CSS中的层叠上下文和层叠顺序(转)

by zhangxinxu from http://www.zhangxinxu.com 本文地址:http://www.zhangxinxu.com/wordpress/?p=5115 零.世间的道理都是想通的 在这个世界上,凡事都有个先后顺序,凡物都有个论资排辈.比方说食堂排队打饭,对吧,讲求先到先得,总不可能一拥而上.再比如说话语权,老婆的话永远是对的,领导的话永远是对的. 在CSS届,也是如此.只是,一般情况下,大家歌舞升平,看不出什么差异,即所谓的众生平等.但是,当发生冲突发生纠葛的时

深入理解CSS中的margin

1.css margin可以改变容器的尺寸 元素尺寸 可视尺寸--标准盒子模型中盒子的宽度是不包括margin值的,clientWidth 占据尺寸--包括margin的宽度 outWidth不在标准之中,jquery中有相对应的方法 margin与可视尺寸 1.1使用那个与没有设定width/height的普通block水平元素 2.2只适用于水平方向尺寸 <body style="background-color:#1a2b3c"> <div style=&quo

深入理解CSS中的层叠上下文和层叠顺序

零.世间的道理都是想通的 在这个世界上,凡事都有个先后顺序,凡物都有个论资排辈.比方说食堂排队打饭,对吧,讲求先到先得,总不可能一拥而上.再比如说话语权,老婆的话永远是对的,领导的话永远是对的. 在CSS届,也是如此.只是,一般情况下,大家歌舞升平,看不出什么差异,即所谓的众生平等.但是,当发生冲突发生纠葛的时候,显然,是不可能做到完全等同的,先后顺序,身份差异就显现出来了.例如,杰克和罗斯,只能一人浮在木板上,此时,出现了冲突,结果大家都知道的.那对于CSS世界中的元素而言,所谓的“冲突”指什

Block Formatting Contexts (块级格式化上下文) 详解

     最近在学习BootStrap框架,发现里面清除浮动的类 .clearfix 跟平时自己用的不太一样.它的样式是这样的: .clearfix:before { content: " "; display: table; } .clearfix:after { content: " "; display: table; clear: both; } 用:befor和:after伪元素清除浮动是我熟悉的,不过一般我使用display:block而非display

BFC块级格式化上下文简述

做过页面编写的各位应该对定位不陌生了,这个样式表中的重头戏,也是最难把控的元素之一,今天在这里我们要讲到的就是与浮动与清除浮动相关的定位元素,对于定位有很多种,有绝对定位,还有相对定位,固定定位,静态定位,对于这几种耳熟能详的定位在这里我们不必花费时间去讨论,我们今天要关注的是另一种神奇的定位,也就是所谓的bfc,对于前面几个定位,都会或多或少产生一些后遗症,影响它的兄弟元素的位置和父元素产生高度塌陷,这个不仅会影响内部的元素,还会对外部的元素产生影响,经常会弄得很头疼,往往为了移动某一个很小的