Me gustaría crear un efecto paradójico a través de la propiedad z-index
CSS .
En mi código tengo cinco círculos, como en la imagen de abajo, y todos están posicionados absolutamente sin definir z-index
. Por lo tanto, por defecto, cada círculo se superpone al anterior.
En este momento, el círculo 5 se superpone al círculo 1 (imagen de la izquierda). La paradoja que me gustaría lograr es tener, al mismo tiempo, el círculo 1 debajo del círculo 2 y encima del círculo 5 (como en la imagen de la derecha).
(fuente: schramek.cz )
Aqui esta mi codigo
Margen:
<div class="item i1">1</div>
<div class="item i2">2</div>
<div class="item i3">3</div>
<div class="item i4">4</div>
<div class="item i5">5</div>
CSS
.item {
width: 50px;
height: 50px;
line-height: 50px;
border: 1px solid red;
background: silver;
border-radius: 50%;
text-align: center;
}
.i1 { position: absolute; top: 30px; left: 0px; }
.i2 { position: absolute; top: 0px; left: 35px; }
.i3 { position: absolute; top: 30px; left: 65px; }
.i4 { position: absolute; top: 70px; left: 50px; }
.i5 { position: absolute; top: 70px; left: 15px; }
También hay un ejemplo en vivo disponible en http://jsfiddle.net/Kx2k5/ .
Probé muchas técnicas con órdenes de apilamiento, contexto de apilamiento, etc. Leí algunos artículos sobre estas técnicas, pero no tuve éxito. ¿Como puedo resolver esto?
Respuestas:
Aquí está mi intento: http://jsfiddle.net/Kx2k5/1/
(probado con éxito en
Fx27
,Ch33
,IE9
,Sf5.1.10
yOp19
)CSS
Básicamente, superpuse un
:after
pseudoelemento sobre el primer círculo (con algunas propiedades heredadas), luego lo recorté conclip()
propiedad, por lo que solo hago visible su sección inferior (donde el círculo se#1
superpone al círculo#5
).Para las propiedades CSS que he usado aquí, este ejemplo debería estar trabajando incluso en IE8 (
box-sizing
,clip()
,inherit
, y son compatibles pseudoelements allí)Captura de pantalla del efecto resultante
fuente
Mi intento también usando
clip
. La idea era tener mitad y mitad para eldiv
. De esa manera, la configuraciónz-index
funcionaría.De modo que puede establecer la parte superior en
z-index: -1
y la inferior enz-index: 1
.Salir:
DEMO AQUÍ
Nota: Probado en IE 10+, FF 26 +, Chrome 33+ y Safari 5.1.7+.
fuente
Aquí está mi camino.
También utilizo un pseudo elemento colocado en la parte superior del primer círculo, pero en lugar de usar un clip, mantengo su fondo transparente y solo le doy una sombra de cuadro insertada que coincide con el color de fondo de los círculos (plateado) así como con un rojo borde para cubrir los lados inferiores derechos del borde del círculo.
Manifestación
CSS (que es diferente del punto de partida)
Producto final
fuente
Lamentablemente, la siguiente es solo una respuesta teórica, ya que por alguna razón no puedo ponerme
-webkit-transform-style: preserve-3d;
a trabajar (tengo que estar cometiendo un error obvio, pero parece que no puedo resolverlo). De cualquier manera, después de leer su pregunta, al igual que con todas las paradojas, me pregunté por qué es solo una imposibilidad aparente, en lugar de una real. En unos segundos me doy cuenta de que en la vida real las hojas se giran un poco, permitiendo así que exista tal cosa. Entonces quería inventar una demostración simple de la técnica, pero sin la propiedad anterior eso es imposible (se dibuja en la capa principal plana). De cualquier manera, aquí está el código base.Y el css:
Y puedes encontrar el código completo aquí .
fuente
JS violín
HTML
CSS
fuente
item2
yitem3
. Y también moví elposition: absolute
in.ix
y#five
enitem
,item2
yitem3
Demostración en vivo de JS Fiddle
También funciona en IE8.
HTML
CSS
fuente