Diaporama photo
Présentation
Gestion d'un diaporama photo et vidéo avec prise en charge du contrôle au clavier.
Le code source des fonctions de démo (myFuncX) est disponible dans le fichier demo.js.
Pour les photos et vidéos :
- Touche début (↖) pour retourner à la première photo ou vidéo
- Touche gauche (←) pour passer à la photo ou vidéo précédente
- Touche droite (→) pour passer à la photo ou vidéo suivante
- Touche Fin pour passer à la dernière photo ou vidéo
- Touche F11 pour passer en plein écran
- Touche Échap pour quitter
Pour les vidéos :
- Touches bas (↓) ou haut (↑) pour faire avancer ou reculer la vidéo
- Touches plus (+) ou moins (-) pour augmenter ou baisser le volume
- Touche M pour couper le son
- Touche P pour lire ou mettre en pause la vidéo
Il est possible de lancer le diaporama en utilisant les ids des liens, par exemple :
- avec défilement : cette-page.php#slideshow.2.2
- sans défilement : cette-page.php#slideshow-2-2
Code HTML
html<!-- input value = src;srcset|name|date|legend / src|name|date|legend -->
<div class="gallery [hoverload] [icon]" id="slideshow.0">
<a href=".../image/azerty.jpg" type="image/jpeg" onclick="return false" id="slideshow.0.99999">
<img src=".../thumb200/azerty.jpg" srcset=".../thumb400/azerty.jpg 2x" width="200" height="150" alt="legend" />
</a>
<a href=".../image/azerty.jpg" type="image/jpeg" onclick="return false" class="current" id="slideshow.0.0">
<img src=".../prev63/azerty.jpg" srcset=".../prev126/azerty.jpg 2x" width="63" height="47" alt="legend" />
<input type="hidden" value=".../thumb200/azerty.jpg;.../thumb400/azerty.jpg 2x|name|date|legend" />
</a>
<a href=".../image/qsdfgh.jpg" type="image/jpeg" onclick="return false" id="slideshow.0.1">
<img src=".../prev63/qsdfgh.jpg" srcset=".../prev126/qsdfgh.jpg 2x" width="63" height="47" alt="legend" />
<input type="hidden" value=".../thumb200/qsdfgh.jpg;.../thumb400/qsdfgh.jpg 2x|name|date|legend" />
</a>
<a href=".../video/wxcvbn.m3u8" type="video/x-mpegurl" onclick="return false" id="slideshow.0.2">
<img src=".../prev63/wxcvbn.jpg" srcset=".../prev126/wxcvbn.jpg 2x" width="63" height="47" alt="legend" />
<input type="hidden" value=".../thumb200/wxcvbn.jpg;.../thumb400/wxcvbn.jpg 2x|name|date|legend" />
</a>
</div>
<!-- input value = name|date|legend -->
<div class="album [icon]" id="slideshow.0">
<a href=".../image/azerty.jpg" type="image/jpeg" onclick="return false" id="slideshow.0.0">
<img src=".../thumb200/azerty.jpg" srcset=".../thumb400/azerty.jpg 2x" width="200" height="150" alt="legend" />
<input type="hidden" value="name|date|legend" />
</a>
<a href=".../image/qsdfgh.jpg" type="image/jpeg" onclick="return false" id="slideshow.0.1">
<img src=".../thumb200/qsdfgh.jpg" srcset=".../thumb400/qsdfgh.jpg 2x" width="200" height="150" alt="legend" />
<input type="hidden" value="name|date|legend" />
</a>
<a href=".../video/wxcvbn.m3u8" type="video/x-mpegurl" onclick="return false" id="slideshow.0.2">
<img src=".../thumb200/wxcvbn.jpg" srcset=".../thumb400/wxcvbn.jpg 2x" width="200" height="150" alt="legend" />
<input type="hidden" value="name|date|legend" />
</a>
</div>
Informations complémentaires
Le paramètre name des dialogues photo et vidéo peut prendre les valeurs suivantes :
- false pour ne pas afficher le nom du fichier,
- auto pour afficher le nom du fichier original,
- ou toute autre chaîne de caractère pour afficher un nom de fichier personnalisé.
Le paramètre date des dialogues photo et vidéo peut prendre les valeurs suivantes :
- false pour ne pas afficher la date du fichier,
- ou toute autre chaîne de caractère pour afficher la date du fichier.
Pour le paramètre icon les classes CSS suivantes :
- peuvent être utilisées : notransition lock
- ne peuvent pas être utilisées : information confirmation options upload progress waiting photo video iframe ajax start ready end reduce mobile tiny fullscreen slideshow loading download print error warning
API
jsapijs.i18n.translate("word"); // return string
apijs.i18n.translateNode("word"); // return domelement
apijs.i18n.changeLang("fr"); // return boolean
apijs.dialog.dialogInformation(...); // return boolean
apijs.dialog.dialogConfirmation(...); // return boolean
apijs.dialog.dialogFormOptions(...); // return boolean
apijs.dialog.dialogFormUpload(...); // return boolean
apijs.dialog.dialogProgress(...); // return boolean
apijs.dialog.dialogWaiting(...); // return boolean
apijs.dialog.dialogPhoto(...); // return boolean
apijs.dialog.dialogVideo(...); // return boolean
apijs.dialog.dialogIframe(...); // return boolean
apijs.dialog.dialogAjax(...); // return boolean
apijs.dialog.actionClose(); // return void
apijs.dialog.add("string1", "string2"); // return dialog object
apijs.dialog.remove("string1", "string2"); // return dialog object
apijs.dialog.toggle("string1", "string2"); // return dialog object
apijs.dialog.has("string1", "string2"); // return boolean (true if one found)
apijs.upload.sendFile(...); // return boolean
apijs.upload.sendFiles(...); // return boolean
apijs.slideshow.show("slideshow.2.1"); // return boolean
apijs.slideshow.actionFirst(); // return boolean
apijs.slideshow.actionPrev(); // return boolean
apijs.slideshow.actionNext(); // return boolean
apijs.slideshow.actionLast(); // return boolean
// default config //////////////////////////////////////////
apijs.config.lang = "auto";
apijs.config.debug = false;
apijs.config.dialog.closeOnClick = false;
apijs.config.dialog.restrictNavigation = true;
apijs.config.dialog.player = true; // true|false|userFunction(videoTag, url)
apijs.config.slideshow.ids = "slideshow";
apijs.config.slideshow.anchor = true;
apijs.config.upload.tokenName = "X-CSRF-Token";
apijs.config.upload.tokenValue = null;
// events //////////////////////////////////////////////////
self.addEventListener("apijsbeforeload", function () {
apijs.dialog.htmlContentOrig = apijs.dialog.htmlContent;
apijs.dialog.htmlContent = function (title, text) {
alert(title);
this.htmlContentOrig(title, text);
};
if (!apijs.i18n.data.hasOwnProperty("xy")) apijs.i18n.data.xy = {};
apijs.i18n.data.xy["xyz"] = "Test";
apijs.config.debug = true;
});
self.addEventListener("apijsload", function () {
console.log("ready");
});
self.addEventListener("apijsajaxresponse", function (ev) {
console.log(ev.detail);
});
