5,006
社区成员
发帖
与我相关
我的任务
分享
<style type="text/css">
body { margin:0; }
.p1{ top:20px; height:50px; width:150px; background-color:blue;}
.p2{ top:10px; left:20px; height:30px; width:100px; background-color:yellow;}
.p3{ top:0px; left:50px; height:100px; width:50px; background-color:red;}
</style>
<body>
<div style="position:relative;" class="p1">1
<div style="position:absolute; z-index:1;" class="p2">2</div>
</div>
<div style="position:absolute;" class="p3">3</div>
</body>
根据 W3C CSS2.1 规范中的说明,上面代码中的定位元素【p1】和【p3】由于未设置 'z-index' 特性,会使用默认值 auto,不会创建新的局部层叠上下文,而定位元素【p2】设置了 z-index:1 则会创建新的层叠上下文。<style>
.parent{width:200px; height:200px; padding:10px;}
.sub{text-align:right; font:15px Verdana;width:100px; height:100px;}
.lt50{left:50px;top:50px;}
</style>
<div style="position:absolute; background:lightgrey;" class="parent">
<div style="position:absolute;z-index:20;background:darkgray;" class="sub">20</div>
<div style="position:absolute;z-index:10;background:dimgray;" class="sub lt50">10</div>
</div>
<div style="position:absolute;left:80px;top:80px;background:black;" class="parent">
<div style="position:absolute;z-index:2;background:darkgray;" class="sub">2</div>
<div style="position:absolute;z-index:1;background:dimgray;" class="sub lt50">1</div>
</div>
按道理讲两个【parent】都不应该产生层叠上下文,因此根据层叠级别的规则,其中的子元素应该按照 z-index值的大小排列,因此,从后往前是:1-》2-》10-》20。
.all{position:relative;width:112px;height:162px;}
.all div{border:1px solid #ddd;width:100px;height:150px;background:#fff;padding:5px;}
.all .p{position:absolute;top:0;left:0;background:#eee;}
.p1{position:absolute;top:-2px;left:-2px;}
.p2{position:absolute;top:-4px;left:-4px;}
<div class="all">
<div class="p"></div>
<div class="p1"></div>
<div class="p2">你。。。。好吗......</div>
</div>