Foros del Web » Creando para Internet » CSS »

5min-Ayuda con z-index

Estas en el tema de 5min-Ayuda con z-index en el foro de CSS en Foros del Web. Buenos días/tarde/noche a todos soy Moisés y les deseo un prospero año 2012. Bueno mi problema es el siguiente: tengo 6 div, tres de ellos ...
  #1 (permalink)  
Antiguo 05/01/2012, 13:41
 
Fecha de Ingreso: febrero-2011
Mensajes: 6
Antigüedad: 13 años, 9 meses
Puntos: 0
Pregunta 5min-Ayuda con z-index

Buenos días/tarde/noche a todos soy Moisés y les deseo un prospero año 2012.
Bueno mi problema es el siguiente: tengo 6 div, tres de ellos son padres y cada uno de estos tienen un div hijo. Lo que quiero es que cada div hijo este por detrás de su padre, pero delante de los demás div.

Solo consigo este resultado con div hermanos, cosa que no entiendo, porque creía que la propiedad z-index actuaba independientemente de si es padre, hijo o hermano.
Lo he intentado todo como nunca 6 días con el mismo problema. He intentado con todas las position, con valores muy altos de z-index, con !important y nada.
Como ya dije solo lo consigo un resultado similar cuando son hermanos, pero no me convence ya que al ser hermanos para poder obtener el resultado de al pasar el mouse por DIV1 y que se muestre DIV2 utilizo #DIV1:hover + #DIV2{Visibility:visible;} este se muestra, pero al intentar posicionarme sobre el desaparece, solo se muestra mientras este sobre DIV1.
Sin embargo cuando estos son padre e hijo (#DIV1:hover #DIV2 {Visibility:visible;}) puedo posicionarme sobre DIV2 sin miedo a que se vuelva a ocultar.

Código CSS:
Ver original
  1. #P1, #P2, #P3
  2. {
  3.    border:2px solid #000;
  4.    background-color:#06F;
  5.    position:absolute;
  6.    left:5px;
  7.    width:155px;
  8. }
  9. #P1{top:15px;z-index:100 !important;}
  10. #P2{top:45px;z-index:80 !important;}
  11. #P3{top:75px;z-index:60 !important;}
  12.  
  13. #H1, #H2, #H3
  14. {
  15.    border:2px solid #000;
  16.    background-color:#0C0;
  17.    position:absolute;
  18.    left:80px;
  19.    width:80px;
  20.    text-align:center
  21. }
  22. #H1{top:15px;z-index:90 !important;visibility:hidden;}
  23. #H2{top:-2px;z-index:70 !important;visibility:hidden;}
  24. #H3{top:-2px;z-index:50 !important;visibility:hidden;}
  25.  
  26. #P1:hover + #H1{visibility:visible;}
  27. #P2:hover #H2{visibility:visible;}
  28. #P3:hover #H3{visibility:visible;}

Código HTML:
Ver original
  1. <div id="P1">PADRE1</div>
  2. <div id="H1"><br />HIJO1 Debajo del padre encima de los demás.</div>
  3. <div id="P2">PADRE2<div id="H2"><br />HIJO2 Debajo del padre encima de los demás.</div></div>
  4. <div id="P3">PADRE3<div id="H3"><br />HIJO3 Debajo del padre encima de los demás.</div></div>

Aquí tenéis el ejemplo [URL="http://galeon.com/prueba-moi/Untitled-2.html"]http://galeon.com/prueba-moi/Untitled-2.html[/URL]
La primera fila funciona, ya que son hermanos, pero no puedes posicionar el mouse sobre HIJO1.
Sin embargo si puedes hacerlo con los otros dos (HIJO2 e HIJO3), pero estos no se sitúan detrás de sus padres.

En definitiva, quiero obtener el resultado de la imagen siendo estos padre e hijo.


Muchas gracias a todos de antemano
Saludos.
  #2 (permalink)  
Antiguo 05/01/2012, 14:01
Avatar de memoadian
Colaborador
 
Fecha de Ingreso: junio-2009
Ubicación: <?php echo 'México'?>
Mensajes: 3.696
Antigüedad: 15 años, 5 meses
Puntos: 641
Respuesta: 5min-Ayuda con z-index

yo en lo personal, usaria javascript, y un onclick u onmouseover que cambie el z-index del hijo y obviamente el display, no estoy seguro si se puede lograr ese mismo efecto con css, que creo que ya se puede pero no estoy seguro.
  #3 (permalink)  
Antiguo 05/01/2012, 17:30
 
Fecha de Ingreso: noviembre-2009
Mensajes: 846
Antigüedad: 15 años
Puntos: 34
Respuesta: 5min-Ayuda con z-index

Se puede hacer con CSS sin necesidad de JavaScript.

Tu error esta en que z-index solo se puede usar en elementos posicionados, es decir, en elementos que tengan position absolute, fixed o relative.

Un saludo :)
  #4 (permalink)  
Antiguo 05/01/2012, 22:15
 
Fecha de Ingreso: febrero-2011
Mensajes: 6
Antigüedad: 13 años, 9 meses
Puntos: 0
Respuesta: 5min-Ayuda con z-index

Muchas gracias amigo memoadian, pero preferiria hacerlo en css.
mariomon17 no entiendo lo que quieres decir. ¿Podrias decirme en que linea esta mi error o decirme que deberia cambiar?
No se si no has visto las etiquetas "position" que están en la lineas 5 y 17 de css o si las he colocado mal. Así que si me pueden ayudar y resolver estas dudas que me invaden la cabeza gracias a mariomon17, lo agradeceria mucho.
De todas maneras y aunque la respuesta me sea de poca ayuda gracias por responder.
  #5 (permalink)  
Antiguo 06/01/2012, 10:04
Colaborador
 
Fecha de Ingreso: junio-2007
Mensajes: 5.798
Antigüedad: 17 años, 5 meses
Puntos: 539
Respuesta: 5min-Ayuda con z-index

Lo primero es sopesar y elegir el marcado html en función del contenido y de lo que queramos hacer con él.

Lo primero lo desconocemos, Moises no lo ha comentado. Pero me arriesgaré.
Tiene toda la pinta de poderse realizar con listas anidadas sin faltar demasiado a la semántica.
Se lo enfoco como si fuese una lista con contenido desplegable (oculto inicialmente y visible al :hover)
Código HTML:
Ver original
  1. <ul>
  2. <li><span>padre 1</span>
  3.       <div> contenido a mostrar</div>
  4. </li>
  5. ...
  6. </ul>
Código CSS:
Ver original
  1. li > span {
  2.    position: relative;
  3.    display: block;
  4.    z-index: 1;
  5.    /*resto de propiedades*/
  6.    }
  7. li > div {
  8.    display: none;
  9.    position: absolute;
  10.    /*resto de propiedades*/
  11.    }
  12. li > span:hover {z-index: 5;}
  13. li > span:hover ~ div {
  14.    z-index: 2;
  15.    /*resto de propiedades*/
  16.    }
Así se evitará enfrentarse a que los hijos tengan un z-index mejor que su ancestro, pues ya estará trabajando con hermanos.

Nota: advertir que sólo contemplo el tema del z-index, sin entrar en cuestiones de posicionamiento, medidas, etc.
  #6 (permalink)  
Antiguo 06/01/2012, 13:35
 
Fecha de Ingreso: noviembre-2009
Mensajes: 846
Antigüedad: 15 años
Puntos: 34
Respuesta: 5min-Ayuda con z-index

Cierto, no vi los position. Perdon.
El ejemplo de kseso? funciona perfectamente ;)

Un saludo.
  #7 (permalink)  
Antiguo 08/01/2012, 07:00
 
Fecha de Ingreso: febrero-2011
Mensajes: 6
Antigüedad: 13 años, 9 meses
Puntos: 0
Respuesta: 5min-Ayuda con z-index

Os he mostrado un imagen de lo que quiero conseguir.
Os he mostrado el HTML y el CSS.
Os he mostrado un ejemplo de la web.
---Os he mostrado un ejemplo cuando son hermanos que si me funciona. Pero no me gusta el resultado.
---Os he mostrado un ejemplo cuando son padre e hijo que no me funciona.
Y pedia que me ayudaseis a conseguir el aspecto de la imagen, siendo estos PADRE e HIJO.
Aunque no hayais sabido ayudarme enteramente a conseguir lo que pedia (linea de arriba) kseso? me hizo prender la bombilla al poner la siguiente fila de código li > span:hover {z-index: 5;}.
Ahora quisiera que me respondieseis a una cosa. ¿Se puede en Mozilla Firefox poner un div hijo por detrás de su div padre? Si es asi ponedme un ejemplo claro y completo.
A continuacion dejo dos paginas web.
La 1ª http://galeon.com/prueba-moi/Untitled-4.html similar al ejemplo de kseso? en la que se utiliza tres etiquetas li, span y div. que funciona en Chrome, Safari y Firefox.
La 2ª http://galeon.com/prueba-moi/Untitled-6.html con dos etiquetas div padre y div hijo funciona correctamente en Chrome y Safari, pero no se porque Firefox no reconoce el z-index muchísimo menor del hijo respecto al padre.
Tenéis ahí los dos ejemplos creo que todos sabemos mirar su código fuente, así que ayudadme por favor que estoy empezando a perder el amor que sentía a la programación al ver que hay que programar 5 paginas diferentes una para cada navegador.
  #8 (permalink)  
Antiguo 08/01/2012, 15:58
Avatar de memoadian
Colaborador
 
Fecha de Ingreso: junio-2009
Ubicación: <?php echo 'México'?>
Mensajes: 3.696
Antigüedad: 15 años, 5 meses
Puntos: 641
Respuesta: 5min-Ayuda con z-index

Cita:
Iniciado por moises_13__35 Ver Mensaje
así que ayudadme por favor que estoy empezando a perder el amor que sentía a la programación al ver que hay que programar 5 paginas diferentes una para cada navegador.
Eso te hace perder el amor?

entonces no sigas adelante hermano, estas cosas son las que me hacen pensar más

por eso decia lo de javascript, asi todos contentos pero quieres puro css y luego mueres.

suerte.
  #9 (permalink)  
Antiguo 08/01/2012, 17:39
Avatar de ZoroRoronoa  
Fecha de Ingreso: marzo-2011
Ubicación: California, USA
Mensajes: 824
Antigüedad: 13 años, 7 meses
Puntos: 116
Respuesta: 5min-Ayuda con z-index

Ok, te ayudamos...
Mira este code... Es un ejemplo solamente.
Tomando el mismo que kseso? te dio.

Pero completo... analizalo.
Código HTML:
Ver original
  1. li > span {position:relative; display:block; z-index:1; background:red; width:300px; margin-top:5px;}
  2. li > div {display:none; position:absolute; background:green; height:120px;}
  3. li > span:hover {z-index:5;}
  4. li >span:hover ~ div {z-index:2; display:block;}
  5. </style></head>
  6. <ul>
  7.     <li>
  8.         <span>title 1</span>
  9.         <div> a mostrar 1</div>
  10.     </li>
  11.     <li>
  12.         <span>title 2</span>
  13.         <div> a mostrar 2</div>
  14.     </li>
  15.     <li>
  16.         <span>title 3</span>
  17.         <div> a mostrar 3</div>
  18.     </li>
  19. </ul>
  20. </body>
  21. </html>

Saludos.

PD: Es imposible hacerlo si o si con "padre e hijo", aunque al padre le pongas un z-index "un millon", el hijo siempre estara por encima de el.
No le pierdas el amor, mejor aprende a ser "semantico" y la "teoria" del "funcionamiento" del CSS.

PD2: Imaginate... querer hacer un carro de gasolina que soporte 30 pasajeros con plastilina...
Si o si, si no, mejor ya no me dedico a nada....
Es ironico, no crees?

1.- Esa alternativa que te da kseso? y la cual use yo, es la definitiva.
2.- O bien como te dicen... usa JavaScript.
3.- O por ultimo... Todo saldria bien usando "padre e hijo" pero tendrias que quitar eso de "QUE APAREZCA ABAJO DEL PADRE", pues es imposible asi como lo planteas lograrlo.
__________________
Programador jQuery & PHP

Última edición por ZoroRoronoa; 08/01/2012 a las 18:02
  #10 (permalink)  
Antiguo 08/01/2012, 20:21
 
Fecha de Ingreso: febrero-2011
Mensajes: 6
Antigüedad: 13 años, 9 meses
Puntos: 0
Respuesta: 5min-Ayuda con z-index

Cita:
Iniciado por memoadian Ver Mensaje
estas cosas son las que me hacen pensar más
por eso decia lo de javascript, asi todos contentos pero quieres puro css y luego mueres.

suerte.
Jajaja muero muero
Lo que no comprendo es porque Chrome y Safari interpretan el css como tiene que ser, porque según he leído que el z-index funciona independiente del padre que del hijo. Entonces si es así porque Firefox no interpreta bien esta propiedad.

Bueno yo de momento tengo esta solución siendo padre e hijo http://galeon.com/prueba-moi/Untitled-4.html
Ventajas: pues que consigo el resultado que quiero.
Desventajas: tengo que utilizar una etiqueta demás que está en vacía.

Aquí esta la otra opción http://galeon.com/prueba-moi/Untitled-6.html con solo dos etiquetas como tiene que ser, padre e hijo.
Ventajas: solo dos etiquetas.
Desventajas: Firefox no le gusta esto y no quiere interpretarlo como bien lo hacen Chrome y Safari.

El motivo por el que quiero que sean padre he hijo es que cuando estos son padre e hijo (#DIV1:hover #DIV2 {Visibility:visible;}) puedo posicionarme sobre DIV2 sin miedo a que se vuelva a ocultar. Pero cuando son hermanos usamos más (+) o la virgulilla (~) (#DIV1:hover + #DIV2 {Visibility:visible;} o #DIV1:hover ~ #DIV2 {Visibility:visible;}) al intentar posicionarme sobre DIV2 este se oculta (Visibility:hidden;) y yo quiero que los usuarios puedan posicionarse sobre el DIV2 para seleccionar, copiar o simplemente porque les sea mas cómodo.

La otra condición que queria era que el Div padre esté por delante que el Div hijo.

En definitiva tras leer el mensaje de
Cita:
Iniciado por ZoroRoronoa Ver Mensaje
PD: Es imposible hacerlo si o si con "padre e hijo", aunque al padre le pongas un z-index "un millon", el hijo siempre estara por encima de el.
El tema se termina, a menos que alguien nos de otra opción (en CSS).
Así que si alguien en el futuro esta en la misma situación que yo, le sugeriría que usara este ejemplo http://galeon.com/prueba-moi/Untitled-4.html ya que aunque utiliza una etiqueta demás da el resultado esperado o utilizar JS como dicen algunos amigos :D.

Muchísimas gracias a todos y perdón por todas las molestias causadas, lo único que espero es quitar de dudas a otros como yo que cayeron en las incoherencias de z-index :D
  #11 (permalink)  
Antiguo 10/01/2012, 08:26
Colaborador
 
Fecha de Ingreso: junio-2007
Mensajes: 5.798
Antigüedad: 17 años, 5 meses
Puntos: 539
Respuesta: 5min-Ayuda con z-index

Como esta intro
Cita:
Iniciado por moises_13__35 Ver Mensaje
Os he mostrado un imagen de lo que quiero conseguir.
Os he mostrado el HTML y el CSS.
Os he mostrado un ejemplo de la web.
---Os he mostrado un ejemplo cuando son hermanos que si me funciona. Pero no me gusta el resultado.
---Os he mostrado un ejemplo cuando son padre e hijo que no me funciona.
Y pedia que me ayudaseis a conseguir el aspecto de la imagen, siendo estos PADRE e HIJO.
Aunque no hayais sabido ayudarme enteramente a conseguir lo que pedia...
parece que es en respuesta a
Cita:
Iniciado por kseso? Ver Mensaje
Lo primero es sopesar y elegir el marcado html en función del contenido y de lo que queramos hacer con él.

Lo primero lo desconocemos, Moises no lo ha comentado. Pero me arriesgaré.
Matizo o amplio o explico mejor:
Al planificar el marcado html es básico saber qué contendrán dichas etiquetas y qué pretendemos hacer sobre ellas vía css (en este caso).
Con la información facilitada, que no la he calificado en ningún momento, yo al menos no se si pretende hacer, por ejemplo, un menú desplegable o unas tabs.
De ahí que sugiriese con mucha cautela y como ejemplo de aproximación la posibilidad de crear una lista (ul).

Si ha intentado por activa y pasiva el tema del z-index padre/hijo y en casi todos le funciona menos en firefox, y si su código estuviese libre de errores (pase los validoadores) entonces ya tiene la respuesta. Que el comportamiento yo creo que más que un bug es una cuestión de concepto, ¿puede estar un elemento por debajo (eje z) del que lo contiene? Si el z-index es heredado, esto es, se aplica a la caja declarada y a todo su contenido, si declaramos un nuevo z-index a un hijo ¿el nuevo valor debería modificar al asignado a su padre? Recuerde que en css no hay selector de ascendente.

Si quiere seguir con la estructura padre-hijo sin superponer, hágalo como siempre se han realizado los menús desplegables. Posicionados respecto a su contenedor con el punto exacto (al px).
Y para evitar su ocultación al :hover, también está presente en muchas realizaciones:
Código CSS:
Ver original
  1. .padre:hover .hijo, padre:hover .hijo:hover {display: block; position:...}
por ejemplo.

Complementario:
Hace unas fechas hubo una consulta parecida, no exactamente igual, a la suya:
http://www.forosdelweb.com/f53/z-ind...-texto-967465/

Última edición por kseso?; 10/01/2012 a las 08:32

Etiquetas: hover, z-index, fondo
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 06:43.