He aislado un pequeño caso de prueba del z-index
error de IE7 , pero no sé cómo solucionarlo. He estado jugando conz-index
todo el día.
¿Qué hay de malo z-index
en IE7?
Prueba CSS:
input {
border: 1px solid #000;
}
div {
border: 1px solid #00f;
}
ul {
border: 1px solid #f00;
background-color: #f00;
list-style-type: none;
margin: 0;
padding-left: 0;
z-index: 1000;
}
li {
color: #fff;
list-style-type: none;
padding-left: 0;
margin-left: 0;
}
span.envelope {
position: relative;
}
span.envelope ul {
position: absolute;
top: 20px;
left: 0;
width: 150px;
}
Prueba HTML:
<form>
<label>Input #1:</label>
<span id="envelope-1" class="envelope">
<input name="my-input-1" id="my-input-1" />
<ul>
<li>item</li>
<li>item</li>
<li>item</li>
<li>item</li>
</ul>
</span>
<br><br>
<label>Input #2:</label>
<span id="envelope-2" class="envelope">
<input name="my-input-2" id="my-input-2" />
</span>
</form>
css
internet-explorer-7
z-index
rezna
fuente
fuente
Respuestas:
El índice Z no es una medida absoluta. Es posible que un elemento con índice z: 1000 esté detrás de un elemento con índice z: 1 , siempre que los elementos respectivos pertenezcan a diferentes contextos de apilamiento .
Cuando especifica el índice z, lo está especificando en relación con otros elementos en el mismo contexto de apilamiento, y aunque el párrafo de la especificación CSS en el índice Z dice que un nuevo contexto de apilamiento solo se crea para contenido posicionado con un índice z distinto de automático (lo que significa que todo su documento debe ser un solo contexto de apilamiento), lo hizo construir un lapso de posicionado: Desafortunadamente IE7 interpreta el contenido colocado sin z-index esto como un nuevo contexto de pila.
En resumen, intente agregar este CSS:
o rediseñe el documento de modo que sus tramos ya no tengan posición: relativo:
Consulte http://www.brenelz.com/blog/2009/02/03/squish-the-internet-explorer-z-index-bug/ para ver un ejemplo similar de este error. La razón por la que un elemento padre (sobre-1 en su ejemplo) funciona con un índice z más alto es porque todos los hijos de sobre-1 (incluido el menú) se superpondrán a todos los hermanos de sobre-1 (específicamente, sobre-2).
Aunque el índice z le permite definir explícitamente cómo se superponen las cosas, incluso sin el índice z el orden de capas está bien definido . Finalmente, IE6 tiene un error adicional que hace que las cajas de selección y los iframes floten sobre todo lo demás.
fuente
http://www.vancelucas.com/blog/fixing-ie7-z-index-issues-with-jquery/
fuente
Intente darle al elemento padre un valor de índice z más alto (puede ser incluso más alto que el valor del índice z del niño) para corregir el error.
fuente
Encontré este problema, pero en un gran proyecto donde los cambios de HTML tuvieron que solicitarse y se convirtieron en un problema completo, por lo que estaba buscando una solución CSS pura.
Al colocar
position:relative; z-index:-1
en el contenido de mi cuerpo principal, el contenido desplegable de mi encabezado se muestra repentinamente sobre el contenido del cuerpo en ie7 (ya se mostraba sin problemas en todos los demás navegadores y en ie8 +)El problema con eso fue que esto deshabilitó todas las acciones de desplazamiento y clic en todo el contenido del elemento con el,
z-index:-1
así que fui al elemento principal de toda la página y le diposition:relative; z-index:1
Lo que solucionó el problema y mantuvo la funcionalidad de capas correcta.
Se siente un poco hacky, pero funcionó según sea necesario.
fuente
Descubrí que tenía que colocar una designación especial de índice z en div en una hoja de estilo específica ie7:
div {índice z: 10; }
Para que el índice z de divs no relacionados, como una navegación, se muestre encima del control deslizante. No podría simplemente agregar un índice z al control deslizante div.
fuente
html {z-index:1; position:relative;}
permitir que el menú pasara sobre la imagen del carrusel en IE.Si la mayor indexación z mencionada anteriormente en los nodos principales no se ajusta a sus necesidades, puede crear una solución alternativa y dirigirla a navegadores problemáticos, ya sea mediante comentarios condicionales de IE o utilizando la detección de características (más idealista) proporcionada por Modernizr.
Prueba rápida (y obviamente funcionando) para Modernizr:
fuente
Parece que no es un error, es decir, para una comprensión diferente del estándar CSS. Si el contenedor externo no se especifica el índice z, pero el elemento interno especifica un índice z más alto. Entonces, el hermano del contenedor puede superponerse al elemento de alto índice z. Incluso así, solo ocurre en IE7, pero IE6, IE8 y Firefox están bien.
fuente
En IE6 en general, ciertos elementos de la interfaz de usuario se implementan con controles nativos. Estos controles se representan en una fase completamente separada (¿ventana?) Y siempre aparecen sobre cualquier otro control, independientemente del índice z. Los cuadros de selección son otro control problemático.
La única forma de solucionar este problema es crear contenido que IE represente como una "ventana" separada, es decir, puede colocar un cuadro de selección sobre un cuadro de texto o, más útilmente, un iframe.
En resumen, tendrá que poner "on-hover" como cosas como menús en un iframe para permitir que IE coloque estos controles de interfaz de usuario integrados.
Esto debería haberse solucionado en IE7 (consulte http://blogs.msdn.com/ie/archive/2006/01/17/514076.aspx ) pero ¿tal vez esté ejecutando algún tipo de modo de compatibilidad?
fuente
Este error parece ser algo más que un problema separado del error de IE de contexto de apilamiento separado estándar. Tuve un problema similar con múltiples entradas apiladas (esencialmente una tabla con un autocompletador en cada fila). La única solución que encontré fue darle a cada celda un valor de índice z decreciente.
fuente
Si desea crear un menú desplegable y tiene un problema con el índice z, puede resolverlo creando índices z del mismo valor (índice z: 999; por ejemplo). Simplemente coloque el índice z en los divisores padre e hijo y Eso resolverá el problema. Resuelvo el problema con eso. Si pongo diferentes índices z, seguro, mostrará mi div hijo sobre mi div padre, pero, una vez que quiera mover mi mouse de la pestaña del menú al div submenú (lista desplegable), desaparecerá ... luego pongo índices z del mismo valor y resuelvo el problema ...
fuente
Lo resolví usando las herramientas de desarrollador para IE7 (es una barra de herramientas) y agregando un índice z negativo al contenedor del div que estará debajo de ese otro div.
fuente