我试图在页面的某些元素上使用z-index。基本上,我有一个带有服务员和回复框的联系表。联系人表格在页面上的其他位置使用并且可以正常工作...

按下“发送”按钮,overlay-1覆盖表单,ajax响应触发一个覆盖overlay-1的“谢谢”框

现在,对于在页面上相对放置的表单,这一切都可以正常工作。但是,我有完全相同的窗体弹出所有内容,但即使窗体使用相同的类,我的z索引也无法兑现。

谁能给我任何指示?

亚历克斯

HTML:

<div id="popuporderform" class="orderform">
    <!-- .resultBox injected here -->
    <form method="post">
        <input name="name" type="text" />
        <input class="send" type="submit" value="Send" />
    </form>

</div>
<!-- .orderspinner injected here -->


CSS:

/* -- ORDER FORM -- */
div.orderform {
    width: 220px;
    background-color: #fff;
    height: 300px;
}

// This ID is for the pop up version of the form and is not used in the
// form that is within the layout of the page
#popuporderform {
    position: absolute;
    top: 100px;
    left: 100px;
    z-index: 200;
}

// this is the overlay with spinner in it -- this DOES overlay the form
.orderspinner {
  position: absolute;
  opacity: 0.9;
  filter: alpha(opacity=90);
  -ms-filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=90);
  z-index: 250;
  background: #fff;
}

// This is the thank-you box - it should appear over the .orderspinner (but isn't)
.resultBox {
    display: block;
    width: 150px;
    height: 100px;
    background-color: #fff;
    position: absolute;
    z-index: 300;
    border: 1px red solid;
    color: #000;
}


固定:

我将叠加层注入div而不是外部,因此将其置于相同的z-index上下文中。

HTML:

<div id="popuporderform" class="orderform">
    <!-- .orderspinner injected here -->
    <!-- .resultBox injected here -->
    <form method="post">
        <input name="name" type="text" />
        <input class="send" type="submit" value="Send" />
    </form>

</div>

最佳答案

不久前,我遇到了麻烦。我的问题原来与堆栈上下文有关,基本上,当您有一个带有z-index的元素时,它将在其中启动一个新的堆栈上下文,这意味着其中的元素的z-index不会与元素的z-index进行比较外面。
事情变得更加复杂的是,当元素(绝对,相对)定位时,IE 6-7(我不知道8)会启动一个新的堆栈上下文。
因此,我将检查您弹出式窗口的元素直至根,然后尝试为它们提供较高的z索引,看看是否可以解决该问题。经过反复试验,您可能会发现问题所在。

09-28 15:12