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