2014-02-17 60 views
0

我得到了一个div,a:before-element和inner元素。一切工作正常,除了一个内部元素定位absolute元素之前的IE8绝对子

使用z-index,可以将absolute元素放在:before元素后面。这在IE8中不起作用,发布在IE8 z-index on before and after css selectors。正如在后文中提到的,可以使用position: relative来解决问题。但由于我的元素已经定位absolute,我无法做到这一点。那么我能做些什么来解决这个问题?

我创建了一个小提琴http://jsfiddle.net/2Zcr9/4/来显示我的问题(对于IE8,请转至http://jsfiddle.net/2Zcr9/4/embedded/result/,因为jsfiddle不再支持IE8)。


编辑:改变了链接,Paul_D指出,我的小提琴是错误+图片 enter image description here 看到区别。如果z-index较低,普通浏览器会获得:before-element后面的黄色绝对元素,但IE8拒绝这样做。

+0

你JSfiddle没有':before'伪元素,虽然它有一个':after'。我仍然对你想要做的事感到困惑。 –

+0

woops,我的错误。它应该是':之前'。 –

+0

公平不够,我不会减少套件事务,但我看不出问题所在。你有没有在IE8中看起来如何的图像,因为我在IE11的IE8“模式”中看不到任何问题。我仍然无法弄清楚你要做什么。 –

回答

1

我想通了。当给予黄色元素负z-索引时,它的父亲是正z-索引,并且z-index更高,:before-element堆栈最高,即使在IE8中也是如此。另见:http://jsfiddle.net/2Zcr9/23/

注意.icon和p之间的区别。 P仍然堆积在IE9中的:before-element之上,因为它没有负Z指数。


更全球性:大量尝试和错误后,我才明白,比IE8孩子的影子DOM是总是堆放低。

一个例子:

<div id="parent"> 
    :before 
    <div id="child1"></div> 
    <div id="child2"></div> 
    :after 
</div> 

:before:after元件被堆叠比RESP低。 #child1和#child2。你可以通过应用下面的CSS来解决这个问题:

#parent { position: relative; z-index: 2 } 
#parent:before { position: absolute; z-index: 3; ... } 
#parent > * { position: relative; z-index: -1 }