Présentations d'images
Le plus grand
ennemi de la fréquentation dun site est souvent limpatience du visiteur.
Cest pourquoi il est conseillé de créer de petites pages, rapides à charger.
Cette directive est parfois difficile à suivre. Je repense à lexemple de ce
marchand, qui ne pouvait pas faire autrement que dinsérer les photos de ses
meubles sur ses pages Web. Malgré une subdivision draconienne et une diminution
de la taille de ses images, le temps de chargement de ses pages restait trop
élevé. Java script permet de trouver une solution à ce cas.
Le problème vient en grande
partie du nombre dimages à charger. Pour le résoudre, il faut en afficher une
seule et laisser linitiative du choix au visiteur. Pour ce faire offrons lui
une barre de navigation qui lui permettra de passer dune image à lautre. Pour
une visite plus agréable, donnons lui aussi la possibilité de les faire défiler
automatiquement les unes après les autres. Et enfin, sil cherche un élément
précis, affichons la liste de toutes les images.
Structure du site
La première page, donnant accès à tous les types
darticles, doit se trouver dans la racine principale. Chaque collection
dimages à présenter doit posséder son propre répertoire qui contient la page
de présentation. Les photos sont stockées sous le nom img0.jpg et les pages explicatives sous page0.htm.
Page de
présentation
Une des disposition possible est la suivante : un
tableau de 2 colonnes, dont la partie de gauche sert de barre de navigation et
la partie de droite décran daffichage.

Au travail
Commençons le document et donnons y un titre :
Présentation
<html>
<head>
<title>Presentation</title>
</head>
Au début du corps du document, introduisons nos routines Java scripte.
<body>
<script language="JavaScript">
<!--Cacher à la lecture des anciens navigateurs
var max = 4
var definition = new Array(max-1)
var ImageEnCours = 0
var timeout = 0
var Vitesse = 800
Nous aurons besoin des variables suivantes :
-
Max : le nombre dimages que lon peut afficher.
- Definition : tableau contenant les descriptifs.
- ImageEnCours : numéro de limage affichée.
- Timeout : horloge pour le défilement.
- Vitesse : Vitesse de défilement des images.
Le tableau a été défini : Array (max-1), car il ne
faut pas oublier quun tableau commence par lélément 0. Nous appliquons ce
principe lors de la définition des noms à afficher :
definition[0]="Un"
definition[1]="Deux"
definition[2]="Trois"
definition[3]="Quatre"
Affiche la liste des images
Pour construire la liste des images ou objets disponibles,
il faut obtenir une ligne dans la page Html qui ressemble à :
<a href="#" onclick="ChargeImage(0);">Image 1</a>
Il faut donc écrire dans le document
même :
function AfficheDefinitions()
{
for (var i=0; i < max; i++)
{
sp= "\""
s="<a href="+sp+"#"+sp+" onclick="+sp+"ChargeImage("+i+");"+sp+">" +definition[i]+"</a>"
document.write(s)
document.writeln("<br>")
}
}
Charger une image
Nous arrivons au centre vital de
la page, sans quoi rien ne fonctionnerait.
function ChargeImage(NumImage)
{
document.images[0].src = "img" + (NumImage) +".jpg"
document.links[max].href="page"+NumImage+".htm"
document.links[max+1].href="page"+NumImage+".htm"
}
Lobjet Document, qui est en fait
notre page, contient 2 objets qui nous seront très utiles : Images et
Links. Notre page ne comprenant quune seule photo, nous savons que son index
est 0. Pour changer limage affichée, il suffit de modifier sa propriété scr,
qui représente le chemin de limage affichée. Comme il faut que les liens
menant au descriptif complet de larticle pointe sur la bonne page, utilisons
la table de liens de lobjet Document et modifions le routage. Dans notre
exemple, lavant dernier lien est celui de limage et le dernier celui du texte
situé juste en dessous.
Un peu de
navigation
Le traitement des quatre boutons de navigation se fait simplement :
function PremiereImage()
{
ImageEnCours=0
ChargeImage(ImageEnCours)
}
function ImagePrecedente()
{
ImageEnCours--
if (ImageEnCours < 0)
{
ImageEnCours = max-1
}
ChargeImage(ImageEnCours)
}
function ImageSuivante()
{
ImageEnCours++
if (ImageEnCours > max-1 )
{
ImageEnCours = 0
}
ChargeImage(ImageEnCours)
}
function DerniereImage()
{
ImageEnCours = max-1
ChargeImage(ImageEnCours)
}
Il faut simplement être attentif
au fait que la dernière image a toujours la valeur max-1 et que la première a
comme valeur 0. Il ne faut pas non plus oublier, à chaque opération, de
mémoriser la page affichée dans la variable ImageEnCours, particulièrement dans
PremiereImage et dans DerniereImage.
Ainsi lors de lutilisation du défilement continu, la routine commencera par
limage suivante.
Défilement continu
Le défilement continu se fait tout simplement en affichant
limage suivante et en initialisant le timer avec la vitesse définie lors de
linitialisation des variables.
function ImageContinu()
{
ImageSuivante()
timeout = setTimeout("ImageContinu()", Vitesse)
}
function Arret()
{
clearTimeout(timeout)
}
// -->
<script>
La page HTML
<table border="0" width="500">
<tr>
<td width="150">
<form method="POST">
<p>
<input type="button" name="defile" value="Défile" onClick="ImageContinu()">
<input type="button" name="stop" value="Stop" onClick="Arret()">
</p>
<p>
<input type="button" name="prem" value="¦<" onClick="PremiereImage()">
<input type="button" name="moins" value="<" onClick="ImagePrecedente()">
<input type="button" name="plus" value=">" onClick="ImageSuivante()">
<input type="button" name="der" value=">¦" onClick="DerniereImage()">
</p>
</form>
<p>
<br>
<script language="JavaScript">
AfficheDefinitions()
</script>
<br>
<br>
<br>
</p>
</td>
<td>
<p align="center">
<a href=""><img src="" border="0" width="200" height="100"></a>
<br>
<a href="">Voir le détails</a>
</p>
</td>
</tr>
</table>
<script language="JavaScript">
ChargeImage(0)
</script>
</body>
</html>
Cette dernière partie est plus précisément du HTM et de la
mise en page. Deux éléments sont importants : AfficheDefinitions() et
chargeImage(0) car ils complètent la mise en page et mettent en place les
divers éléments.
Dernier mot
A vous dutiliser cet exemple dans vos page Web. Mais
noubliez pas deux choses : La référence aux images et aux liens peut varier.
Si le logo de votre entreprise précède limage daffichage, lindex de cette
dernière sera 1 et non plus 0.
Lexemple est utilisable, tel quel, pour 20 à 30 images
à afficher. Si vous en avez plus, il
faudra travailler avec deux frames, au lieu dun tableau à deux colonnes. La
méthode est la même, mais il faut tenir compte des cadres et subdiviser ces
routines.
Essayez davoir des images de
même dimension. Sur Internet Explorer, il est possible de ne pas tenir compte
de la dimension de la première image chargée. Netscape, par contre, va adapter
toutes les images à la taille de la première qui a été affichée. Alors
attention aux déformations.
Mais vous nêtes pas obligés
dêtre aussi sérieux avec ce source. Pourquoi ne pas ladapter pour nous faire
partager vos dernières photos de vacances.
Voir l'exemple
|