2012-08-14 47 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