普拉迪普Pansari的回答是都不錯,但我想更多這樣解釋一下爲您的問題提供另一種解決方案
首先,您的z-index
代碼根本不起作用。我們將添加position
。你的CSS現在
.grid > span {
background-color: #ffff00;
display: inline-block;
width: 100px;
height: 100px;
vertical-align: top;
z-index: 5;
position:relative;
}
.grid > span > span {
background-color: #ff00ff;
display: inline-block;
width: 250px;
z-index: 10;
position:absolute;
}
這是結果http://jsfiddle.net/P3qwx/4/
這裏發生了什麼?爲什麼紫色塊仍然隱藏在第三和第四個黃色塊之下?
這是因爲每一個黃色的塊狀,有stacking context創建
所以長話短說,你的紫塊和它的z-index只需要第二黃色塊下的效果,它沒有任何權力下第三和第四個因爲不同的堆疊環境。這裏的層次結構
- 黃色塊1(z索引5)
- 黃色塊2(z索引5)
- 黃色塊3(z索引5)
- 黃色塊4(z索引5)
一旦我們得到了這一點,固定簡單,要麼去除z-index
和設置位置,絕對讓默認的堆疊規則需要照顧生意
Demo
.grid > span {
background-color: #ffff00;
display: inline-block;
width: 100px;
height: 100px;
vertical-align: top;
}
.grid > span > span {
background-color: #ff00ff;
display: inline-block;
width: 250px;
position:absolute;
}
或(我想你不希望這只是爲出於完整性起見,..)
Demo
HTML
<div class="grid">
<span class="span1">
<h4>1</h4>
</span>
<span class="span2">
<h4>2</h4>
<span class="span5">Stuff</span>
</span>
<span class="span3">
<h4>3</h4>
</span>
<span class="span4">
<h4>4</h4>
</span>
</div>
CSS
.span1 {
background-color: #ffff00;
display: inline-block;
width: 100px;
height: 100px;
vertical-align: top;
position:relative;
z-index: 1;
}
.span2 {
background-color: #ffff00;
display: inline-block;
width: 100px;
height: 100px;
vertical-align: top;
position:relative;
z-index: 5;
}
.span3 {
background-color: #ffff00;
display: inline-block;
width: 100px;
height: 100px;
vertical-align: top;
position:relative;
z-index: 3;
}
.span4 {
background-color: #ffff00;
display: inline-block;
width: 100px;
height: 100px;
vertical-align: top;
position:relative;
z-index: 4;
}
.span5 {
background-color: #ff00ff;
display: inline-block;
width: 250px;
position:absolute;
z-index:1;
}
由於有關堆疊上下文的其他信息,我不得不選擇此作爲答案。現在發生了什麼事情會更有意義。謝謝。 – Goose