BFC,hasLayout

块格式化上下文 Block formatting context
行内格式化上下文 Inline formatting context

它决定了元素如何对其内容进行定位,以及与其他元素的关系和相互作用。

创建BFC

  • 浮动元素
  • 绝对定位元素
  • 行内块元素
  • 单元格
  • 表格标题元素
  • overflow 非 "visible"的元素
  • css3中flex boxes

IE 专有的 Layout 及 hasLayout 属性

'Layout' 是 IE 的专有概念,它决定了元素如何对其内容进行定位和尺寸计算,与其他元素的关系和相互作用,以及对应用还有使用者的影响。

概念说明:
'Layout' 可以被某些 CSS property(特性)不可逆的触发,而某些 HTML 元素本身就具有 layout 。
'Layout' 在 IE 中可以通过 hasLayout 属性来判断一个元素是否拥有 layout ,如 object.currentStyle.hasLayout 。
'Layout' 是 IE 浏览器渲染引擎的一个内部组成部分。在 IE 浏览器中,一个元素要么自己对自身的内容进行组织和计算大小, 要么依赖于包含块来计算尺寸和组织内容。为了协调这两种方式的矛盾,渲染引擎采用了 'hasLayout' 属性,属性值可以为 true 或 false。 当一个元素的 'hasLayout' 属性值为 true 时,我们说这个元素有一个布局(layout),或拥有布局。
触发方式:
默认拥有布局的元素:

, 
, , 
, ,
,