Foros del Web » Programando para Internet » Javascript »

[SOLUCIONADO] efecto hover con varias imagenes?

Estas en el tema de efecto hover con varias imagenes? en el foro de Javascript en Foros del Web. Hola, estoy buscando un ejemplo de lo que deseo hacer pero no encuentro ninguno, y en algun momento si lo he visto. El tema es ...
  #1 (permalink)  
Antiguo 16/08/2014, 21:26
 
Fecha de Ingreso: mayo-2004
Mensajes: 400
Antigüedad: 20 años
Puntos: 0
efecto hover con varias imagenes?

Hola, estoy buscando un ejemplo de lo que deseo hacer pero no encuentro ninguno, y en algun momento si lo he visto.
El tema es que quiero hacer como una galeria de imagenes y de videos, en las que al colocar el puntero sobre la imagen van pasando varias imagenes de ese album en el mismo div, o en el caso del video, va mostrando partes de ese video como rotando imagenes, en algun sitio lo he visto pero no recuerdo donde.

Como podria hacerlo?

Saludos

Encontre un ejemplo de lo que estoy buscando
http://pixelentity.com/previews/comp.../preview2.html
quisiera hacer eso para imagenes y videos, alguna sugerencia?

Última edición por pakillo; 16/08/2014 a las 22:03
  #2 (permalink)  
Antiguo 16/08/2014, 22:32
Avatar de Alexis88
Philosopher
 
Fecha de Ingreso: noviembre-2011
Ubicación: Tacna, Perú
Mensajes: 5.552
Antigüedad: 12 años, 5 meses
Puntos: 977
Respuesta: efecto hover con varias imagenes?

Lo de las imágenes, que sería un slider o rotador, podrías hacerlo así:

Código HTML:
Ver original
  1. <div id = "slider">
  2.     <img src = "imagen1.jpg" />
  3.     <img src = "imagen2.jpg" />
  4.     <img src = "imagen3.jpg" />
  5.     <img src = "imagen4.jpg" />
  6. </div>

Código CSS:
Ver original
  1. #slider img{
  2.     position: absolute;
  3.     opacity: 0;
  4.     transition: .4s;
  5. }

Código Javascript:
Ver original
  1. var div = document.getElementById("slider"),
  2.     img = div.getElementsByTagName("img"),
  3.     total = img.length,
  4.     i = 0,
  5.     slider = function(){
  6.         img[i].style.opacity = 0;
  7.         i = i == total - 1 ? 0 : ++i;
  8.         img[i].style.opacity = 1;
  9.     },
  10.     interval = null;
  11.  
  12. img[i].style.opacity = 1;
  13.  
  14. div.addEventListener("mouseover", function(){
  15.     slider();
  16.     interval = setInterval(slider, 1500);
  17. }, false);
  18.  
  19. div.addEventListener("mouseout", function(){
  20.     clearInterval(interval);
  21. });

Lo que hago es simple. Primero, le doy una posición absoluta a las imágenes para que queden una sobre otra, las hago opacas al punto de que no se vean y añado un tiempo de transición de 0.4 segundos para que se recree el efecto de difuminado. Luego, en el código JS, tomo al elemento contenedor de las imágenes y en él, busco a todas las imágenes que contenga, obtengo el total de ellas, inicializo un contador con el que iré rotando las imágenes y creo una función en la cual ocultaré a la imagen actual, actualizo al contador y muestro a la siguiente imagen. Más abajo, hago que por defecto se muestre la primera imagen con el efecto de difuminado (alterando su opacidad). Y para que todo esto surta efecto, controlo las acciones con los eventos mouseover y mouseout. Con el primero, ejecuto la función para el cambio de imagen una sola vez y luego establezco un intervalo de 1500 milisegundos o 1.5 segundos para que mientras el cursor se mantenga sobre el elemento contenedor de las imágenes, la función del cambio de imagen se efectúe en intervalos de 1.5 segundos. Cuando retiremos el cursor, limpiamos dicho intervalo, paralizando el accionar de la función.



Para lo de las escenas del vídeo, no sabría cómo ayudarte, pero una búsqueda te podría servir, me parece haber visto lo que mencionas.

Saludos
__________________
«Juro por mi vida y mi amor por ella, que jamás viviré para el provecho de otro hombre, ni le pediré a otro hombre que viva para el mío».

Ayn Rand
  #3 (permalink)  
Antiguo 16/08/2014, 22:37
 
Fecha de Ingreso: mayo-2004
Mensajes: 400
Antigüedad: 20 años
Puntos: 0
Respuesta: efecto hover con varias imagenes?

Muchas gracias Alexis88 se ve bien, voy a seguir buscando lo del video, creo que lo de las imagenes podria utilizar tu ejemplo, porque pensaba que para el video podria crear imagenes del video y colocarlo como tu ejemplo pero seria mucho trabajo.

Saludos
  #4 (permalink)  
Antiguo 17/08/2014, 12:59
Avatar de IsaBelM
Colaborador
 
Fecha de Ingreso: junio-2008
Mensajes: 5.032
Antigüedad: 15 años, 10 meses
Puntos: 1012
Respuesta: efecto hover con varias imagenes?

Cita:
Iniciado por pakillo Ver Mensaje
...... pensaba que para el video podria crear imagenes del video y colocarlo como tu ejemplo pero seria mucho trabajo.
es la manera de hacerlo. has de usar algún programa, yo usé ulead gif animator, para obtener las capturas de los fotogramas. luego tienes dos opciones
  • la expuesta por Alexis88, con el matiz que al sacar el cursor, ha de volver la primera imagen
  • hace un sprites y modificar el background-position
__________________
if(ViolenciaDeGénero) {alert('MUJER ASESINADA');}
  #5 (permalink)  
Antiguo 19/08/2014, 15:11
 
Fecha de Ingreso: mayo-2004
Mensajes: 400
Antigüedad: 20 años
Puntos: 0
Respuesta: efecto hover con varias imagenes?

Hola, gracias por contestar IsaBelM, una pregunta, a la solucion que dio Alexis88 hay alguna forma de que una vez que pase una imagen deseada se pueda hacer click sobre ella y aparezca otra pagina?
como algo asi

<div id = "slider">
<a href="link1">
<img src = "imagen1.jpg" />
</a>
<a href="link2">
<img src = "imagen2.jpg" />
</a>
<a href="link3">
<img src = "imagen3.jpg" />
</a>
</div>
  #6 (permalink)  
Antiguo 19/08/2014, 15:16
Avatar de Alexis88
Philosopher
 
Fecha de Ingreso: noviembre-2011
Ubicación: Tacna, Perú
Mensajes: 5.552
Antigüedad: 12 años, 5 meses
Puntos: 977
Respuesta: efecto hover con varias imagenes?

¿Y has intentado hacerlo como lo propones?

Podrías hacerlo con JavaScript, pero en el actual estándar, el que un elemento de línea contenga a otros elementos es algo viable, de modo que lo que propones es precisamente lo que buscas.

Saludos
__________________
«Juro por mi vida y mi amor por ella, que jamás viviré para el provecho de otro hombre, ni le pediré a otro hombre que viva para el mío».

Ayn Rand
  #7 (permalink)  
Antiguo 19/08/2014, 15:36
 
Fecha de Ingreso: mayo-2004
Mensajes: 400
Antigüedad: 20 años
Puntos: 0
Respuesta: efecto hover con varias imagenes?

Umm entonces no se si hago algo mal porque lo probe antes y no funciona, por eso escribi para ver si faltava algo en el codigo javascript o algo se me paso por alto.
  #8 (permalink)  
Antiguo 19/08/2014, 15:50
Avatar de Alexis88
Philosopher
 
Fecha de Ingreso: noviembre-2011
Ubicación: Tacna, Perú
Mensajes: 5.552
Antigüedad: 12 años, 5 meses
Puntos: 977
Respuesta: efecto hover con varias imagenes?

Te falta hacer rotar a los enlaces junto con las imágenes. Como son los enlaces los que contienen a las imágenes, en lugar de rotar a las imágenes solamente, rota a los enlaces, por lo que solo te quedaría cambiar esto:

Código Javascript:
Ver original
  1. img = div.getElementsByTagName("img")

Por esto:

Código Javascript:
Ver original
  1. img = div.getElementsByTagName("a")

Y lo mismo en la hoja de estilos. Si deseas, conserva los nombres de las variables o cámbialos para que se vea más acorde con el cambio de elementos.

Saludos
__________________
«Juro por mi vida y mi amor por ella, que jamás viviré para el provecho de otro hombre, ni le pediré a otro hombre que viva para el mío».

Ayn Rand
  #9 (permalink)  
Antiguo 19/08/2014, 16:42
 
Fecha de Ingreso: mayo-2004
Mensajes: 400
Antigüedad: 20 años
Puntos: 0
Respuesta: efecto hover con varias imagenes?

gracias, solo una cosa y perdona que moleste, si hago la prueba de los cambios en en mismo jsfiddle.net si puedo ver las imagenes pero si lo hago en local aparece la pantalla en blanco, este es el archivo html

Código HTML:
<!doctype html>
<html>
<head>
<meta charset="utf-8">
<title>Documento sin título</title>


  <style type="text/css">
  div a{
    position: absolute;
    opacity: 0;
    transition: .4s;
}
</style>
<script type="text/javascript">
var div = document.getElementById("slider"),
    img = div.getElementsByTagName("a"),
    total = img.length,
    i = 0,
    slider = function(){
        img[i].style.opacity = 0;
        i = i == total - 1 ? 0 : ++i;
        img[i].style.opacity = 1;
    },
    interval = null;
 
img[i].style.opacity = 1;
 
div.addEventListener("mouseover", function(){
    slider();
    interval = setInterval(slider, 1500);
}, false);
 
div.addEventListener("mouseout", function(){
    clearInterval(interval);
});
</script>
</head>

<body>
<div id = "slider">
    <a href="http://yahoo.com">
    <img src = "http://www.circuito.mx/images/Presa_Brockman_01.jpg" />
    </a>
    <a href="http://google.com">
    <img src = "https://blogdepelusita.files.wordpress.com/2012/06/img201010091724205.jpg?w=590" />
    </a>
    <a href="http://facebook.es">
        <img src = "http://www.fincabarcelona-mallorca.com/images/portfolio/actividades-rurales-mallorca.jpg" /></a>
    <a href="http://live.com">
        <img src = "https://lh3.googleusercontent.com/-Njmduuanh-0/UkpT2-GRNkI/AAAAAAAAKtI/AWqIfTWo1DU/s0/photo.jpg" /></a>
</div>
</body>
</html> 
  #10 (permalink)  
Antiguo 19/08/2014, 17:05
Avatar de Alexis88
Philosopher
 
Fecha de Ingreso: noviembre-2011
Ubicación: Tacna, Perú
Mensajes: 5.552
Antigüedad: 12 años, 5 meses
Puntos: 977
Respuesta: efecto hover con varias imagenes?

Coloca todo el código JavaScript justo antes de la etiqueta </body> para que surta efecto. Sucede que tal y como está, primero carga el código JavaScript y luego los elementos del documento, por lo que estos nunca se verán afectados ya que al momento de cargar el código JavaScript, estos no existían.

Saludos
__________________
«Juro por mi vida y mi amor por ella, que jamás viviré para el provecho de otro hombre, ni le pediré a otro hombre que viva para el mío».

Ayn Rand
  #11 (permalink)  
Antiguo 19/08/2014, 17:09
 
Fecha de Ingreso: mayo-2004
Mensajes: 400
Antigüedad: 20 años
Puntos: 0
Respuesta: efecto hover con varias imagenes?

tienes toda la razón ya funciona, lo único es que al hacer click en cualquier imagen siempre me lleva al ultimo link, en este caso al de live.com
  #12 (permalink)  
Antiguo 19/08/2014, 17:32
Avatar de Alexis88
Philosopher
 
Fecha de Ingreso: noviembre-2011
Ubicación: Tacna, Perú
Mensajes: 5.552
Antigüedad: 12 años, 5 meses
Puntos: 977
Respuesta: efecto hover con varias imagenes?

Modifica el nivel de superposición de cada enlace por cada vez que su visibilidad cambie, para lo cual debes de alterar a la propiedad z-index.

Código Javascript:
Ver original
  1. slider = function(){
  2.     img[i].style.opacity = 0;
  3.     i = i == total - 1 ? 0 : ++i;
  4.     img[i].style.opacity = 1;
  5. }

Y más abajo:

Código Javascript:
Ver original
  1. img[i].style.opacity = 1;
  2. img[i].style.zIndex = 1000;

De este modo, el enlace que sea visible, estará varios niveles por encima del resto, por lo que al pulsarlo, solo tocarás a ese enlace y no al último de la lista.

Saludos
__________________
«Juro por mi vida y mi amor por ella, que jamás viviré para el provecho de otro hombre, ni le pediré a otro hombre que viva para el mío».

Ayn Rand
  #13 (permalink)  
Antiguo 19/08/2014, 17:43
 
Fecha de Ingreso: mayo-2004
Mensajes: 400
Antigüedad: 20 años
Puntos: 0
Respuesta: efecto hover con varias imagenes?

umm por lo que entiendo quedaría así?

Cita:
var div = document.getElementById("slider"),
img = div.getElementsByTagName("a"),
total = img.length,
i = 0,
slider = function(){
img[i].style.opacity = 0;
i = i == total - 1 ? 0 : ++i;
img[i].style.opacity = 1;

},

interval = null;

img[i].style.opacity = 1;
img[i].style.zIndex = 1000;

div.addEventListener("mouseover", function(){
slider();
interval = setInterval(slider, 2500);
}, false);

div.addEventListener("mouseout", function(){
clearInterval(interval);
});
si lo pongo así ahora me aparece solo el primer enlace y no el último
  #14 (permalink)  
Antiguo 19/08/2014, 18:33
Avatar de Alexis88
Philosopher
 
Fecha de Ingreso: noviembre-2011
Ubicación: Tacna, Perú
Mensajes: 5.552
Antigüedad: 12 años, 5 meses
Puntos: 977
Respuesta: efecto hover con varias imagenes?

Fíjate que te faltó actualizar la función slider.
__________________
«Juro por mi vida y mi amor por ella, que jamás viviré para el provecho de otro hombre, ni le pediré a otro hombre que viva para el mío».

Ayn Rand
  #15 (permalink)  
Antiguo 19/08/2014, 23:24
 
Fecha de Ingreso: mayo-2004
Mensajes: 400
Antigüedad: 20 años
Puntos: 0
Respuesta: efecto hover con varias imagenes?

umm quedaria asi?
Cita:
var div = document.getElementById("slider"),
img = div.getElementsByTagName("a"),
total = img.length,
i = 0,
slider = function(){
img[i].style.opacity = 0;
i = i == total - 1 ? 0 : ++i;
img[i].style.opacity = 1;
img[i].style.zIndex = 1000;

},

interval = null;

img[i].style.opacity = 1;
img[i].style.zIndex = 1000;

div.addEventListener("mouseover", function(){
slider();
interval = setInterval(slider, 2500);
}, false);

div.addEventListener("mouseout", function(){
clearInterval(interval);
});
si es asi tampoco lo cambia, de verdad persona por molestarte tanto, intente de varias formas para no seguir pidiendo ayuda pero no lo consigo, soy prácticamente nulo en javascript.
  #16 (permalink)  
Antiguo 20/08/2014, 00:31
Avatar de Alexis88
Philosopher
 
Fecha de Ingreso: noviembre-2011
Ubicación: Tacna, Perú
Mensajes: 5.552
Antigüedad: 12 años, 5 meses
Puntos: 977
Respuesta: efecto hover con varias imagenes?

Vuelve a leer la respuesta en la que te indico los cambios que tienes que hacer, hazlo con calma para que no cometas errores tan obvios.

Saludos
__________________
«Juro por mi vida y mi amor por ella, que jamás viviré para el provecho de otro hombre, ni le pediré a otro hombre que viva para el mío».

Ayn Rand
  #17 (permalink)  
Antiguo 20/08/2014, 00:56
 
Fecha de Ingreso: mayo-2004
Mensajes: 400
Antigüedad: 20 años
Puntos: 0
Respuesta: efecto hover con varias imagenes?

si lo coloco así si funciona

Código Javascript:
Ver original
  1. var div = document.getElementById("slider"),
  2.     img = div.getElementsByTagName("a"),
  3.     total = img.length,
  4.     i = 0,
  5.    slider = function(){
  6.     img[i].style.opacity = 0;
  7.        img[i].style.zIndex = 1;
  8.     i = i == total - 1 ? 0 : ++i;
  9.     img[i].style.opacity = 1;
  10. img[i].style.zIndex = 1000;
  11. },
  12.     interval = null;
  13.  img[i].style.opacity = 1;
  14. div.addEventListener("mouseover", function(){
  15.     slider();
  16.     interval = setInterval(slider, 1500);
  17. }, false);
  18.  
  19. div.addEventListener("mouseout", function(){
  20.     clearInterval(interval);
  21. });

lo único es que si muevo el puntero encima de las imágenes cambia las imágenes rápido, si lo dejo sobre la imagen sin moverlo si hace bien el efecto del slide.
  #18 (permalink)  
Antiguo 20/08/2014, 01:46
Avatar de Alexis88
Philosopher
 
Fecha de Ingreso: noviembre-2011
Ubicación: Tacna, Perú
Mensajes: 5.552
Antigüedad: 12 años, 5 meses
Puntos: 977
Respuesta: efecto hover con varias imagenes?

Déjalo así:

Código Javascript:
Ver original
  1. var div = document.getElementById("slider"),
  2.     img = div.getElementsByTagName("a"),
  3.     total = img.length,
  4.     i = 0,
  5.     slider = function(){
  6.         img[i].style.opacity = 0;
  7.         img[i].style.zIndex = 1;
  8.         i = i == total - 1 ? 0 : ++i;
  9.         img[i].style.opacity = 1;
  10.         img[i].style.zIndex = 1000;
  11.     },
  12.     interval = null;
  13.  
  14. img[i].style.opacity = 1;
  15. img[i].style.zIndex = 1000;
  16.  
  17. div.addEventListener("mouseover", function(){
  18.     interval = setInterval(slider, 1500);
  19. }, false);
  20.  
  21. div.addEventListener("mouseout", function(){
  22.     clearInterval(interval);
  23. });

Lo único que hice fue quitar la invocación a la función slider por cada vez que se pose el puntero del mouse sobre un enlace.

Saludos
__________________
«Juro por mi vida y mi amor por ella, que jamás viviré para el provecho de otro hombre, ni le pediré a otro hombre que viva para el mío».

Ayn Rand
  #19 (permalink)  
Antiguo 20/08/2014, 09:30
 
Fecha de Ingreso: mayo-2004
Mensajes: 400
Antigüedad: 20 años
Puntos: 0
Respuesta: efecto hover con varias imagenes?

Gracias funciona bien, y perdona tantas preguntas.

Saludos

Etiquetas: efecto, hover
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 01:26.