生成内容的z-index IE8错误:after

Enr*_*que 23 css z-index internet-explorer-8 pseudo-element

这是IE8中的已知错误,请查看此处的最后一个错误:http:
//nicolasgallagher.com/css-typography-experiment/demo/bugs.html

现在,玩一个简单的例子我发现了这个(用IE8测试它):http:
//jsfiddle.net/AjCPM/

<div id="target">
   <div>div</div>
</div>


#target {
    position: relative;
    width: 200px;
    height: 200px;
    z-index: 1;
}
#target>div{
    background: red; width: 200px; height: 200px;  
    position: relative;
    z-index: 0;
}
#target:before {
    top: 0; left: 10%; width: 100%; height: 100%; background: cyan;
    content: "after";
    position: absolute;
    z-index: 10;
}
Run Code Online (Sandbox Code Playgroud)

IE8渲染红色矩形下方的青色矩形(:after),即使它具有较低的z-index.
现在是棘手的部分:
将#target> div的z-index从0更改为-1并且voilá!它解决了!

所以我现在使用大量的z-index解决了我的问题:-1;
但我对此感到不安全.

你知道更好的解决方案吗?

我正在使用:在伪元素之后,因为我有一个产品列表,并且我想在项目具有"已售出"类时添加图像.
我可以在服务器或JS中创建一个新的html元素,但我认为使用:after是正确的语义解决方案.
问题是我有点偏执:现在伪元素之后,你认为最好避免它吗?

Dio*_*ane 0

我使用不同的方法来解决这个问题:

每个产品的 HTML 都包含一个“已售完”横幅,可以放置在主图像上。默认情况下,CSS 隐藏此元素。如果包装“产品”DIV 包含“soldOut”类,CSS 将覆盖默认声明并显示横幅。

<div class="product soldOut">                                   
    ... product html ...
    <div class="soldOutBanner"></div>    
</div>
Run Code Online (Sandbox Code Playgroud)

CSS:

.soldOutBanner {
     display:none
}

.soldOut .soldOutBanner {
    display:block; 
    width:133px;
    height:130px;
    position:absolute;
    top:0px;
    right:0px;
    z-index:10;
    background-image:url(../SoldOut.png);
}
Run Code Online (Sandbox Code Playgroud)