绝对定位嵌套元素上的 z-index

qMa*_*Max 4 html css z-index css-position

我有一些绝对定位的盒子。其中之一具有嵌套弹出窗口,大于框。我想在所有盒子前面弹出。

z-index: 100在框和z-index: 200弹出窗口上设置无济于事。在带有弹出框的框之后按文档顺序排列的框似乎超过了弹出框。我想念 z 索引的什么?

div {
    border: 1px solid black;
}

.container {
    position: relative;
}

.foo {
    position: absolute;
    background-color: white;
    width: 5em;
    z-index: 100;
}

#b0 {
    top: 0em;
    left: 0em;
}

#b1 {
    top: 3em;
    left: 1em;
}

#b2 {
    top: 6em;
    left: 2em;
}

#b3 {
    top: 9em;
    left: 3em;
}

#b4 {
    top: 12em;
    left: 4em;
}

.popup {
    z-index: 200;
    position: absolute;
    left: 1em;
    top: -1em;
    width: 8em;
    height: 8em;
    background-color: grey;
}
Run Code Online (Sandbox Code Playgroud)
<div class="container">
    <div class="foo" id="b0">
        <span>absolute box b0</span>
    </div>
    <div class="foo" id="b1">
        <span>absolute box b1</span>
        <div class="popup">
            popup box inside b1
        </div>
    </div>
    <div class="foo" id="b2">
        <span>absolute box b2</span>
    </div>
    <div class="foo" id="b3">
        <span>absolute box b3</span>
    </div>
</div>
Run Code Online (Sandbox Code Playgroud)

http://jsfiddle.net/B59pR/2/

Kos*_*dis 5

您需要查看以https://css-tricks.com/almanac/properties/z/z-index/快速了解所有这些。特别是在它说的部分:

另请注意,嵌套起着重要作用。如果元素 B 位于元素 A 的顶部,则元素 A 的子元素永远不会高于元素 B。

您在那里所做的是从较低元素中获取子元素,并尝试将它们置于较高元素的子元素之上。

您需要做的就是在 z-index 101 上获取 #b1 框:

div {
    border: 1px solid black;
}

.container {
    position: relative;
}

.foo {
    position: absolute;
    background-color: white;
    width: 5em;
    z-index: 100;
}

#b0 {
    top: 0em;
    left: 0em;
}

#b1 {
    top: 3em;
    left: 1em;
}

#b2 {
    top: 6em;
    left: 2em;
}

#b3 {
    top: 5em;
    left: 3em;
}

#b1 {
    z-index: 101;
}

.popup {
    z-index: 200;
    position: absolute;
    left: 3em;
    top: -1em;
    width: 8em;
    height: 8em;
    background-color: grey;
}
Run Code Online (Sandbox Code Playgroud)
<div class="container">
    <div class="foo" id="b0">
        <span>absolute box b0</span>
    </div>
    <div class="foo" id="b1">
        <span>absolute box b1</span>
        <div class="popup">
            popup box inside b1
        </div>
    </div>
    <div class="foo" id="b2">
        <span>absolute box b2</span>
    </div>
    <div class="foo" id="b3">
        <span>absolute box b3</span>
    </div>
</div>
Run Code Online (Sandbox Code Playgroud)

我把这个固定在这个小提琴上让你理解。