Foros del Web » Programando para Internet » Javascript »

Rollover sobre varias imágenes

Estas en el tema de Rollover sobre varias imágenes en el foro de Javascript en Foros del Web. Hola a todos. Quiero hacer un efecto de rollover sobre las imágenes (thumbnails) de una galería que consiste en cargar otro thumbnail en su lugar ...
  #1 (permalink)  
Antiguo 19/04/2011, 13:11
 
Fecha de Ingreso: julio-2008
Ubicación: Córdoba, Argentina
Mensajes: 266
Antigüedad: 15 años, 9 meses
Puntos: 26
Rollover sobre varias imágenes

Hola a todos.
Quiero hacer un efecto de rollover sobre las imágenes (thumbnails) de una galería que consiste en cargar otro thumbnail en su lugar con los colores alterados (es decir al pasar el mouse cambia la imagenpor una igual con distintos colores). El tema es que si lo hago con capas y CSS, tengo que crear una capa (div) con ID específico para cada imagen y cargar la URL de los fondos (uno cuando no está el mouse encima y otro en el hover), lo que me hace super pesado el archivo CSS teniendo en cuenta que son casi 100 imágenes. ¿Hay alguna forma de hacer este efecto con JavaScript sin utilizar demasiado código? Las imágenes están de acuerdo a su galería en una subcarpeta y numeradas 01, 02, 03... etc. en formato JPG.
Un saludo.
  #2 (permalink)  
Antiguo 19/04/2011, 17:12
Avatar de _cronos2
Colaborador
 
Fecha de Ingreso: junio-2010
Mensajes: 2.062
Antigüedad: 13 años, 10 meses
Puntos: 310
Respuesta: Rollover sobre varias imágenes

¿Podrías poner un ejemplo un poco más claro por favor? Entendí parte de tu petición pero no toda
Saludos (:
__________________
" Getting older’s not been on my plans
but it’s never late, it’s never late enough for me to stay. "
Cigarettes - Russian Red
  #3 (permalink)  
Antiguo 19/04/2011, 20:21
 
Fecha de Ingreso: julio-2008
Ubicación: Córdoba, Argentina
Mensajes: 266
Antigüedad: 15 años, 9 meses
Puntos: 26
Respuesta: Rollover sobre varias imágenes

Hola.
A ver supongamos que tengo este código HTML para mostrar las thumbnails de las imágenes de una galería:
Código HTML:
<table>
	<tr>
		<td><div id="foto01"><a href="fotos/galeria1/01.jpg"></a></div></td>
		<td><div id="foto02"><a href="fotos/galeria1/02.jpg"></a></div></td>
	</tr>
</table> 
Y este CSS para lograr un rollover:
table div {width:100px; height:100px;}
table div a {width:100px; height:100px; display:block;}
#foto01 {background-image:url(fotos/galeria1/thumb1-01.jpg);}
#foto01:hover {background-image:url(fotos/galeria1/thumb2-01.jpg);}
#foto02 {background-image:url(fotos/galeria1/thumb1-02.jpg);}
#foto02:hover {background-image:url(fotos/galeria1/thumb2-02.jpg);}

Bien, esa sería una solución sin JS. Pero si yo tengo muchas galerías y por lo tanto muchas imágenes, debería repetir esas reglas de CSS para cada imagen en un div con ID diferente. Si tengo 80 imágenes, serían 160 líneas en el archivo CSS haciéndolo muy pesado.

Mi pregunta es si hay alguna manera usando JS que tome la ruta del fondo del div (este div que sea una clase común a todas las imágenes donde quiero el efecto) y que al pasar el mouse (onmouseon supongo que sería) cambie la ruta de ese fondo por otra. En este casi debería cambiar fotos/galeria1/thumb1-01.jpg por fotos/galeria1/thumb2-01.jpg.

Espero que se entienda. Saludos.
  #4 (permalink)  
Antiguo 20/04/2011, 04:29
Avatar de _cronos2
Colaborador
 
Fecha de Ingreso: junio-2010
Mensajes: 2.062
Antigüedad: 13 años, 10 meses
Puntos: 310
Respuesta: Rollover sobre varias imágenes

A ver así:
Código HTML:
Ver original
  1. <div onmouseover="this.style.backgroundImage = this.nextElementSibling.href.replace(/(\d{2,}\.jpg)$/, 'thumb2-$1');"><a href="fotos/galeria1/01.jpg"></a></div>
Saludos (:
__________________
" Getting older’s not been on my plans
but it’s never late, it’s never late enough for me to stay. "
Cigarettes - Russian Red
  #5 (permalink)  
Antiguo 20/04/2011, 08:17
Avatar de Adler
Colaborador
 
Fecha de Ingreso: diciembre-2006
Mensajes: 4.671
Antigüedad: 17 años, 3 meses
Puntos: 126
Respuesta: Rollover sobre varias imágenes

Hola

Aunque la respuesta de @_cronos2 (¿Qué tal colega?) es correcta. En algún caso puede que el rollover no sea muy fluido. Para que sea fluido, puedes insertar todas las imágenes un una sola. Con la propiedad css background-position muestras las imágenes y con javascript cambias dicha propiedad

Código Javascript:
Ver original
  1. <style>
  2. #img1 a img, #img2 a img, #img3 a img, ....... {
  3. background: url("sprite.jpg");
  4. background-repeat: no-repeat;
  5. }
  6.  
  7. #img1 a img {
  8. background-position: -32px -6px;
  9. }
  10.  
  11. #img2 a img{
  12. background-position: -32px -37px;
  13. }
  14.  
  15. .....
  16. </style>
  17.  
  18. <p id="img1"><a href="#"><img src="./pixel.gif" alt="" onmouseover="this.style.backgroundPosition = '0 -6px'" onmouseout="this.style.backgroundPosition = '-32px -6px'"/></a></p>
  19. <p id="img2"><a href="#"><img src="./pixel.gif" alt="" onmouseover="this.style.backgroundPosition = '0 -37px'"  onmouseout="this.style.backgroundPosition = '-32px -37px'" /></a></p>

Suerte
__________________
Los formularios se envían/validan con un botón Submit
<input type="submit" value="Enviar" style="background-color:#0B5795; font:bold 10px verdana; color:#FFF;" />
  #6 (permalink)  
Antiguo 20/04/2011, 15:26
 
Fecha de Ingreso: julio-2008
Ubicación: Córdoba, Argentina
Mensajes: 266
Antigüedad: 15 años, 9 meses
Puntos: 26
Respuesta: Rollover sobre varias imágenes

Muchas gracias por sus respuestas, son de gran ayuda.
Saludos.

Etiquetas: rollover
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 20:17.