HasLayout和BFC(Block Format Context)

HasLayout和BFC

1.什么是HasLayout

HasLayout是IE浏览器的一个内部的特性,这个特性有两个是true和false,false表示没有开启布局,而true表示开启了。

在IE中一个元素要么根据父元素的大小进行布局,要么根据自身的内容大小来布局,而默认情况一般是前者。但是,当我们需要根据内容来确定元素大小时,就需要开启元素的HasLayout属性,换句话说就是将元素的HasLayout设置为true。

当一个元素有一个布局时,它会对自己和后代元素进行计算从而计算自身的尺寸的计算和定位,这意味着元素要依赖于自身的内容来设置大小,而不能在依赖于祖先元素。

有的元素默认就开启了HasLayout属性,也就是他的值设置为了true,但是大部分属性确是没有的,当我们需要为一个元素开启HasLayout时,不能像其他样式一样简单开启,这里还需要采取一些特殊手段。

默认HasLayout设置为true的元素有:

  • <body> <html>
  • <table> <tr> <th> <td>
  • <img>
  • <hr>
  • <input> <button> <file> <select> <textarea> <fieldset>
  • <frameset> <frame> <iframe>

这些也只是一部分并不完全。

开启HasLayout:

  • 设置display为inline-block
  • 设置一个非auto的高度或宽度
  • 设置元素浮动设置绝对定位
  • 设置zoom属性为一个非normal的值

我们使用的最多的就是将元素的zoom属性设置为1,来开起,因为这样做的好处时不会对元素产生任何其他的影响。

2.什么是BFC

BFC(Block Formatting Context),翻译过来叫做块级格式化环境。

BFC有三个特性:

  1. 会阻止垂直外边距折叠
  2. BFC不会重叠浮动元素
  3. BFC可以包含浮动

现在我们可以主要看第3条,可以包含浮动,也就是业务着我们可以使用它来清除浮动。

如何形成BFC:

  • 设置元素漂浮
  • 设置overflow非默认值
  • 设置display为table-cell|table-caption|inline-block
  • 设置position为absolute或fixed

我们可以对父元素添加这些属性来达到清除浮动的效果。

时间: 2024-10-17 12:30:11

HasLayout和BFC(Block Format Context)的相关文章

CSS BFC(Block Formatting Context)

BFC是 W3C CSS 2.1 规范中的一个概念Block Formatting Context的缩写即格式化上下文,它决定了元素如何对其内容进行定位,以及与其他元素的关系和相互作用.简单讲,它是提供了一个独立布局的环境,元素处于此环境中应当被初始化,即元素在此环境中应当如何布局等.元素如果创建了BFC,那么BFC决定了如何对其内容进行定位,以及它与其他元素的关系和相互作用. 在这个环境中按照一定规则进行布局不会影响到其它环境中的布局.比如浮动元素会形成BFC,浮动元素内部子元素的主要受该浮动

BFC(Block Formatting Context)理解

BFC:即块级格式上下文:在创建BFC的情况下,则所属的作用环境就变成了一个独立的布局环境. 在BFC中,盒子从顶端开始垂直地一个接一个地排列,两个盒子之间的垂直的间隙是由他们的margin 值所决定的. 在一个BFC中,两个相邻的块级盒子的垂直外边距会产生折叠. 在BFC中,每一个盒子的左外边缘(margin-left)会触碰到容器的左边缘(border-left) (对于从右到左的格式来说,则触碰到右边缘). 如何创建BFC 当一个HTML元素满足下面条件的任何一点,都可以产生Block F

【转】关于Block Formatting Context--BFC和IE的hasLayout

转自穆乙 http://www.cnblogs.com/pigtail/ 一.BFC是什么? BFC(Block Formatting Context)直译为“块级格式化范围”. 是 W3C CSS 2.1 规范中的一个概念,它决定了元素如何对其内容进行定位,以及与其他元素的关系和相互作用.当涉及到可视化布局的时候,Block Formatting Context提供了一个环境,HTML元素在这个环境中按照一定规则进行布局.一个环境中的元素不会影响到其它环境中的布局.比如浮动元素会形成BFC,浮

关于Block Formatting Context--BFC和IE的hasLayout

本文--- 出处:穆乙 http://www.cnblogs.com/pigtail/ 一.BFC是什么? BFC(Block Formatting Context)直译为“块级格式化范围”. 是 W3C CSS 2.1 规范中的一个概念,它决定了元素如何对其内容进行定位,以及与其他元素的关系和相互作用.当涉及到可视化布局的时候,Block Formatting Context提供了一个环境,HTML元素在这个环境中按照一定规则进行布局.一个环境中的元素不会影响到其它环境中的布局.比如浮动元素会

有关对hasLayout和BFC(Block Formatting Contexts)的理解

2014年1月26日 首先,hasLayout 和 Block Formatting Contexts 分别是什么? 1.hasLayout是IE内部的一个特有的隐形属性,属性值为true/false.元素一旦拥有了这个属性,就拥有了布局,也就是说该元素可以对自己及其子元素进行尺寸计算和定位(比起依赖父元素进行布局会花费更大的代价).由于这个元素是隐形的,不能通过CSS来设置hasLayout:true/false;可以通过js来检测元素是否拥有布局.hasLayout是只读属性,一旦触发,不可

BFC(block formatting context)

BFC(block formatting context):块级格式化上下文 触发BFC: 1.根元素 2.float; 3.overflow:auto,scroll,hidden; 4.display:table-cell.table-caption.inline-block.flex.inline-flex; 5.position:absolute.fixed; 注: 一.没有父级的元素为根元素 二.浮动会触发BFC 三.overflow 属性规定当内容溢出元素框时发生的事情: overfl

块格式化上下文(Block Formatting Context,BFC)

块格式化上下文(Block Formatting Context,BFC) 是Web页面的可视化CSS渲染的一部分,是块盒子的布局过程发生的区域,也是浮动元素与其他元素交互的区域. 下列方式会创建块格式化上下文: 根元素或包含根元素的元素 浮动元素(元素的 float 不是 none) 绝对定位元素(元素的 position 为 absolute 或 fixed) 行内块元素(元素的 display 为 inline-block) 表格单元格(元素的 display为 table-cell,HT

hasLayout与BFC的触发条件

hasLayout与BFC是分别在IE和其他浏览器上的两个作用很相近的概念,在很多时候,我们需要触发它们去实现有些效果.例如清除浮动时需要触发hasLayout与BFC:很多自适应的两栏和三栏布局(两边固定宽度,中间自适应)需要触发hasLayout与BFC:很多奇形怪状的IE bug的解决需要触发hasLayout…至于详细的用法这里就不做详细说明了,这里说说触发hasLayout与BFC的条件: hasLayout Layout是 IE 的专有概念,它决定了元素如何对其内容进行定位和尺寸计算

块级格式化上下文(block formatting context)、浮动和绝对定位的工作原理详解

CSS的可视化格式模型中具有一个非常重要地位的概念——定位方案.定位方案用以控制元素的布局,在CSS2.1中,有三种定位方案——普通流.浮动和绝对定位: 普通流:元素按照先后位置自上而下布局,inline元素水平排列,直到行被占满后换行,block元素则被渲染为完整的一行,除非指定,所有元素默认为普通流定位. 浮动:浮动布局中,元素首先按照普通流位置出现,然后根据浮动方向尽可能向左或右偏移,效果与文本环绕相似. 绝对定位:元素会脱离普通流,因此绝对定位元素不会对其兄弟元素产生影响(与float不