OCT
04
Javascript fading et resizing d'images
04.10.2007 | | Auteur : Ayashi | Catégorie : Programmation
Aujourd'hui tout bon site de photos de voyage possède un script de galerie ( simple viewer en flash ou smooth gallery en javascript sont de très bon exemples. Ces scripts souvent faciles à mettre en place n'en restent pas moins obscurs aux personnes voulant comprendre leur fonctionnement interne. Cet article nous montre comment mettre en place une galerie assez simple basée autour de code javascript / css :
  • Accepte un tableau d'images / descriptions en entrée
  • Possède un système de preloader pour les images
  • Effectue un effet de fading entre les images
  • Redimensionne la taille du viewer en fonction des images
Ce script est normalement facile à intégrer dans des pages web existantes. Vous pouvez le modifier pour qu'il s'intègre mieux dans le design de votre site!

Le plus compliqué pour ce genre d'application et de pouvoir proposer une interopérabilité avec un maximum de navigateurs. La fonction de fading par exemple va devoir utiliser un attribut CSS différent suivant le navigateur utilisé :
  • Le standard CSS : object.style.opacity ( valeur entre 0 et 1 )
  • Sous mozilla : object.style.MozOpacity ( valeur entre 0 et 1 )
  • Sous Konqueror : object.style.KhtmlOpacity ( valeur entre 0 et 1 )
  • Sous Internet Explorer : object.style.filter = 'alpha(opacity=)' ( valeur entre 0 et 100 )
Le standard restant object.style.opacity qui n'en doutons pas sera implémenté un jour sur tous les navigateurs !



Commencons par créer un tableau à deux dimensions qui va contenir la liste des images du slideshow ainsi que leur description :
Il est facile de récupérer le nombre d'images : Pic.length, l'URL de la première image : Pic[0][0] ou encore sa légende : Pic[0][1]. Intéressons nous maintenant au preloader! Il va nous permettre de ne commencer le fade out qu'une fois que nous sommes certain de pouvoir afficher l'image suivante ( cela évite un fade in vers une image qui n'est pas encore dans le cache et qui peut donc mettre du temps à apparaitre ).
Ce bout de code lance le téléchargement de l'image dans la variable Loader et vérifie toutes les 200ms si l'image a pu être récupérée. Une fois le téléchargement complet de l'image validé, il l'affiche. La variable Loader contient outre le status de téléchargement deux propriétés très intéréssantes : width et height qui permettent de déterminer la taille de l'image. ( Attention au cache du navigateur si vous changez les images en conservant un nom identique ). Regardons de plus pres la fonction de shading :
J'ai trouvé ce code compatible avec un grand nombre de navigateurs sur le site Cross-browser BlendTrans Filter JavaScript. Il suffit de lui passer l'opacité à appliquer à l'objet ( entre 0 et 100 ) et l'ID de l'object sur lequel appliquer la transparence en paramètre. Pour faire un effet de fondus utilisons des timers :
Ce code effectue un fondus 0% -> 100% de l'objet possedant l'ID MonObject.

Pour voir ce script en action, cliquez ici!, pour le télécharger, cliquez ici.
Tags : javascript, image, fade, resize | Digg!
Commentaires  | Ajouter un commentaire
tetrix
02.01.08 / 8:00
merci, tres interessant.
molive
30.10.07 / 11:23
d'abord merci pour le tuto, très bien car comme dit par emile_zoulou : rare...j'ai cependant une petite question au sujet du fading :je ne comprend pas pourquoi on doit multiplier la variable speed par un timer qui s'incrémente à chaque tour (j'ai testé sans et ça ne marche pas). Dites-moi si je me trompe, mais apparemment le délai entre deux états de transparence va donc augmenter de 0 à 300 ms, ce qui voudrait dire qu'au final, la durée totale du fading va être : 0*3 1*3 2*3 3*3 ... 100*3 = 15150 (15 secondes) ???merci à celui qui voudra m'expliquer car la couche alpha de mon cerveau est à 0 (et elle ne s'incrémente pas) !
emile_zoulou
16.10.07 / 16:42
Très bon tutorial, j'ai eu tellement de mal à  trouver une explication simple au fonctionnement du fade! Merci!
Rechercher sur internet  ?  | Rechercher!
Trackback
Utilisez le lien http://www.sunyday.net/trackback-Javascript-images-fading-et-resizing pour faire un trackback vers cette article depuis votre site web. Les trackbacks sont soumis à une approbation mutuelle et susceptibles d'être supprimés si jugés indésirables.
Retrieve RSS feed. Get notified by eMail. Meteo Parser.
Computing widgets...
Jean-Damien POGOLOTTI© 2k6-2k7 | Design // Code

Qui suis-je?

Touche à tout restant bouche bée devant la complexité et la cohérence de ce monde je m'évertue à essayer d'en comprendre les rouages. En passant par la météorologie, la physique ou bien l'informatique, tout est une raison d'apprendre!
Comment les gens arrivent-il ici?
 regexp  couche  html  anomalie  en  url  la  command  nuls  script  image  magn%C3%A9tique  conversion  active  javascript  adresse  une  protocole  resize  cli  convertir  gd  snmp  web  fade  gps  line  et  dans  mercator  map  de  directory  le  fading  regex  CODE  browser  un  sunyday  google  coordonn%C3%A9es  synop  ntfs  PAGE  photovoltaique  d%27ozone  php  ldap  ajax  find  du  module  +  trou  lldp  authentification  longitude  champ  des  SUR  Cannot  pour  metar  explication  les  latitude  COMMENT  ad  terrestre  

Sunyday.net