Foros del Web » Programando para Internet » Javascript »

Funciones con imagenes JS

Estas en el tema de Funciones con imagenes JS en el foro de Javascript en Foros del Web. Hola.. necesito ayuda, estoy realizando una pagina web, donde tengo en mi galería, varias imágenes en tamaño pequeño, las cuales se agrandan al hacer mouseover ...
  #1 (permalink)  
Antiguo 08/09/2015, 17:24
 
Fecha de Ingreso: septiembre-2015
Mensajes: 2
Antigüedad: 8 años, 7 meses
Puntos: 0
Funciones con imagenes JS

Hola.. necesito ayuda, estoy realizando una pagina web, donde tengo en mi galería, varias imágenes en tamaño pequeño, las cuales se agrandan al hacer mouseover y vuelven a su estado normal con mouseout. El problema es que la función que cree para javascript se aplica a una sola imagen, y cuando lo quiero aplicar a las demás no puedo, como debería hacerlo? Soy muy principiante en el tema.

JS=

function initElement()
{
var p = document.getElementById("foo");

p.onmouseover = showMouseOver;
p.onmouseout = showMouseOut;
};

function showMouseOver()
{
var notice = document.getElementById("notice");
notice.style.visibility= "visible";
notice.style.position="absolute";
notice.style.left="185px";
notice.style.top="215px";
notice.style.position="absolute";
notice.style.width="450px";
notice.style.height="253px";
}

function showMouseOut()
{
var notice = document.getElementById("notice");
notice.style.visibility= "hidden";
notice.style.position="absolute";
notice.style.left="185px";
notice.style.top="475px";
notice.style.width="150px";
notice.style.height="84px";
}
window.onload=initElement;


HTML=

<section onload="initElement();">
<section id="foo">
<img src="gotham-cast.png" width="150" height="84"/>
</section>
<div id="notice">
<img src="gotham-cast1.png">
</div>
</section>


CSS=

#foo {
position: absolute;
left: 185px;
top: 475px;
}
#notice{
visibility: hidden;
}
  #2 (permalink)  
Antiguo 09/09/2015, 00:26
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: Funciones con imagenes JS

Bienvenido a Foros del Web.

Delega los eventos al documento, asigna una misma clase para todas las imágenes y cada vez que se produzcan dichos eventos en el documento, toma al elemento afectado, obtén su clase y si es igual al que asignaste a las imágenes, le aplicas el efecto.

Código Javascript:
Ver original
  1. var over = function(event){
  2.         if (event.target.className == "la clase"){
  3.             event.target.style.transform = "scale(1.2)"; //Crece
  4.         }
  5.     },
  6.     out = function(event){
  7.         if (event.target.className == "la clase"){
  8.             event.target.style.transform = "scale(1)"; //Se reduce
  9.         }
  10.     };
  11.  
  12. document.addEventListener("mouseover", over, false);
  13. document.addEventListener("mouseout", out, false);

Mediante la propiedad transform puedes modificar, entre otras cosas, las dimensiones de los elementos.

DEMO

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 09/09/2015, 13:04
 
Fecha de Ingreso: septiembre-2015
Mensajes: 2
Antigüedad: 8 años, 7 meses
Puntos: 0
Respuesta: Funciones con imagenes JS

Tengo una duda, como podría hacer para darle una ubicación diferente a cada imagen? porque en la clase me modifica en todas, y cada una tiene una ubicación diferente. No se si me explico bien,

Gracias!
  #4 (permalink)  
Antiguo 09/09/2015, 13:27
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: Funciones con imagenes JS

Podrías tener un array con las posiciones predeterminadas, luego, tomas al conjunto de imágenes que posean la clase que les asignaste y, en cada iteración, le asignas la posición respectiva a cada imagen.

Por ejemplo, si tuviéramos tres imágenes:
Código Javascript:
Ver original
  1. var posiciones = [{top: "50px", left: "25px"}, {top: "138px", left: "243px"}, {top: "170px", left: "184px"}],
  2.     imagenes = document.querySelectorAll(".la clase"),
  3.     total = imagenes.length;
  4.  
  5. for (var i = 0; i < total; i++){
  6.     imagenes[i].style.marginTop = posiciones[i].top;
  7.     imagenes[i].style.marginLeft = posiciones[i].left;
  8. }

Y si quisieras que las posiciones fueran aleatorias, ya no usarías el array con las posiciones sino los métodos Math.random() y Math.floor().

Código Javascript:
Ver original
  1. for (var i = 0; i < total; i++){
  2.     imagenes[i].style.marginTop = Math.floor(Math.random() * total) + "px";
  3.     imagenes[i].style.marginLeft = Math.floor(Math.random() * total) + "px";
  4. }

Para este último ejemplo, debes de tomar en cuenta que si el total de imágenes es un número bajo, las imágenes no se alejarán mucho de la posición por defecto.

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

Etiquetas: css3, galeria, imagenes, javascript+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 15:28.