Css problema de índice z con elementos anidados
css3 z-index (2)
No especifique ningún
z-index
en
.bank
para evitar crear un nuevo
contexto de apilamiento
y simplemente ajuste el
z-index
de los otros elementos.
Esto funcionará porque los 3 elementos pertenecen al mismo contexto de apilamiento, por lo que puede especificar el orden que desee.
.bank {
position:relative;
background: red;
width: 500px;
height: 200px;
}
.card {
position: absolute;
top:0;
z-index: 2;
height: 100px;
width: 400px;
background: blue;
}
.button {
position: absolute;
top: 0;
z-index: 1;
height: 150px;
width: 450px;
background: yellow;
}
.container {
position: relative;
}
<div class="container">
<div class="bank">
<div class="card"></div>
</div>
<div class="button"></div>
</div>
ACTUALIZAR
Teniendo en cuenta su código, la única forma es eliminar el
z-index
y
transform
de
.bank
o será imposible porque sus elementos nunca pertenecerán al mismo contexto de apilamiento.
Como podéis leer en el enlace anterior:
Cada contexto de apilamiento es autónomo : después de apilar el contenido del elemento, el elemento completo se considera en el orden de apilamiento del contexto de apilamiento principal.
Tengo 3 elementos HTML que quiero ordenar en el plano z:
.bank {
width: 200px;
height: 200px;
background-color: grey;
position: absolute;
z-index: 100;
transform: translateY(10%);
}
.card {
width: 100px;
height: 100px;
background-color: red;
position: absolute;
left: 50px;
top: 50px;
z-index: 300;
}
.button {
width: 50px;
height: 50px;
background-color: green;
position: absolute;
left: 30px;
top: 50px;
z-index: 200;
}
<div class="bank">
bank
<div class="card">card</div>
</div>
<div class="button">button</div>
Quiero que el botón esté en la parte superior del banco pero detrás de la tarjeta . Pero el botón siempre está sobre el banco y la tarjeta, no importa lo que intente.
Edición: noté que al eliminar el índice z y la transformación de ''.bank'' se soluciona, pero necesito la propiedad de transformación. ¿Que puedo hacer?
¿Qué puede hacer que no funcione? Gracias
Puede hacer esto agregando el índice z solo a la clase de tarjeta y colocando los elementos en absoluto.
.bank {
width: 150px;
background: red;
height: 150px;
position: absolute;
top: 0;
left: 0;
}
.card {
width: 50px;
background: black;
height: 50px;
position: absolute;
top: 0;
left: 0;
z-index: 1;
}
.button {
width: 100px;
background: blue;
height: 100px;
position: absolute;
top: 0;
left: 0;
}
<div class="bank">
<div class="card"></div>
</div>
<div class="button"></div>