J'essaie de faire une simple rotation d'image sur la page d'accueil. Sous le capot, je suis en train de lire un répertoire puis de remplir les urls des images en tableau. Ce que je veux faire est de fondre les images. Si c'était juste une question de montrer le prochain, c'est facile, mais comme j'ai besoin de cross-fader, c'est un peu plus difficile. Je pense que ce que je veux faire est de faire les fondus en appelant animate()
sur la valeur opacity
de la balise <img>
, et entre permuter la propriété css background-image
de la <div>
englobante. Mais les résultats ne sont pas si bons. J'ai utilisé des outils pour plus de diaporamas complets, mais je ne veux pas l'ajout d'un plugin si je peux l'éviter, et un simple crossfade semble être plus facile.Diaporama jQuery en boucle avec des fondus en transparence
Voici mon JavaScript (j'utilise jQuery 1.3.2):
var slideshow_images = ["http:\/\/example.com\/wordpress\/wp-content\/themes\/testtheme\/sidebar-home-bg\/bg1.jpg","http:\/\/example.com\/wordpress\/wp-content\/themes\/testtheme\/sidebar-home-bg\/bg2.jpg","http:\/\/example.com\/wordpress\/wp-content\/themes\/testtheme\/sidebar-home-bg\/bg3.jpg"];
var slideshow_index = 0;
var delay = 4000;
var swapSlides = function() {
var slideshow_count = slideshow_images.length;
// initialize the background to be the current image
$('#home-slideshow').css({
'background-image': 'url(' + slideshow_images[slideshow_index] + ')',
'background-repeat:': 'no-repeat',
'width': 200,
'overflow': 'hidden'
});
slideshow_index = ((slideshow_index + 1) == slideshow_count) ? 0 : slideshow_index + 1;
// fade out the img
$('#home-slideshow img').animate({opacity: 0}, delay);
// now, the background is visible
// next change the url on the img
$('#home-slideshow img').attr('src', slideshow_images[slideshow_index]);
// and fade it up
$('#home-slideshow img').animate({opacity: 1.0}, delay);
// do it again
setTimeout('swapSlides()', 4000);
}
jQuery(document).ready(function(){
if (swapSlides) {
swapSlides();
}
});
Et voici le balisage j'utilise:
<div id="home-slideshow"><img src="http://example.com/wordpress/wp-content/themes/testtheme/sidebar-home-bg/bg1.jpg" alt="" /></div>