<!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">
<head>
<title>page title</title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
</head>
<body>
<style type="text/css">
.box1,.box2,.box3,.inner{width:200px;height:200px;}
.box1{background-color:red;position:relative;z-index:1;}
.box2{background-color:green;position:relative;z-index:1;top:-30px;left:50px;}
.box3{background-color:tan;}
.inner{background-color:#3A80F3;position:absolute; left:20px;top:20px;z-index:1000;}
</style>
<div class="box1">
box1 z-index:1;
<div class="inner">box1 inner z-index:1000</div>
</div>
<div class="box2">box2 z-index:1</div>
<div class="box3"></div>
</body>
</html>
.inner 这个样式里的 position:absolute 没有起作用,改为 position:absolute !important;
.box1{background-color:red;position:relative;z-index:2;}
因为你的box1在box2之下 而且你的inner在box1里面的 所以box1的所有东西肯定在box2下面了,只有让box1 z-index大与box2了 或者把inner脱离出来
不同stacking context中,元素显示顺序以父级的stacking context的stack level来决定显示的先后情况。
所以inner在与box2比较时会用box1的level值