He visto montones de ejemplos para corregir la locura del índice z de IE8, pero ninguno de ellos me parece de ninguna ayuda en este caso.IE8: después de z-index
Estoy diseñando un diseño 'breadcrumb' basado en UL/LI donde gráficamente cada miga de pan puede tener uno de 3 colores de fondo diferentes y cada uno tiene un 'extremo oblicuo inclinado'. Así es como se ve en otra cosa que IE8:
Nuestra aplicación ingenua, pero que trabajan inicial agrega marcado no semántica entre el pan rallado con imágenes de cada uno de los posibles pares de superposición - hay 9 combinaciones seleccionadas con una series complejas de clases y JS cuando las clases de migas cambian. Ugh. Quería apuñalar a otra solución basada en pseudoelementos que se superponen a la migaja hacia la derecha para que podamos deshacernos de todo el "divisor" y la lógica.
Mi HTML se parece a esto:
<ul class="breadcrumbs">
<li class="positive">positive</li>
<li>default</li>
<li class="positive">positive</li>
<li class="negative">negative</li>
<li>default</li>
</ul>
yo no voy a aburrir con el relleno y el fondo y tal, basta con decir que cada uno de los fondos es una astilla que se repite - por defecto (sin clase) es gris, positivo es verde, negativo es rojo. Para cada valor predeterminado/positivo/negativo, hay una imagen de una inclinación.
Aquí hay un poco de CSS:
ul.breadcrumbs
{
display: block;
clear: both;
position: relative;
z-index: 10;
}
ul.breadcrumbs li
{
display: block;
float: left;
position: relative;
...height,width,padding,etc.etc...
background: url(sprite-x.png) repeat-x 0 -216px;
}
ul.breadcrumbs li.negative { background-position: 0 -243px; }
ul.breadcrumbs li.positive { background-position: 0 -323px; }
Eso me da mis migas con los colores adecuados. Ahora para los sesgos:
ul.breadcrumbs li:after
{
content: "";
display: block;
position: absolute;
top: 0; left: 100%;
width: 24px;
height: 100%;
z-index: 1;
background: url(sprite.png) no-repeat 0 -783px;
}
ul.breadcrumbs li.negative:after { background-position: 0 -864px; }
ul.breadcrumbs li.positive:after { background-position: -25px -864px; }
Esto funciona muy bien - cada miga 'recoge' la inclinación correcta en función de su clase. Se superpone la miga a la derecha de modo que tengo que hacer espacio para la inclinación de la parte 'cobertura' de la misma:
ul.breadcrumbs li+li:before
{
content: "";
display: block;
float: left;
width: 22px;
height: 100%;
}
Todo esto funciona un tratamiento, excepto para Internet Explorer 8:
El: después del contenido está DETRÁS de la migaja a la derecha. Entiendo que hay cierta rareza de "reinicio de z-index" en IE8 que tiene que ver con elementos posicionados, pero TENGO que posicionar el li o el posicionamiento absoluto de: after no funcionará. Tampoco sabré cuántas li's podría haber, y no sé en qué índice z estará 'vivo' en las páginas.
¿Qué hechizo z-index mágico hará que IE8 sea feliz?
después, y antes de: elementos no son realmente parte del diseño, así que no estoy sorprendido de que se comporten mal con z-index en IE8. –
Como experimento intenté flotar a la DERECHA y eso ciertamente los hizo aparecer correctamente porque los elementos 'posteriores' se superponen a los elementos 'anteriores', ¡pero tendríamos que listar nuestras migajas hacia atrás! No es exactamente "semántico" tampoco :) – n8wrl
jejeje! Caray, qué solución. Imagínate. –