Diaporama automatique avec Lightbox

Tagged:  •    •  

Dans ce billet je vais vous présenter ma version de Lightbox qui permet de faire défiler les images automatiquement à la manière d'un diaporama. Mais pour commencer, petite introduction.

Lightbox

Lightbox est un script JavaScript d'affichage dynamique d'images : un clic sur un lien affiche l'image par dessus la page en cours (voir l'exemple du site officiel).

Il se base sur les librairies JavaScript Prototype et script.aculo.us. Vous devez donc les inclure dans votre page pour pouvoir utiliser Lightbox (voir le howto du site officiel).

Jusqu'à il y a peu, la version la plus récente de Lightbox était la 2.03. Elle utilisait d'anciennes versions de prototype et script.aculo.us... ou plutôt, elle n'utilisait pas les apports des versions plus récentes.

Son auteur a mis à jour ce script en début d'année avec la version 2.04. Au menu, utilisation de la dernière version des librairies, corrections de bugs et code plus mieux bien. Le point majeur est l'utilisation du Builder de script.aculo.us (création d'objets dans le DOM) qui a permis de largement réduire le code.

Lightbox Diaporama

Un client voulait la semaine dernière que la Lightbox que nous avions intégrée à son site dispose d'un défilement automatique des images. Histoire de gagner du temps, j'ai commencé par regarder sur le net ce qu'il existait. J'ai été assez surpris de ne trouver qu'une seule réponse valable.

Dans ce billet, Stéphane Cottin propose au téléchargement une version de Lightbox modifiée par ses soins et offrant la fonctionnalité dont j'avais besoin. Je le remercie au passage d'avoir rendu public son travail.

Je me suis basé sur ce script pour le faire marcher avec la version 2.04 de Lightbox. Vous pouvez télécharger l'archive en cliquant ici.

Changelog

Entre la 2.04 et ma version :
- fichier CSS : sélecteurs ré-écrits pour cibler plus précisément les éléments
- fichier CSS : le bloc span qui affiche la légende de l'image est affiché en tant que bloc et dispose d'une margin-bottom
- fichier CSS : ajouts liés aux ajouts d'éléments pour le diaporama
- fichier JS : portions de code commenté ou ajouté pour inclure les fonctionnalités de diaporama

Entre la version de Stéphane Cottin et la mienne :
- fichier CSS : quelques modifs (tailles, marges...) car je n'ai pas utilisé les mêmes images que lui (close, play, pause...)
- fichier JS : transposition de ses ajouts de code pour coller à la 2.04, quelques adaptations nécessaires

Configuration et utilisation

Vérifier les chemins des images dans le fichier CSS
Dans le fichier JS, modifier les valeurs des attributs de LightboxOptions, vous ne devez modifier que ça dans le fichier
Si vous changez l'une des images, vous serez peut-être amené à modifier des valeurs de tailles ou de marges dans le fichier CSS.

Laisser DiapoLightboxUse à true pour utiliser le mode diaporama ou le passer à false pour revenir au comportement de la Lightbox de base.
Si vous mettez DiapoLightboxStop à false, il faudra cliquer sur Play pour lancer le diaporama à l'affichage de la première image, sinon il démarre automatiquement.

Rappel valable pour la Lightbox de base : si le fond grisé ne couvre pas la totalité de la page, mettez padding et margin à 0 pour le body, et attribuez les anciennes valeurs à un div englobant toute la page, placé juste sous le body dans le DOM.

Correction de bug

Correction d'un petit bug : un clic sur "close" ou "play / pause" faisait remonter en haut de page

j'avais été trop rapide sur la relecture du code...

rappel : lien pour télécharger l'archive

Dia

fondu lightbox

Bonjour,
merci pour cette modification du lightbox avec l'integration du diaporama automatique c'est genial !!!
juste une petit remarque. Lorsque l'on passe d'un image a l'autre il est domage que l'on ait pas l'effet de fondu dans le sens de la fermeture de l'image ùais que dans celui de l'ouverture.
est il possible de modifier le code afin que l'on ait pas de coupure franche et juste une effet de fondu entre les images ?

pas assez de temps

bonjour,
merci pour votre commentaire
je suis en direct live d'un hotspot wifi de Poitiers ^^
je n'aurai pas le temps de faire cette modif, ni la motiv d'ailleurs pour être honnête
ça fait un moment que je ne suis plus très motivé pour coder chez moi après le taff
cela dit si vous faites la modif, n'hésitez pas à venir le signaler dans ces commentaires :)
++

Dia

Lightbox avec diaporama automatique

Bonjour,

les liens pour télécharger la version modifiée de lightbox avec diaporama automatique sont morts, pourriez-vous remettre les fichiers ?

Salutations

exact

bonjour
je regarderai ça dans la semaine qd j'aurai 2 minutes
j'avais du le virer par erreur en même temps que d'autres trucs
je reviens poster ici quand c'est fait

Dia

trouvé

bon, j'ai trouvé une version, pas dit que ça soit la dernière en date mais j'ai que ça

http://public.amillet.net/

Dia

problème avec ie9

bonjour
Voila depuis le passage sur ie9, je rencontre des soucis avec ta lightbox. Aurais tu rencontré le même problème ?
erreur :
SCRIPT5007: Impossible d’obtenir la valeur de la propriété « 0 » : objet null ou non défini
lightbox.js, Ligne 291 Caractère 20

Merci d'avance

erreur ie9

en faite c'est bon, ça fonctionne, j'ai repris la lightbox 2.05 et j'ai rajouté ton code dans lightbox.js

tant mieux

bonjour
ok cool tant mieux
j'étais justement en train de répondre à votre 1er message

Dia

diapo en boucle

bonjour,
je voulais savoir s'il était possible de mettre le diapo en boucle, c'est à dire qu'on puisse cliquer sur la flèche droite quand on est sur la dernière image et nous retrouver sur la première image? (et pareil si on est sur la 1ère pour revenir sur la dernière en cliquant sur la flèche gauche)

merci ;-)

oui

bonjour
est ce que c'est possible ? oui
est ce que je peux le faire ? non, désolé, je ne développe plus en dehors du travail : plus assez de temps, plus assez de motiv
mais oui vous pouvez le faire bien sûr ;)

Dia

Bonjour, Avez-vous mis à

Bonjour,
Avez-vous mis à jour le script depuis que lightbox est passé en 2.05 ?
Car la 2.04 bug avec internet explorer 9...
Merci

non

bonjour
non je n'ai pas eu l'occasion de re-travailler sur ce script, désolé

Dia