Это известная ошибка в 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;
}
IE8 отображает голубой прямоугольник (после:) после красного прямоугольника, даже если он имеет более низкий z-индекс.
И теперь сложная часть:
измените z-index для #target > div от 0 до -1 и voilá! он решил!
Итак, я решил проблему сейчас, используя множество z-index: -1; Но я не чувствую себя в безопасности.
Знаете ли вы лучшее решение?
Я использую: after pseudoelement, потому что у меня есть список продуктов, и я хочу добавить изображение к элементу, когда он имеет класс, проданный, например.
Я могу создать на сервере или с JS новый элемент html для этого, но я думаю, используя: after - правильное семантическое решение.
Проблема в том, что я немного параноик: после псевдоэлемента теперь , как вы думаете, лучше избегать этого?