Précédent   Forum des professionnels en informatique > Webmasters - Développement Web > JavaScript > Bibliothèques & Frameworks > jQuery
jQuery Forum d'entraide sur le framework jQuery. Avant de poster : Tutoriels jQuery, FAQ jQuery, Tous les tutoriels JavaScript, Toutes les FAQ JavaScript
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 19/01/2012, 15h17   #1
Membre régulier
 
Avatar de Jiraiya42
 
Inscription : mai 2005
Messages : 656
Détails du profil
Informations personnelles :
Âge : 26

Informations forums :
Inscription : mai 2005
Messages : 656
Points : 76
Points : 76
Par défaut Amélioration d'un slider

Salut!

J'ai suivi, en complément des informations présentes un tuto.

Pour m'entraîner, j'ai essayé d'ajouter des fonctionnalités au slider. Je souhaitais ajouter un bouton "Précédent", un bouton "Suivant" et la mise en pause du défilement lorsque la souris passait au dessus d'une image. Tout cela fonctionne, mais je pense que mon code est loin d'être optimisé et j'aurais aimé avoir l'avis de personnes travaillant régulièrement et depuis longtemps avec jQuery.

Pouvez-vous me donner votre avis et des conseils pour l'améliorer svp ?

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
(function($)
{
    $.fn.imageSlide=function(options)
    {
        //On définit nos paramètres par défaut
        var defauts=
        {
	    'interval': 5000,		//Intervalle entre chaque image, en millisecondes
	    'width': '300px',		//Largeur de la galerie
	    'height': '150px',		//Hauteur de la galerie
	    'scaleWidth': true,		//Doit-on adapter la largeur de l'image ?
	    'scaleHeight': true,	        //Doit-on adapter la hauteur de l'image ?
	    'makeLinks': false,		//Doit-on créer des liens ?
	    'callback': null		//Fonction appelée à chaque nouvelle image
        };
 
	//On fusionne nos deux objets ! =D
        var parametres=$.extend(defauts,options);
 
	//Si l'intervalle est trop court, on le fixe à 1 seconde
	//pour éviter que le défilement soit trop rapide
	parametres.interval=Math.max(1000,parametres.interval);
 
	var play=true;
 
	return this.each(function()
	{
	    //On stocke notre élément dans une variable par commodité
	    var element=$(this);
 
	    //On compte le nombre d'images de notre galerie
	    var totalImages=$(this).find('img').length;
 
	    //Le compteur pour nous permettre de parcourir les images
	    var compteur=0;
 
	    //On insère le bouton permettant d'afficher l'image précédente
	    element.before('<div style="float:left;"><img id="precedent" src="images/precedent.png" style="height: 48px;"></div>');
 
            $('#precedent').hide();
 
	    //On insère le bouton permettant d'afficher l'image suivante
	    element.after('<div style="float:left;"><img id="suivant" src="images/suivant.png" style="height: 48px;"></div>');
 
	    //Lorsque la souris passe au dessus de l'image, on stoppe le défilement
	    element.mouseenter(function()
	    {
	        play=false;
	    });
 
	    //Lorsque la souris quitte l'image, on active de nouveau le défilement
	    element.mouseleave(function()
	    {
	        play=true;
	    });
 
	    //Lorsque l'on clique sur l'image "précédent"
	    $('#precedent').click(function()
	    {
	        play=false; //on stoppe le défilement
		if(compteur>0) //si on est pas sur la première image
		{
		    // On fait disparaître l'image en cours
		    element.find('img.slide_img:eq('+compteur+')').fadeOut(function()
		    {
		        //On recule d'une image
			compteur--;
			//Et on fait donc apparaitre l'image
			element.find('img.slide_img:eq('+compteur+')').fadeIn();
		    });
 
		    //On attend 5 secondes et on active de nouveau le défilement
		    setTimeout(function()
		    {
		        play=true;
		    }, 5000);
		}
 
		if(compteur==1)
		{
		    $('#precedent').hide();
		}
		else
		{
		    $('#suivant').show();
		}
	    });
 
	    //Lorsque l'on clique sur l'image "suivant"
	    $('#suivant').click(function()
	    {
	        play=false; //on stoppe le défilement
		if(compteur<totalImages-1) //si on est pas sur la dernière image
		{
		    // On fait disparaître l'image en cours
		    element.find('img.slide_img:eq('+compteur+')').fadeOut(function()
		    {
		        //On avance d'une image
			compteur++;
			//Et on fait donc apparaitre l'image
			element.find('img.slide_img:eq('+compteur+')').fadeIn();
		    });
 
		    //On attend 5 secondes et on active de nouveau le défilement
		    setTimeout(function()
		    {
		        play=true;
		    }, 5000);
		}
		if(compteur==(totalImages-2))
		{
		    $('#suivant').hide();
		}
		else
		{
		    $('#precedent').show();
		}
	    });
 
	    //On dimensionne le cadre accueillant les images
	    element.css({
		'width': parametres.width,
		'height': parametres.height,
		'border': 'solid black 1px',
		'overflow': 'hidden'
	    })
 
	    .find('img').each(function(id)
	    {
	        if(parametres.scaleWidth)
		{
		    $(this).css({
			'width': '100%'
		    });
		}
		if(parametres.scaleHeight)
		{
		    $(this).css({
			'height': '100%'
		    });
		}
		if(parametres.makeLinks)
		{
		    link=$(this).attr('alt');
		    $(this).wrap("<a href='"+link+"'></a>");
		}
		if(id>0)
		{
		    $(this).hide();
		}
	    });
 
	    setInterval(function()
	    {
	        if(play)
                {
		    element.find('img.slide_img:eq('+compteur+')').fadeOut(function()
		    {
		        if(compteur!=totalImages-1)
			{
			    compteur++;
			}
			else
			{
			    compteur=0;
			}
			//Et on fait donc apparaitre l'image suivante
			element.find('img:eq('+compteur+')').fadeIn(function()
			{
			    //Et si on a une fonction définie, on l'appelle !
			    //Et on lui passe notre image en paramètre
			    if(parametres.callback)
			    {
			        parametres.callback($(this));
			    }
			});
		    });
		}
	    }, parametres.interval);
	});
    }
})(jQuery);
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitionnal//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr" >
	<head>
		<title>Le plug-in imageSlide !</title>
		<meta http-equiv="Content-Type" content="text/html; charset=charset=iso-8859-1" />
		<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1/jquery.min.js"></script>
		<script type="text/javascript" src="plugins/jquery-imageSlide/jquery.imageSlide.js"></script>
		<script type="text/javascript">			
			$(function()
			{
				$('#galerie').imageSlide(
				{
					'width': '500px',
					'height': '300px',
					'makeLinks': true,
					'callback': function(image)
					{
						$('#description').text(image.attr('title'));
					}
				});
			});
		</script>
	</head>
	<body>
		<div style="text-align: center;">
			<h1>Le plug-in imageSlide !</h1>
			<p id="galerie" style="margin: auto; float: left;">
				<img src="images/1.jpg" class="slide_img" title="Paysage large" alt="http://fr.wikipedia.org/wiki/Z%C3%A8bre" />
				<img src="images/2.jpg" class="slide_img" title="Montagne" alt="http://fr.wikipedia.org/wiki/Pont" />
				<img src="images/3.jpg" class="slide_img" title="Montagne brumeuse" alt="http://fr.wikipedia.org/wiki/Plage" />
				<img src="images/4.jpg" class="slide_img" title="Foret" alt="http://fr.wikipedia.org/wiki/Fleur" />
			</p>
			<p id="description">Paysage large</p>
			<p style="tetx-align: right;">Images provenant de <a href="http://www.freephotobank.org/">http://www.freephotobank.org/</a>.</p>
		</div>
	</body>
</html>
Pouvez-vous m'aider svp ?
__________________
"Vous qui entrez ici, abandonnez toute espérance." Dante
Jiraiya42 est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 02h37.


 
 
 
 
Partenaires

Hébergement Web