什么是haslayout?

Posted

技术标签:

【中文标题】什么是haslayout?【英文标题】:What is haslayout? 【发布时间】:2010-12-20 03:26:33 【问题描述】:

我已经阅读了一些关于它的文章,但实际上并没有得到什么。 SO上的任何人都可以解释一下。

只和IE6有关吗?

zoom:1 是什么意思?

layout 是 IE 唯一的 TAG 吗?

编辑:

我发现这个信息对我来说非常有用

因为 Internet Explorer 太老了 (因为它是最早的浏览器之一 可用),它没有奢侈 作为当前浏览器重新启动 做。所以随着时间的推移,微软 开始调整新引擎以使用 的CSS。看起来不错……但是,CSS 改变基本假设 Internet Explorer 的引擎是 基于——任何重要的东西 是一个矩形,包含其所有 内容。

所以要处理新的标准 CSS,微软决定修复他们的 古代引擎通过实施 hasLayout 属性,而不是 重建IE。中的每一个元素 Internet Explorer 现在有一个 hasLayout 财产。根据元素,它 被设置为真或假 默认。如果 hasLayout 设置为 true – 该元素是一个独立的盒子 负责渲染自己。 如果为 false - 那么元素依赖于 具有 hasLayout 的父元素 设置为 true 以呈现它。这是 大多数 IE 错误出现的地方 生活。

来源:http://bytesizecss.com/blog/post/fix-haslayout-with-one-line-of-css

我还在这里找到了另一个讨论:http://www.molly.com/2007/03/30/back-to-work-someone-please-clearly-articulate-haslayout/

【问题讨论】:

当然,事实是微软在解释规范时完全搞砸了,并且没有正确实施盒子模型,这让我们 Web 开发人员的生活一直很痛苦。 satzansatz.de/cssd/onhavinglayout.html 我想那是他指的那篇文章,他没看懂。 .. 至少我认为它是 hasLayout 被引用次数最多的文章。 reference.sitepoint.com/css/haslayout, msdn.microsoft.com/en-us/library/bb250481%28VS.85%29.aspx, haslayout.net/haslayout, positioniseverything.net/articles/haslayout.html, satzansatz.de/cssd/onhavinglayout.html 【参考方案1】:

它是 HTML 元素上的 非标准 属性,仅受 IE7 及更低版本(IE8 兼容模式)支持,如果触发该属性,则会导致元素以某种方式呈现(这可能是出乎意料的,随机的,可能是天赐之物,也可能是地狱)。

经典的例子是给一个元素布局,这样它就可以清除浮动。

#wrapper  zoom:1; 

元素现在将包含浮点数。除了 auto/normal 之外的任何这些属性和值都会触发布局属性。

* display: inline-block
* height: (any value except auto)
* float: (left or right)
* position: absolute
* width: (any value except auto)
* writing-mode: tb-rl
* zoom: (any value except normal)

请仔细阅读@http://reference.sitepoint.com/css/haslayout

【讨论】:

布局是指宽度和高度? 1.您可以通过设置列出的任何属性来提供元素布局(这些属性并非全部,请阅读reference.sitepoint.com/css/haslayout 以供参考) 2. IE8 的兼容性模仿 IE7,因此hasLayout 处于兼容模式。 3. 对 4.例如 width:auto 不会触发,但 width:1px 会。 "height:(除 auto 外的任何值)" - 这表示除 auto 之外的任何值。 我们已经确定它是 IE 特定的,让我们忘记其他浏览器。每当您分配诸如指定的属性时,无论您是否愿意,它都会将其打开,有时为了修复错误,您必须通过指定任何属性和特定值来手动打开它,因此它的呈现方式不同.

以上是关于什么是haslayout?的主要内容,如果未能解决你的问题,请参考以下文章

haslayout

haslayout详解

haslayout详解

(转)hasLayout与BFC的触发条件

CSS:haslayout

BFC 和 haslayout