Diaporama cross-fade Scriptaculous

Faire un mini diaporama sans flash peut ĂŞtre intĂ©ressant, pour cela je vous prĂ©sente un script avec des options qui rajoutent un plus Ă  l’affichage d’images, notamment des effets de fondu et d’affichage alĂ©atoire.

Il s’agit d’un script simple qui fera apparaĂ®tre plusieurs Ă©lĂ©ments un Ă  la fois avec un cross-fade effet.

Démo / Téléchargement

Pour le mettre en place tout ce qu’il vous faut est un Ă©lĂ©ment bloc HTML.

Tous les descendants immĂ©diats deviennent transparents. Pour commencer Ă  l’effet que vous avez tout simplement Ă  donner Ă  l’Ă©lĂ©ment parent une classe de «fondu». Si elle est prĂ©sente FastInit allons l’utiliser pour le dĂ©marrer automatiquement, sinon il vous ajoutez un Ă©vĂ©nement window.onload.

Alternativement vous pouvez le faire de cette façon:

new Crossfade(‘example’, {interval : 10}); Nouveau Crossfade ( ‘example’, (intervalle: 10));

Et elle dĂ©marrera après un laps de temps alĂ©atoire entre 100 millisecondes et l’intervalle montant.

Si vous avez un enfant « un » Ă©lĂ©ment de la classe «loadimage » le crossfader sera remplacer par une balise d’image et de charger les a.href que l’image src. Il assurera aussi les prĂ© chargement de l’image suivante. Par exemple, au lieu de cela:

<li><img src= »image1.jpg » /><div class= »caption »>Image 1 is pretty</div></li> <li> <img src= »image1.jpg » /> <div class= »caption »> Image 1 est joli </ div> </ li>

Vous pouvez faire ceci:

<li><a href= »image1.jpg » class= »loadimage »></a><div class= »caption »>Image 1 is pretty</div></li> <li> <a href= »image1.jpg » class= »loadimage »> </ a> <div class= »caption »> Image 1 est joli </ div> </ li>

Si vous avez un enfant ‘a’ Ă©lĂ©ment avec une classe de « charger » le crossfader va charger le contenu de la diapositive a.href via Ajax, une requĂŞte GET.

Par exemple:

<li><a href= »ajax.php&arg=1″ class= »load »></a></li> <li> <a href= »ajax.php&arg=1″ class= »load »> </ a> </ li>

Assurez-vous que la ressource Ă  a.href retourne un extrait de plain old HTML.

Si vous avez un Ă©lĂ©ment avec un id correspondant Ă  la mère en fondu id + ‘-next’ ou ‘-prĂ©cĂ©dent’ ils deviendront prochain et la diapositive prĂ©cĂ©dente contrĂ´les.

Par exemple, si vous donnez votre Ă©lĂ©ment parent de l’id ‘diaporama’, puis de laisser le contrĂ´le des identifiants de « diaporama-suivant ‘et’ prĂ©cĂ©dent-diaporama ».

Voir la démo pour un exemple.

Transitions

4 styles de transition sont fournis avec la bibliothèque, et vous pouvez également créer les vôtres.

Pour spĂ©cifier une option de transition utilisation (ci-dessous) ou d’ajouter un nom de classe de l’Ă©lĂ©ment parent. Voici les transitions suivantes:

Option Nom – Nom de la classe
Crossfade.Transition.Switch – ‘transition-switch’
Crossfade.Transition.Crossfade – ‘transition-crossfade’
Crossfade.Transition.FadeOutFadeIn – ‘transition-fadeoutfadein’
Crossfade.Transition.FadeOutResizeFadeIn – ‘transition-fadeoutresizefadein’

Si vous souhaitez ajouter votre propre dont vous avez besoin pour créer un objet avec les propriétés suivantes:

 var myTransition = { = (Var myTransition  className : 'transition-mytransition',   cycle : function(prev, next, show) {},   cancel : function(show){},   prepare : function(show){}   }; );

Le cycle () est appelĂ©e Ă  appliquer l’effet de transition. ‘Prev’ est l’Ă©lĂ©ment de la transition de diapositives, ‘next’ est l’Ă©lĂ©ment glisser dans la phase de transition, ’show’ est l’objet en fondu.

La fonction cancel () est appelĂ© pour annuler l’effet de transition.

Le prepare () est appelĂ©e lorsque l’objet est initialisĂ© en fondu, afin de prĂ©parer la transition Ă  l’objet en fondu si nĂ©cessaire.

Vous pouvez appliquer vos transition objet personnalisé via les options ou, si vous voulez que le nom de la classe qui sera automatiquement utilisé, alors vous devez ajouter votre passage à la collection de la bibliothèque, par exemple:

Crossfade.Transition.MyTransition = {…}

Jetez un oeil sur les transitions incluses pour avoir une idée de comment tout ça fonctionne.

Options

Option : default Option: default

autoLoad : true
Réglez cette variable à false si vous ne voulez pas le script pour chercher des éléments de cross-fade basé sur les sélecteurs.

autoStart : true
Réglez cette variable à false si vous ne voulez pas le que diaporama commence automatiquement.

interval : 5
Nombre de secondes pour afficher chaque élément

duration : 2
Durée en secondes du fondu

random : false
Mettre Ă  true pour randomise l’ordre.

randomClassName : ‘random’
Ajouter cette classe Ă  l’Ă©lĂ©ment parent fondu et ça va faire randomise l’ordre de la mĂŞme façon (comme une alternative Ă  l’aide de l’option ci-dessus en Javascript).

selectors : ['.crossfade']
Le sélecteur autoStart utilisé pour la fonctionnalité, vous pouvez définir à toute une gamme de prototypes de sélecteurs.

transition : Crossfade.Transition.Crossfade
Le style de transition utilisé

Pour changer les paramètres par défaut, tout en faisant usage de la fonction autoStart utilisation Crossfade.setup ((options)), par exemple:

Crossfade.setup({interval : 10, random : true});

CSS

Pour donner la meilleure présentation envisager le positionnement des parents, et ensuite tous les descendants immédiats de position absolue pour les carreaux les uns sur les autres.

Exigences

Le Scriptaculous effects.js fichier et prototype.js. FastInit est facultative.

Démo & Téléchargement

Il n’ya pas beaucoup plus que cela! Consultez la page de dĂ©monstration pour des exemples ou tĂ©lĂ©charger la dĂ©mo fichier zip.

MAJ:
pour rajouter des liens sur les images

 <li><a href="votre-lien"><img src="image1.jpg" /></a><div>Image 1 is pretty</div></li>





BlogBang

14 Réponses to “Diaporama cross-fade Scriptaculous”

  1. Très chouette ! Mais je me demandais si il était possible de faire une bascule entre un mode manuel et un mode automatique. Mes connaissances en javascript sont proches de zéro :)

  2. Bonjour Ă  vous,
    je viens de tomber sur votre script, très très bien , bravo pour le boulot…. Une petite question tout de mĂŞme, lors de mes tests, quand on met l’option ‘random’ les images se dĂ©calent et sortent de leur emplacement… Est ce une erreur de ma part ou ais-je ratĂ© une info?
    Cordialement

  3. Bon la question prĂ©cĂ©dente est rĂ©solu et c’est juste une erreur de ma part dans le positionnement (rel/abs) de mes blocs..
    Par contre, lors du dĂ©filement j’ai ajoutĂ© la possibilitĂ© de cliquĂ© sur l’image et le texte (caption) afin d’etre dirigĂ© vers une page diffĂ©rente pour chaque image…
    Bonne idĂ©e dans l’absolut, mais il y a un problème. Cela marche correctement pendant quelques images puis c’est toujours la mĂŞme page qui revient en lien et cela recommence Ă  ĂŞtre normal… ainsi de suite….
    Si quelqu’un Ă  une idĂ©e, merci par avance.
    Et encore super script merci au concepteur.

  4. Hello
    aie aie aie, pas de rĂ©ponses… C’est la loose…
    J’ai eu beau me remuer les mĂ©ninges, le problème persite et il faut avoir fait un cycle entier des images avant que les liens s’affichent correctement.

    Avant ce cycle le navigateur prend en compte le dernier lien de la boucle pour toutes les images.

    Cela est forcement du au crossfade.js mais oĂą?? je n’arrive pas Ă  savoir.

    AU secour (hĂ©, hĂ©)….
    A+

  5. j’aurais une petite question :

    commenbt décalé vers la gauche les images dans la démo : FadeOutResizeFadeIn Transition

    merci beaucoup

    cordialement

  6. BOnjour
    @technoben on

    J’ai le mĂŞme problème as tu trouvĂ© une solution ?
    Merci

  7. Bonjour,
    Bravo pour cette réalisation.
    Je dĂ©bute en CSS,jacvascript…
    Je voudrais changer la bordure de l’image , le fond…
    Naivement j’ai placĂ© du style en ligne:

    img….

    fonctionne mais :

    ne fonctionne pas

    Merci

  8. Bonjour,

    Votre application est REMARQUABLE!
    Je l’ai adaptĂ© a mon site par contre j’aimerais que chaque diapo renvoie vers une page differente mais je ne parviens pas Ă  intercaller mon a href pour rediriger,

    Pouvez-vous m’aider?

    Cordialement

  9. Bon article, lu intéressant.

  10. Hello,

    est-il possible d’avoir deux fois le mĂŞme diaporama dans la mĂŞme page ?
    cela ne semble pas fonctionner lorsque un diaporama est dupliquĂ©… Le premier fonctionne mais pas le deuxième.
    Merci

  11. Superbe scripte que j’ai dĂ©jĂ  implĂ©mentĂ© 2 fois par contre je viens de m’aperçevoir que le script Crossfade.js ne fonctionne pas bien j’ai une erreur de programmation Ă  la ligne:

    this.elm.hasClassName(trans.className)

    Voici un morceau du code:

    Crossfade.prototype = {
    loaded : false,
    initialize : function(elm, options) {
    var me = this, next, prev;
    this.elm = $(elm);
    this.counter = 0;
    this.prevSlide = null;
    var t_opt = {};
    for(t in Crossfade.Transition) {
    var trans = Crossfade.Transition[t];
    if(trans.className && this.elm.hasClassName(trans.className)) {
    t_opt = {transition:trans};
    break;
    }
    }

  12. Bonjour,

    Moi aussi j’aimerais faire un lien diffĂ©rent sur chaque image du diapo.
    J’ai essayĂ© ça :

    mais ça ne fonctionne pas.

    Pourriez-vous me dire comment procéder ?

    Merci

  13. Bonjour,

    Moi aussi j’aimerais faire un lien différent sur chaque image du diapo.
    J’ai essayé ça :

    mais ça ne fonctionne pas.

    Pourriez-vous me dire comment procéder ?

    Merci

  14. Je viens de tester avec les fichiers d’exemples et ça fonctionne:
    voir maj article

  15. Image 1 is pretty

Laisser un commentaire

Vous pouvez utiliser ces balises XHTML tags: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>