2012-08-14 22 views

回答

6

雖然這很奇怪,而且往往是不必要的行爲,但它也是可以預料的。從本質上講,轉換元素會創建一個新的堆疊上下文,對於僞元素來說,這意味着他們不能再坐在他們所基於的元素之後。

請參閱本文的詳細信息: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; 
    } 
} 
+0

是啊,我看到這篇文章時,我正在研究,但我希望,也許它已經採取照顧。我知道這是「預期的」,但很難預料。我知道它應該創建一個「新」堆疊上下文,但堆疊上下文應該完全基於預先存在的堆疊上下文。或者,如果不是,應該有一種方法讓用戶修改所述新的堆疊上下文。 – Jason 2012-08-15 01:01:48

+0

是的,我同意你的意見。我不完全明白爲什麼做出這個決定,並希望有一個解決辦法。 請記住,在基本元素上設置z-index(就像您現在所做的那樣)將做同樣的事情,將不透明度設置爲小於1。 – joshnh 2012-08-15 01:10:13

+0

我已更新我的答案以包含可能的解決方案。 – joshnh 2012-08-15 01:19:53