css css3 z-index

css - Orden de apilamiento de elementos afectados por opacidad



css3 z-index (2)

¿Cómo se relacionan el z-index y la opacity al decidir el orden de apilamiento de un elemento en HTML?

cuando mantengo la opacity menor que 1 en un elemento que tiene un z-index digamos 999 . El elemento va detrás del elemento que no tiene z-index .

$(function() { $("#checkbox1").on("change", function() { $("#green-parent").toggleClass("add-opacity", this.checked); }); });

.green, .blue { position: absolute; width: 100px; line-height: 100px; text-align: center; color: white; } .green { z-index: 999999999; top: 50px; left: 50px; background: green; } .blue { top: 60px; left: 90px; background: blue; } .add-opacity { opacity: 0.99; }

<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script> <input id="checkbox1" type="checkbox" value="1"> <label for="checkbox1">Add opacity to green box parent</label> <div id="green-parent"> <span class="green">Green</span> </div> <div> <span class="blue">Blue</span> </div>


Además del developer.mozilla.org/en-US/docs/Web/Guide/CSS/… Alexey Ten señaló en su comentario (que es un factor aquí), el z-index es relativo al contenedor del elemento. En este caso, sus elementos azules y verdes están contenidos dentro de padres div separados que no tienen un z-index definido. Debido al orden HTML, el último div (el que tiene el cuadro azul) aparecerá sobre el anterior (el verde).

En este ejemplo a continuación, agregué la clase .first al primer div padre y .second al segundo, luego les .second sus propias propiedades de z-index .

.green, .blue { position: absolute; width: 100px; color: white; line-height: 100px; text-align: center; } .green { z-index:999999999; top: 90px; left: 60px; background: green; } .gp{ opacity:0.99; } .blue { top: 100px; left: 100px; background: blue; } .first, .second { position: relative; } .first { z-index: 2; } .second { z-index: 1; }

<div class="first"> <span class="green">Green</span> </div> <div class="second"> <span class="blue">Blue</span> </div>


Los elementos posicionados con un valor de índice z distinto de "auto" y los elementos con un valor de opacidad inferior a 1 generan un contexto de apilamiento. Consulte las reglas sobre el orden de pintura .

En su primer ejemplo, tenemos el contexto de apilamiento de raíz con varios descendientes que incluyen:

  • cuadro verde posicionado con índice z positivo
  • cuadro azul posicionado con índice z auto

El cuadro azul con índice z auto se coloca detrás; el recuadro verde con índice z positivo se coloca al frente (ver la regla n. ° 8 y 9).

En su segundo ejemplo tenemos:

  • un elemento con opacidad (que contiene un cuadro verde; tenga en cuenta que el índice z en el cuadro verde se vuelve local para este elemento)
  • cuadro azul colocado sin índice z

Ambos elementos pertenecen a la misma categoría (ver la regla no. 8). En cuyo caso, el orden HTML determina qué elemento aparece delante. El cuadro azul aparece más adelante en el orden de origen, por lo que aparece al frente.