个人理解的块状格式化上下文

第一次看到层叠上下文这个东西并不知道这是个什么,去看了一些大神的文章,然后发现类似的有BFC,然后牵扯出一系列的什么是FC,什么是BFC,什么是IFC等。以下的东西是摘抄别人文章的一些内容和一些自己的理解,方便自己回忆吧。

FC(Formatting Context)翻译过来就是格式化上下文/格式化范围,指的是页面布局中的一块区域,它拥有自己的渲染规则,决定自己的子元素如何布局,并和其他元素的关系和作用。

根据css显示分类,xhtml元素被分为三种类型:块状元素,内联元素,可变元素。给页面元素加样式的时候我们得知道这个元素是什么类型,然后可以自己对元素类型转化。就像我们可以通过display来让某个内联元素变成块状元素(display:block)。有几个特别的元素img,input默认是inline-block;

BFC(块级格式化上下文),只有块状元素起作用。相对应得IFC就是内联元素。(不知道我这样理解对不对)。

什么是块状格式化上下文(BFC)?相当于一个特殊的区域。

如果一个元素符合了成为BFC的条件,该元素成为一个隔离了的独立容器,元素内部元素会垂直的沿着其父元素的边框排列,和外部元素互不影响 。

触发 BFC 的条件如下:

  • 浮动元素,float 除 none 以外的值
  • 绝对定位元素,position(absolute,fixed)
  • display 为以下其中之一的值 inline-blocks,table-cells,table-captions。//就是不是块级盒子的块容器
  • overflow 除了 visible 以外的值(hidden,auto,scroll)

满足了上面这四个条件之一,就会创建一个BFC,它里面的内容所处的环境就是BFC环境。

在 CSS3 中,BFC 叫做 Flow Root,并增加了一些触发条件:

  • display 的 table-caption 值
  • position 的 fixed 值,其实 fixed 是 absolute 的一个子类,因此在 CSS2.1 中使用这个值也会触发 BFC ,只是在 CSS3 中更加明确了这一点。

元素设置 IE 特有的 CSS 属性 zoom: 1 触发 hasLayout ,zoom 用于设置或检索元素的缩放比例,值为“1”即使用元素的实际尺寸,使用 zoom: 1 既可以触发 hasLayout 又不会对元素造成其他影响,相对来说会更为方便。这是ie下的情况

BFC的作用:

(1) BFC 会阻止外边距折叠

我理解折叠的意思就是外边距会重叠,并不会分的很清,就像你的就是我的,我的也是你的。

外边距折叠的规则:仅当两个块级元素相邻并且在同一个块级格式化上下文时,它们垂直方向之间的外边距才会叠加。也就是说,即便两个块级元素相邻,但当它们不在同一个块级格式化上下文时它们的边距也不会折叠。因此,阻止外边距折叠只需产生新的 BFC 。

但是对于两个相邻元素来说,意义不大,没有必要给它们加个外壳,但是对于嵌套元素来说就很有必要了,只要把父元素设为BFC就可以了。这样子元素的margin就不会和父元素的margin发生折叠了。

(2) BFC 可以包含浮动的元素

这说明BFC中子元素不会超出他的包含块,而position为absolute的元素可以超出他的包含块边界

(3) BFC 可以阻止元素被浮动元素覆盖

这是根据每个元素的margin box的左边, 与包含块border box的左边相接触(对于从左往右的格式化,否则相反)。即使存在浮动也是如此。这个原理实现的。

http://www.cnblogs.com/lhb25/p/inside-block-formatting-ontext.html这篇大神总结的blog比较简单清晰。

时间: 2024-10-10 15:13:45

个人理解的块状格式化上下文的相关文章

BFC-块状格式化上下文

块状格式化上下文(Block Formatting Context,BFC) MDN对BFC的定义:是Web页面的可视化CSS渲染的一部分,是块盒子的布局过程发生的区域,也是浮动元素与其他元素交互的区域. BFC是一个独立的渲染空间,只有块级元素参与,规定了内部元素如何布局,并且与这个区域外部的元素不相干. 触发BFC 根元素(html) 浮动元素(float不为none) 绝对定位元素(元素的position为absolute或fixed) 行内块元素(display为inline-block

BFC--对块级格式化上下文的理解

* { } html,body { width: 100%; background: #fff } .c333 { color: #333 } .container { width: 80%; margin: 0 auto; font-size: 16px; color: #666 } h3 { font-size: 35px !important; color: #333; text-align: center !important } p { line-height: 25px; margi

我理解的BFC(块级格式化上下文)

BFC(Block formatting context) 直译为"块级格式化上下文". BFC它是一个独立的渲染区域,只有Block-level box参与, 它规定了内部的Block-level Box如何布局,并且与这个区域外部毫不相干. 白话文: 孩子在家里愿意怎么折腾都行,但是出了家门口,你就的乖乖的,不能影响外面的任何人. 不是所有的元素模式都能产生BFC,w3c 规范: display 属性为 block, list-item, table 的元素,会产生BFC. 大家有

BFC块级格式化上下文简述

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

常规流之行内级格式化上下文(Inline Formatting Contexts)

本节我们来讨论一下Inline formatting contexts(行内格式化上下文,以下简称IFC)和line box(行框). 一.行框 在一个行内格式化上下文中,框会一个接一个的水平放置,从包含块的顶部开始.这些框水平方向的margin.border以及padding属性是会起作用的.这些框在垂直方向上的对齐方式可以不一样:可以顶部或底部对齐,或根据其中文字的基线对齐.包含这些框的矩形区域,会形成一行叫做行框(line box)的东西. 一个行框的宽度由它的包含块和和其中的浮动元素来决

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

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

常规流之块级格式化上下文(Block Formating Context)

在css2.1中,常规流包括块框(block boxes)的块格式化(block formatting),行内框(inline boxes)的行内格式化(inline formatting),块级框(block-level-boxes)或行内级框(inline-level-boxes)的相对定位.常规流中的框属于一个格式化上下文,可能是块或者是行内,但不能同时都是.块级框参与块级格式化上下文,行内级框参与行内级格式化上下文.今天我们先来说说块级格式化上下文,也就是我们常说的BFC. 一.形成块级

前端面试题-BFC(块格式化上下文)

一.BFC 的概念 1.规范解释 块格式化上下文(Block Formatting Context,BFC)是Web页面的可视化CSS渲染的一部分,是布局过程中生成块级盒子的区域,也是浮动元素与其他元素的交互限定区域. 2.通俗理解 BFC 是一个独立的布局环境,可以理解为一个容器,在这个容器中按照一定规则进行物品摆放,并且不会影响其它环境中的物品. 如果一个元素符合触发 BFC 的条件,则 BFC 中的元素布局不受外部影响. 浮动元素会创建 BFC,则浮动元素内部子元素主要受该浮动元素影响,所

BFC(块级格式化上下文)

定义:BFC(Block formatting context)为块级格式化上下文.它是一种环境,不会对周围其它盒子的布局产生影响,它只规定了内部如何布局. BFC布局规则 1.内部的Box会在垂直方向,一个接一个地放置. 2.Box垂直方向的距离由margin决定.属于同一个BFC的两个相邻Box的margin会发生重叠 3.每个元素的margin box的左边, 与包含块border box的左边相接触(对于从左往右的格式化,否则相反).即使存在浮动也是如此. 4.BFC的区域不会与floa