2011-12-13 4 views
18

ver este comentario from jquery-ui¿Por qué se ignora el índice Z con la posición: estático?

// Ignore z-index if position is set to a value where z-index is ignored by the browser 
// This makes behavior of this function consistent across browsers 
// WebKit always returns auto if the element is positioned 

veo que zIndex() retornos de jQuery 0 si el elemento es position: static.

No se admite el índice z en la posición: estático? (A mí me funciona en Chrome, no han probado varios navegadores)

+0

posible duplicado http://stackoverflow.com/questions/7814282/why-is-my-z-index-being-ignored – Dve

+2

@Dve - no realmente. La respuesta a esa pregunta es 'No se aplica a elementos con posición estática. Estoy preguntando ** por qué ** eso es. – ripper234

Respuesta

1

z-index no se ignora para flex-elementos (elementos secundarios inmediatos de flex-contenedor, elemento con display: flex o display: inline-flex). De w3c flexbox spec:

Flex items pintura exactamente igual que los bloques en línea CSS21, excepto que el orden del documento modificado con order se utiliza en lugar del orden del documento en bruto, y z-index valores distintos de auto crear un contexto de pila incluso si es positionstatic .

Así que supongamos que tenemos este diseño con la superposición (.flex-item-two se superpone .flex-item-one utilizando márgenes por ejemplo negativos):

.flex { 
 
    display: flex; 
 
    align-items: center; 
 
} 
 

 
.flex-item-one { 
 
    width: 100px; 
 
    height: 100px; 
 
    background-color: red; 
 
    margin-right: -50px; 
 
} 
 

 
.flex-item-two { 
 
    width: 200px; 
 
    height: 200px; 
 
    background-color: green; 
 
}
<div class="flex"> 
 
    <div class="flex-item flex-item-one">One</div> 
 
    <div class="flex-item flex-item-two">Two</div> 
 
</div>

Si flex-item-one índice es más grande que .flex-item-two 's, .flex-item-one luego se superpone .flex-item-two.

.flex { 
 
    display: flex; 
 
    align-items: center; 
 
} 
 

 
.flex-item-one { 
 
    width: 100px; 
 
    height: 100px; 
 
    background-color: red; 
 
    margin-right: -50px; 
 
    z-index: 1; 
 
} 
 

 
.flex-item-two { 
 
    width: 200px; 
 
    height: 200px; 
 
    background-color: green; 
 
}
<div class="flex"> 
 
    <div class="flex-item flex-item-one">One</div> 
 
    <div class="flex-item flex-item-two">Two</div> 
 
</div>

Cuestiones relacionadas