Почему мой элемент с position: absolute всегда отображается под элементами position: relative?

Это все в вопросе, но вот простой пример

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
    <meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1" />
    <title>TEST</title>
</head>
<body style="margin:0;padding:0">

<div style="background-color:#eeeeee;margin:auto;height:500px;width:500px">
    <div style="position:relative">
        <span style="position:absolute;display:block;height:250px;width:250px;background:green;z-layer:2"><br /><br />Should be on top</span>
    </div>
    <span style="position:relative;display:block;width:500px;background:blue;z-layer:1">Actually on top</span>
</div>

</body>
</html>

Ответов (2)

Это происходит потому, что когда вы позиционируете элемент «абсолютно», он удаляется из потока документа в объектной модели документа, и поэтому элементы, которые остаются в потоке документа, появляются «над» удаленным элементом. Для кроссбраузерной совместимости поместите свои настройки z-index на родительский элемент абсолютно позиционированного элемента.

вместо "z-слой" используйте "z-index"

также абсолютный диапазон находится в относительном div без z-индекса

Вот правильный html:

<div style="background-color:#eeeeee;margin:auto;height:500px;width:500px">
    <div style="position:relative;z-index:2">
        <span style="position:absolute;display:block;height:250px;width:250px;background:green"><br /><br />Should be on top</span>
    </div>
    <span style="position:relative;display:block;width:500px;background:blue;z-index:1">Actually on top</span>
</div>