在Internet Explorer 7中使用z-Index定位div

时间:2009-11-05 15:51:24

标签: html internet-explorer-7 css z-index

<div style="position:relative;"> OUTERFOO <div style="position:absolute; z-index:1000;">FOO</div></div> <div style="position:relative;">OUTERBAR <div style="position:absolute;">BAR</div> </div>

我希望FOO在BAR上堆叠,而OUTERFOO堆叠在OUTERBAR上!

这适用于Firefox,但不适用于IE7。 有人可以发布变通方法吗?

提前致谢, 斯蒂芬

3 个答案:

答案 0 :(得分:2)

W3C在没有创建实现的情况下定义标准的事实导致了不同的解释,无论哪个浏览器“对或错”。

在所有浏览器中执行所需操作的正确方法如下:

<div style="position:relative; z-index:1;"> OUTERFOO 
  <div style="position:relative; z-index:1;">OUTERBAR 
    <div style="position:absolute; z-index:1;">BAR</div> 
  </div>
  <div style="position:absolute; z-index:2;">FOO</div>
</div> 

<div style="position:relative; z-index:1;"> OUTERFOO 
  <div style="position:relative; z-index:1;">OUTERBAR 
    <div style="position:absolute; z-index:1;">BAR</div> 
    <div style="position:absolute; z-index:2;">FOO</div>
  </div>
</div> 

不需要带有荒谬数字的ziindexes - 这会导致混乱。

基本上,当你使用z-index时,你应该定位所有兄弟元素和父元素,为了清楚起见,你应该对所有兄弟姐妹进行z索引。这让人头疼。

您在问题中尝试执行此操作的方式违反了分层的基本规则,例如:

<div><span></div></span>

您正在寻找一种使用css来破解html语法的嵌套规则的解决方案。我提供的例子在遵守这些规则的同时实现了你真正想要的东西。

答案 1 :(得分:1)

在8之前的IE版本中存在已知的z-index错误,其中定位元素生成新的堆叠上下文,导致z-index无法正常工作。 This example说明了问题。

您的网页在IE8中是否正确显示?

答案 2 :(得分:0)

不确定我是否非常清楚你想要什么,但是你的代码以及它在Firefox 3中呈现的方式可以通过重新安排你的div来在IE7中复制

<div style="position:relative; z-index:2;">OUTERFOO</div>
<div style="position:absolute; z-index:1">
   <div style="position:absolute; z-index:1000;">FOO</div>
      OUTERBAR
      <div style="position: relative; z-index: 1;">BAR</div>
   </div>
</div>