Bonjour,
Jai un slider sur lequel j'essaie de mettre une pagination.
En suivant les tutos sur le web (car je suis un débutant), j'ai trouvé 2 systèmes de pagination: l'un avec des puces numérotées de chaque slide, et l'aute pagination avec juste prev et next.
Je les ai combiné pour avoir une pagination style: 1 2 3 4 5 6 7 << >>, mais ne réussie pas à synchroniser les 2 modes car ils restent indépendants l'un de l'autre. Je m'explique : si je suis sur le slide1 et que je clique sur next, j'affiche bien le slide 2 mais la puce numérotée portant le numéro du slide2 n'est pas mise en valeur avec la classe .active .
Quelqu'un pourrait-il m'indiquer comment faire au niveau du js ?
Merci.
Jai un slider sur lequel j'essaie de mettre une pagination.
En suivant les tutos sur le web (car je suis un débutant), j'ai trouvé 2 systèmes de pagination: l'un avec des puces numérotées de chaque slide, et l'aute pagination avec juste prev et next.
Je les ai combiné pour avoir une pagination style: 1 2 3 4 5 6 7 << >>, mais ne réussie pas à synchroniser les 2 modes car ils restent indépendants l'un de l'autre. Je m'explique : si je suis sur le slide1 et que je clique sur next, j'affiche bien le slide 2 mais la puce numérotée portant le numéro du slide2 n'est pas mise en valeur avec la classe .active .
Quelqu'un pourrait-il m'indiquer comment faire au niveau du js ?
Merci.
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="content-type" content="text/html;charset=UTF-8" />
<!--[if lt IE 9]><script src="http://html5shiv.googlecode.com/svn/trunk/html5.js"></script><![endif]-->
<title>mix paginations </title>
<link href="carrousel.css" rel="stylesheet" type="text/css" />
<script src="jquery-1.10.1.min.js" type="text/javascript"></script>
<script src="script.js" type="text/javascript"></script>
</head>
<body>
<div id="carrousel">
<div id="slide1" class="slide"><img src="img/slide1.png"></div>
<div id="slide2" class="slide"><img src="img/slide2.png"></div>
<div id="slide3" class="slide"><img src="img/slide3.png"></div>
<div id="slide4" class="slide"><img src="img/slide4.png"></div>
<div id="slide5" class="slide"><img src="img/slide5.png"></div>
<div id="slide6" class="slide"><img src="img/slide6.png"></div>
<div id="slide7" class="slide"><img src="img/slide7.png"></div>
</div>
</body>
</html>
#carrousel{
border: 5px solid #e7dbc5;
width: 712px;
height: 264px;
margin: 0 auto;
position: relative;
overflow: hidden;
}
.slide{
position: absolute;
top: 0px;
left: 0px;
width: 712px;
height: 264px;
}
.navigation_num{
position: absolute;
bottom: 38px;
right: 70px;
}
.navigation_btn{
position: absolute;
bottom: 38px;
right: 5px;
}
.navigation_num span,.navigation_btn .suivant, .navigation_btn .precedent{
background: #000;
color: #fff;
padding: 2px 4px;
cursor: pointer;
}
.navigation_num span:hover,.navigation_btn .suivant:hover,.navigation_btn .precedent:hover,.navigation_num span.active{
background: yellow;
color: #000;
}
var carrousel = {
nbSlide : 0,
nbCurrent : 1,
elemCurrent : null,
elem : null,
init : function(elem){
this.nbSlide = elem.find('.slide').length;
//Créer la navigation
elem.append('<div class="navigation_num"></div>');
for(var i = 1;i<= this.nbSlide;i++){elem.find('.navigation_num').append('<span>'+i+'</span>');}
elem.append('<div class="navigation_btn"></div>');/* on crée la div navigation avec boutons flèches*/
elem.find(".navigation_btn").append('<span class="precedent"><--</span><span class="suivant">--></span>');/*on crée les span flèches*/
elem.find('.navigation_num span').click(function(){carrousel.gotoSlide($(this).text());})
elem.find(".navigation_btn .suivant").click(function(){carrousel.gotoNextImage(carrousel.nbCurrent+1);});
elem.find(".navigation_btn .precedent").click(function(){carrousel.gotoPreviousImage(carrousel.nbCurrent-1);});
//Initialisation du carrousel
this.elem = elem;
elem.find('.slide').hide();
elem.find('.slide:first').show();
this.elemCurrent = elem.find('.slide:first');
this.elem.find('.navigation_num span:first').addClass('active');
},
//Fonctions de navigation
//numéros
gotoSlide : function(num){
if(num == this.nbCurrent){return false;}
this.elemCurrent.hide();
this.elem.find('#slide'+num).show();
this.elem.find('.navigation_num span').removeClass('active');
this.elem.find('.navigation_num span:eq('+(num-1)+')').addClass('active');
this.nbCurrent = num;
this.elemCurrent = this.elem.find('#slide'+num);
},
//suivant
gotoNextImage : function (num){
if(num <= this.nbSlide) // on vérifie que l'on ne soit pas à la fin des images
{
this.elemCurrent.hide(); // quand on click, cache le slide en cours
this.elem.find("#slide"+ num).show(); // on va ensuite chopper le slide en fonction de son indice
this.nbCurrent = num; // on met à jour l'indice de l'élement en cours
this.elemCurrent = this.elem.find("#slide"+num); // on met à jour l'elem en cours
}
else // sinon on retourne au slide 1
{
num=1;
this.elemCurrent.hide();
this.elem.find("#slide"+ num).show(); // on va ensuite chopper l'elem en fonction de son indice
this.nbCurrent = num; // on met à jour l'indice de l'élement en cours
this.elemCurrent = this.elem.find("#slide"+num); // on met à jour l'elem en cours
}
},
//Precedent
gotoPreviousImage : function (num){
if(num<1) // si on veut aller, en dessous de 0, on retourne au dernier slide
{
num=this.nbSlide;
this.elemCurrent.hide(); // quand on click, cache le slide en cours
this.elem.find("#slide"+ num).show(); // on va ensuite chopper l'elem en fonction de son indice
this.nbCurrent = num; // on met à jour l'indice de l'élement en cours
this.elemCurrent = this.elem.find("#slide"+num); // on met à jour l'elem en cours
}
else
{
this.elemCurrent.hide();
this.elem.find("#slide"+ num).show(); // on va ensuite chopper l'elem en fonction de son indice
this.nbCurrent = num; // on met à jour l'indice de l'élement en cours
this.elemCurrent = this.elem.find("#slide"+num); // on met à jour l'elem en cours
}
},
}
$(function(){
carrousel.init($('#carrousel'));
});