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 originalvar rotador=function(imgs, fn)
{
var i=0;
fn=fn || function(x){return x;}; // La función del efecto, tanto el dominio como la imagen deben ir de 0 a 1
var rotar=function()
{
for(var j=0; j<imgs.length; j++)
{
imgs[j].style.display='none';
}
var aparecer=function(img)
{
var start=new Date().getTime();
var tiempoTransicion=500; // En ms
var transition=function()
{
var now=new Date().getTime();
var progress=(now - start) / tiempoTransicion;
if(progress<1)
{
img.style.opacity=fn(progress);
setTimeout(function(){transition();}, 20);
}
else
{
img.style.opacity=1;
}
};
};
// %
imgs[i % imgs.length].style.display='block';
aparecer(imgs[i % imgs.length]);
i++;
setTimeout(function(){rotar();}, 2000); // 2000 ms de tiempo de cada imagen
};
};
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.