Ver Mensaje Individual
  #2 (permalink)  
Antiguo 25/03/2011, 19:55
Avatar de dggluz
dggluz
 
Fecha de Ingreso: abril-2009
Ubicación: Buenos Aires, Argentina
Mensajes: 525
Antigüedad: 15 años, 6 meses
Puntos: 50
Respuesta: Rotador de DIV con efecto de transicion

Martin_8: debes modificar progresivamente la propiedad opacity (entre 0 que es transparente, y 1 que es opaco), del estilo de los divs según corresponda (para IE es la propiedad filter, seteando el alpha en un valor entre 0 y 100). Panino5001 escribió un genial artículo sobre cómo hacer transiciones en JavaScript.
Personalmente, también modificaría un poco otras cosas de tu código:
Código Javascript:
Ver original
  1. var rotador=function(imgs, fn)
  2. {
  3.     var i=0;
  4.     fn=fn || function(x){return x;};    // La función del efecto, tanto el dominio como la imagen deben ir de 0 a 1
  5.     var rotar=function()
  6.     {
  7.         for(var j=0; j<imgs.length; j++)
  8.         {
  9.             imgs[j].style.display='none';
  10.         }
  11.         var aparecer=function(img)
  12.         {
  13.             var start=new Date().getTime();
  14.             var tiempoTransicion=500;    // En ms
  15.             var transition=function()
  16.             {
  17.                 var now=new Date().getTime();
  18.                 var progress=(now - start) / tiempoTransicion;
  19.                 if(progress<1)
  20.                 {
  21.                     img.style.opacity=fn(progress);
  22.                     setTimeout(function(){transition();}, 20);
  23.                 }
  24.                 else
  25.                 {
  26.                     img.style.opacity=1;
  27.                 }
  28.             };
  29.         };
  30.         // %
  31.         imgs[i % imgs.length].style.display='block';
  32.         aparecer(imgs[i % imgs.length]);
  33.         i++;
  34.         setTimeout(function(){rotar();}, 2000);    // 2000 ms de tiempo de cada imagen
  35.     };
  36. };
  37. rotador([document.getElementById('div1'), document.getElementById('div2'), document.getElementById('div3')], function(x){return x * x;});
Espero que con esto tengas una base de ayuda para seguir. Cualquier cosa volvé a preguntar. ¡Suerte!

PD: no probé el código, pero supongo que debería funcionar, salvo para IE.