how to use z-index with relative positioning?

Chris Vaarhorst picture Chris Vaarhorst · Jan 24, 2012 · Viewed 81.5k times · Source

I have a problem with z-index and my code. I want to have a popup on every row, positioned relative to that row. So I created this code:

<div class="level1">
    <div class="level2">
        <input type="text" value="test1" />
        <div class="popup">test1</div>
    </div>
    <div class="level2">
        <input type="text" value="test2" />
        <div class="popup">test2</div>
    </div>
</div>

with te following style

.level1
{
    position:relative;
    z-index:2;
}
.level2
{
    position:relative;   
    z-index:3;
}
.popup
{
    position:absolute;
    left:0px;
    top:10px;
    width:100px;
    height:100px;
    background:yellow;
    z-index:4;
}

Answer

Quentin picture Quentin · Jan 24, 2012

When you set position: relative on an element then you establish a new containing block. All positioning inside that block is with respect to it.

Setting z-index on an element inside that block will only alter its layer with respect to other elements inside the same block.

I'm not aware of any work-arounds.