Foros del Web » Creando para Internet » CSS »

[SOLUCIONADO] Display div on hover

Estas en el tema de Display div on hover en el foro de CSS en Foros del Web. Hola, Quiero hacer un efecto caption en una imagen, de forma que cuando pases el cursor sobre la imagen se muestre un texto en la ...
  #1 (permalink)  
Antiguo 08/01/2014, 03:29
 
Fecha de Ingreso: mayo-2013
Mensajes: 41
Antigüedad: 10 años, 11 meses
Puntos: 0
Display div on hover

Hola,

Quiero hacer un efecto caption en una imagen, de forma que cuando pases el cursor sobre la imagen se muestre un texto en la parte de abajo.

Para ello muestro una estructura de la forma

Código HTML:
Ver original
  1. <div class="imagen">
  2. <div class="contenido">

Sin pasar el raton cambio la posicion del div contenido y le pongo display:none

Código CSS:
Ver original
  1. .contenido{
  2.     position: relative;
  3.     top: -130px;
  4.     display: none;
  5. }

on hover

Código CSS:
Ver original
  1. #views-bootstrap-grid-1:HOVER .contenido{
  2.     top: -60px;
  3.     height: 60px;
  4.     z-index: 100;
  5.     display: inline;
  6. }

El caso es que al pasar el ratón por encima se me muestra en la posición que yo quiero, pero me también me muestra la posición donde debería estar en el flujo normal del html su posición en blanco. Es decir, se muestra desplazado con la posición que doy en el top, pero además me muestra la posición que debería ocupar sin el desplazamiento.

¿Como puedo hacer que la posición normal del flujo html sin el relative no se muestre?

Muchas gracias

Última edición por pzin; 08/01/2014 a las 03:52 Razón: formato código
  #2 (permalink)  
Antiguo 08/01/2014, 03:59
Avatar de pzin
Moderata 😈
 
Fecha de Ingreso: julio-2002
Ubicación: Islas Canarias
Mensajes: 10.488
Antigüedad: 21 años, 9 meses
Puntos: 2114
Respuesta: Display div on hover

Usa highlight cuando publiques código.

Y cuando publiques código deja claro cómo es ese código, porque esto:

Código HTML:
Ver original
  1. <div class="imagen">
  2. <div class="contenido">

Yo no entiendo bien si es:

Código HTML:
Ver original
  1. <div class="imagen"></div>
  2. <div class="contenido"></div>

O bien:

Código HTML:
Ver original
  1. <div class="imagen">
  2.   <div class="contenido"></div>
  3. </div>

Una detalle bastante importante.

Respecto a la duda, es el comportamiento habitual de una posición relativa, ya que sólo mueve el contenido relativamente a su posición dentro del flujo del HTML sin que esta se pierda y por lo tanto siga ahí.

Si el texto (la clase .contenido) está dentro de la imagen (.imagen), cosa que no quedó clara por aquello de no publicar las etiquetas de cierre correspondientes, entonces lo ideal sería aplicar una posición relativa al contenedor y una absoluta al texto:

Código CSS:
Ver original
  1. div.imagen {
  2.   position: relative;
  3. }
  4.  
  5. div.contenido {
  6.   position: absolute;
  7. }

Y ya ajustas con top, right, bottom y left donde quieres que aparezca en relación a la imagen.
  #3 (permalink)  
Antiguo 08/01/2014, 07:19
 
Fecha de Ingreso: mayo-2013
Mensajes: 41
Antigüedad: 10 años, 11 meses
Puntos: 0
Respuesta: Display div on hover

Hola,

Perdón por los fallos al publicar el mensaje. Los divs imagen y contenido están a la misma altura, no uno dentro de otro.

Ya he arreglado el problema de posicionamiento con margin-top.

El problema ahora es que al posicionarse encima de la imagen se pierde el background-color.

La imagen tiene un z-index menor que el texto con color de fondo. ¿Porque se va el color?

Gracias
Un saludo
  #4 (permalink)  
Antiguo 08/01/2014, 09:18
Avatar de pzin
Moderata 😈
 
Fecha de Ingreso: julio-2002
Ubicación: Islas Canarias
Mensajes: 10.488
Antigüedad: 21 años, 9 meses
Puntos: 2114
Respuesta: Display div on hover

No sé si es el mismo problema que tuve hace algunos años. Si es eso, entonces las soluciones están en ese hilo: [1] y [2].

Qué títulos tan descriptivos los míos.
  #5 (permalink)  
Antiguo 09/01/2014, 02:40
 
Fecha de Ingreso: mayo-2013
Mensajes: 41
Antigüedad: 10 años, 11 meses
Puntos: 0
Respuesta: Display div on hover

Hola Pzin,

Pues parece que tenemos un nuevo caso de z-index alcoholizado.

Pero por lo que veo en las soluciones, ¿pasaba por hacer un posicionamiento relativo en ambos?

Sigue sin cogermelo, tengo el ejemplo aquí [URL="http://desasubas.hol.es/catalogo"]AQUÍ[/URL] es el div azul discreto, no se si será el mismo caso

Muchas gracias
  #6 (permalink)  
Antiguo 09/01/2014, 03:18
Avatar de pzin
Moderata 😈
 
Fecha de Ingreso: julio-2002
Ubicación: Islas Canarias
Mensajes: 10.488
Antigüedad: 21 años, 9 meses
Puntos: 2114
Respuesta: Display div on hover

Pues no era el mismo caso no. El tuyo es una cuestión más mundana.

Estás especificando que al altura del elemento sea cero:

Código CSS:
Ver original
  1. #views-bootstrap-grid-1 .col-lg-4:HOVER .views-field-field-categor-a {
  2.   height: 0px;
  3.   [...]
  4. }

Si la altura es cero, obviamente no se verá el fondo.

Más allá de eso, estás complicando mucho ese efecto. Como te decía en el post de arriba, es más fácil, limpio y robusto tener un elemento con posición absoluta.

Lo básico sería:

Código CSS:
Ver original
  1. div.contenedor {
  2.   position: relative;
  3. }
  4.  
  5. div.efecto {
  6.   position: absolute;
  7.   visibility: hidden;
  8. }
  9.  
  10. div.contenedor:hover div.efecto {
  11.   visibility: visible;
  12. }



Luego también puedes animarlo para que salga moviéndose desde abajo usando transition.
  #7 (permalink)  
Antiguo 12/01/2014, 06:23
 
Fecha de Ingreso: mayo-2013
Mensajes: 41
Antigüedad: 10 años, 11 meses
Puntos: 0
Respuesta: Display div on hover

Hola,

Si mucho mas sencillo como me dices, así queda mejor

Muchas gracias

Etiquetas: contenido, display, hover, html
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 19:55.