2010-07-05 48 views
4

我在容器中有两个div,第一个具有绝对定位。在ie7中,第二个div显然忽略了上边距。填充似乎工作正常,但由于视觉的原因,我不得不使用保证金。IE7忽略div中的绝对定位div后的余量

我知道罪魁祸首是绝对定位div,因为如果我删除它下面的div工作正常。

这只发生在ie7中(甚至不在ie6中)。

帮助!

编辑:我刚刚找到了一个解决方案,其中包含给ie7的父div div-top。所以我只想知道为什么会发生这种情况,如果有,清洁的解决方案,但我不需要更多的肮脏的黑客..

+0

包括您的标记(包括文档类型)或(更好的)链接到一个网页,这个问题将是有益的,所以我们可以看到你的代码;我在这个周末测试了它,但是我仍然没有看到未知代码的魔力。 ;-) – 2010-07-05 16:28:44

回答

5

这就是我们所说的边缘崩溃。你也可以尝试定位第二个div。

你可以找到更多关于边缘折叠的信息。

在开始阅读整篇文章之前,如果您在代码中包含任何代码,请检查以下条件。

BODY元素不会参加 保证金崩溃,因为它们是 认为不可思议,这意味着 有时一个奇怪的差距并不在Internet Explorer中显示 起来当它 在其他浏览器中,当崩溃 发生在身体的顶部。这个 通常很容易解决;只是防止其他 浏览器的边缘崩溃 ,它也可以在Internet Explorer中工作。 (请注意,HTML 元素的利润率从来没有在 任何浏览器崩溃,这是正确的 行为。)

在极少数情况下,边缘塌陷其中 内部元件具有底部边框 和外容器具有底部 边界,会导致中间元素的背景溢出到Internet Explorer中的 容器中。

更有问题的错误是由 Internet Explorer的奇怪hasLayout 行为造成的。这是Internet Explorer 7中的一个基本问题 ,并且还影响 其他几件事情,但是这篇文章只会处理保证金 崩溃。在 上设置某些样式会使元素“具有布局”( 概念是Internet Explorer独有的, 并且不符合任何标准)。 导致 问题的最常见样式是宽度。当元素 hasLayout突然假设 的最小高度为1em,并且如果在Internet Explorer 6, (如0.5em)中设置为 ,则它仍然使用1em。

的元件具有布局当以下条件之一为真:

  • 它有一个宽度和/或高度指定
  • 它是一个内联块(显示:内联块)
  • 它具有绝对定位(位置:绝对)
  • 它是一个浮子(浮子:左,浮动:右)
  • 它是一个表元素
  • 它转化(样式=“缩放:1”)

身高通常不会引起 问题,因为设置高度将 防止在其他浏览器崩溃 反正。然而,在父 已经阻止使用 边框或填充余量折叠嵌套元素上的触发hasLayout的 ,可引起边缘 到消失,或者通过 父不论折叠填充 或边界。一般来说,hasLayout是一个 混乱,最好避免在 边缘是至关重要的地方。

我希望这会帮助你解决你的问题。