
Faire une animation en boucle avec jQuery et setInterval()
Posté par : Neg le : 2009-04-28 21:34:34
Après avoir vu il y'a quelque temps comment faire
un slider horizontal avec jquery reprenons le même principe pour en faire une animation en boucle dont
la démo est ici
le corps de notre page est très simple :
<body>
<div id="conteneur">
<div id="slidebox">
<img src="slideimages/animauto1.jpg"/>
<img src="slideimages/animauto2.jpg"/>
<img src="slideimages/animauto3.jpg"/>
</div>
</div>
</body>
le css pour mettre en page tout ça (dans le head de la page) :
<style type="text/css">
/*fond de la page noir*/
body
{
background:#000000;
}
/*conteneur de la taille des images, centré dans la page avec un overflow hidden pour cacher les images qui dépasse et en position relative pour effectivement cacher les image sous IE*/
#conteneur
{
border:1px solid #ff3300;
margin-left:auto;
margin-right:auto;
height: 400px;
width: 400px;
overflow:hidden;
position:relative;
margin-top:100px;
}
/*slidebox en position relative pour que le slide fonctionne avec une taille trés large pour que les images placées dedans restent alignées horizontalements*/
#slidebox
{
position:relative;
width:5000px;
}
</style>
Il nous manque maintenant que le javascript à appelé aussi dans le header de la page et après avoir inclus la librairie jQuery :
<script type='text/javascript'>
//vitesse de l'annimation
var vitesseSlide='slow';
//largeur d'une image
var tailleMoveSlide=400;
//fonction gérant l'annimation
function anim()
{
//si on est à la troisième position (0+400+400=800px)
if($('#slidebox').css('right')=='800px')
{
//on revient à zéro
$('#slidebox').animate({right: '0'}, vitesseSlide)
}
//si on est à la seconde position (400px)
else if($('#slidebox').css('right')=='0px')
{
//on va à la troisième (position actuelle + taille(400)=800)
$('#slidebox').animate({right: '+='+tailleMoveSlide}, vitesseSlide)
}
//sinon on est dans la 1ère position, on va à la seconde
else
{
$('#slidebox').animate({right: '+='+tailleMoveSlide}, vitesseSlide)
}
}
//au chargement de la page
$(document).ready(function(){
//on lance l'annimation en boucle toute les secondes (1000 miliseconde)
setInterval('anim();',1000);
});
</script>
le travail est terminé.
J'aime, 10 personnes aiment çaCommentaire(s)(2)