【问题标题】:IE6 and 7 Absolute Positioning Bug [duplicate]IE6 和 7 绝对定位错误 [重复]
【发布时间】:2011-06-19 18:13:27
【问题描述】:

在我用 Firefox、SeaMonkey、Chrome、Opera、Safari、Camino 和 IE8 测试我为学校构建的一个小网站后,我发现我的网站的绝对定位 div 都非常一致。

但是,当我开始在 IE6 和 7 中测试该网站时,所有的 div 都不合适,而且整个页面都很乱。

我已经用谷歌搜索了两个星期并试图找出问题所在,但我仍然找不到解决此问题的一致方法。

希望我已经足够清楚了,对不起,如果我的英语不是很好,那是我的第三语言。

如果您需要更多说明,请随时询问。

感谢任何和所有的帮助。

感谢您的宝贵时间。

注意:如上所述,我知道有许多解决方案和类似的问题,但是,我无法找到适合这种情况的解决方案。

更新:Zoom 属性修复了我遇到的大部分问题,hasLayout 似乎是一个巨大的痛苦。感谢 Spudly 和 Patrik

【问题讨论】:

  • 您是否设置了正确的文档类型?没有它,IE 会忽略很多 CSS。
  • 我使用了 HTML5 Doctype,我认为它是向后兼容的。我应该改用 HTML4 Doctype 吗?
  • 我刚刚玩过各种 Doctype,但问题仍然存在。还有其他建议吗?

标签: html css internet-explorer css-position internet-explorer-6


【解决方案1】:

这听起来像是经典的“HasLayout”错误,这是每个必须支持旧版本 IE 的 Web 开发人员生活中的祸根之一。

HasLayout 是 IE 对每个元素持有的一个内部标志,用于确定是正常显示还是出现奇怪的故障。其实这不是它的真正用途,但它似乎确实有这种效果。

解决问题的方法是强制有问题的元素获得 HasLayout 标志。遗憾的是,IE 没有提供直接的方法来做到这一点。您必须应用触发它的样式。

通常,人们选择应用的样式是

.myelelement {
    zoom:1;
}

原因首先是zoom 是一个特定于IE 的样式表属性,所以这不会影响任何其他浏览器,其次是因为zoom:1; 是默认值,所以你实际上并没有改变关于元素的任何事情。尽管如此,它仍然会触发元素获得 HasLayout 标志,因此应该可以解决您的问题。

希望对您有所帮助。

【讨论】:

  • 6 年仍然有用。
猜你喜欢
  • 1970-01-01
  • 2011-03-09
  • 2011-06-30
  • 1970-01-01
  • 2010-10-06
  • 1970-01-01
  • 2010-12-15
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多