4
基本上,如果你看看this,你會看到我有一個元素,其中應用了一個已生成內容的變換。 :after
元素應該出現在div
的後面,但它不是。沒有任何數量的!important
-ing正在起作用。帶有生成的內容/僞元素的轉換後的元素不符合z-index
我怎樣才能讓僞元素出現在div
之後?
我不關心IE 8或更低版本。
基本上,如果你看看this,你會看到我有一個元素,其中應用了一個已生成內容的變換。 :after
元素應該出現在div
的後面,但它不是。沒有任何數量的!important
-ing正在起作用。帶有生成的內容/僞元素的轉換後的元素不符合z-index
我怎樣才能讓僞元素出現在div
之後?
我不關心IE 8或更低版本。
雖然這很奇怪,而且往往是不必要的行爲,但它也是可以預料的。從本質上講,轉換元素會創建一個新的堆疊上下文,對於僞元素來說,這意味着他們不能再坐在他們所基於的元素之後。
請參閱本文的詳細信息:https://daneden.me/2012/04/22/css-transforms-and-z-index/
目前,爲解決這個唯一的方法是創建父元素在新的堆疊內容(即創建一個包裝元素和變換)。這裏有一個例子:http://jsfiddle.net/joshnh/GzWnb/
HTML:
<div class="wrapper">
<div id="box"></div>
</div>
CSS:
.wrapper {
-moz-transform: rotate(10deg);
-webkit-transform: rotate(10deg);
transform: rotate(10deg);
}
#box{
width: 200px;
height: 200px;
left: 100px;
top: 100px;
background:blue;
position: absolute;
&:after{
content: "";
width: 100px;
background: orange;
height: 100px;
position: absolute;
left: 120px;
top: 120px;
z-index: -2!important;
}
}
是啊,我看到這篇文章時,我正在研究,但我希望,也許它已經採取照顧。我知道這是「預期的」,但很難預料。我知道它應該創建一個「新」堆疊上下文,但堆疊上下文應該完全基於預先存在的堆疊上下文。或者,如果不是,應該有一種方法讓用戶修改所述新的堆疊上下文。 – Jason 2012-08-15 01:01:48
是的,我同意你的意見。我不完全明白爲什麼做出這個決定,並希望有一個解決辦法。 請記住,在基本元素上設置z-index(就像您現在所做的那樣)將做同樣的事情,將不透明度設置爲小於1。 – joshnh 2012-08-15 01:10:13
我已更新我的答案以包含可能的解決方案。 – joshnh 2012-08-15 01:19:53