He visto que existe en los ejemplos, un slideshow que hace una rotación de imagenes
El tema, es que me gustaría hacer, que al aparecer la nueva imagen, esté como background la imagen anterior, y la nueva se vaya haciendo visible. Un efecto de fade in
He encontrado el siguiente codigo, pero lo que hace, es que la imagen actual se desvanece, y de repente entra la nueva al 100%
Código:
crea imagen basica<script type="text/javascript"> // Browser Slide-Show script. With image cross fade effect for those browsers // that support it. // Script copyright (C) 2004-2011 www.cryer.co.uk. // Script is free to use provided this copyright header is included. var FadeDurationMS=1000; function SetOpacity(object,opacityPct) { // IE. object.style.filter = 'alpha(opacity=' + opacityPct + ')'; // Old mozilla and firefox object.style.MozOpacity = opacityPct/100; // Everything else. object.style.opacity = opacityPct/100; } function ChangeOpacity(id,msDuration,msStart,fromO,toO) { var element=document.getElementById(id); var msNow = (new Date()).getTime(); var opacity = fromO + (toO - fromO) * (msNow - msStart) / msDuration; if (opacity>=100) { SetOpacity(element,100); element.timer = undefined; } else if (opacity<=0) { SetOpacity(element,0); element.timer = undefined; } else { SetOpacity(element,opacity); element.timer = window.setTimeout("ChangeOpacity('" + id + "'," + msDuration + "," + msStart + "," + fromO + "," + toO + ")",10); } } function FadeInImage(foregroundID,newImage,backgroundID) { var foreground=document.getElementById(foregroundID); if (foreground.timer) window.clearTimeout(foreground.timer); if (backgroundID) { var background=document.getElementById(backgroundID); if (background) { if (background.src) { foreground.src = background.src; SetOpacity(foreground,100); } background.src = newImage; background.style.backgroundImage = 'url(' + newImage + ')'; background.style.backgroundRepeat = 'no-repeat'; var startMS = (new Date()).getTime(); foreground.timer = window.setTimeout("ChangeOpacity('" + foregroundID + "'," + FadeDurationMS + "," + startMS + ",100,0)",10); } } else { foreground.src = newImage; } } var slideCache = new Array(); function RunSlideShow(pictureID,backgroundID,imageFiles,displaySecs) { var imageSeparator = imageFiles.indexOf(";"); var nextImage = imageFiles.substring(0,imageSeparator); if (slideCache[nextImage] && slideCache[nextImage].loaded) { FadeInImage(pictureID,nextImage,backgroundID); var futureImages = imageFiles.substring(imageSeparator+1,imageFiles.length) + ';' + nextImage; setTimeout("RunSlideShow('"+pictureID+"','"+backgroundID+"','"+futureImages+"',"+displaySecs+")", displaySecs*1000); // Identify the next image to cache. imageSeparator = futureImages.indexOf(";"); nextImage = futureImages.substring(0,imageSeparator); } else { setTimeout("RunSlideShow('"+pictureID+"','"+backgroundID+"','"+imageFiles+"',"+displaySecs+")", 250); } // Cache the next image to improve performance. if (slideCache[nextImage] == null) { slideCache[nextImage] = new Image; slideCache[nextImage].loaded = false; slideCache[nextImage].onload = function(){this.loaded=true}; slideCache[nextImage].src = nextImage; } } </script>
Código:
crea background<img border="1" src="emily01.jpg" width="200" height="200" id="EmilyPicture">
Código:
con esto llama al script<div id="EmilyPictureBackground"> <img alt="slide show" src="emily01.jpg" width="200" height="200" id="EmilyPicture"> </div>
Código:
Es posible hacer lo que quiero? Gracias <script type="text/javascript"> RunSlideShow("EmilyPicture","EmilyPictureBackground", "emily01.jpg;emily02.jpg;emily03.jpg;emily04.jpg",5); </script>