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>

A voir aussi

  • NoNo

    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 :)

  • technoben

    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

  • technoben

    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.

  • technoben

    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+

  • philippe DANIEL

    j’aurais une petite question :

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

    merci beaucoup

    cordialement

  • Ernst

    BOnjour
    @technoben on

    J’ai le même problème as tu trouvé une solution ?
    Merci

  • errog

    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

  • Alex

    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

  • http://www.webdesignexpert.me Sleeping Pyramid

    Bon article, lu intéressant.

  • Pierre

    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

  • http://mrjulien.biz juju

    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;
    }
    }

  • vero

    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

  • vero

    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

  • Admin

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

  • Image 1 is pretty
  • nguyen

    Bonjour,

    Je débarque en 2011 avec votre super script, merci beaucoup.
    Cependant j’ai le même problème mais je n’ai pas de lien, j’utilise overflow-y : auto . L’ascenseur n’est pas cliquable sur le 1er cycle. Comment faire pour loader ce 1er cycle afin de rendre actif cette zone, j’ai cherché dans crossfade.js mais j’avoue que là je bloque. Merci

  • premium

    Bonjour,

    Pareil, débarquement en 2011. Le script fonctionne très bien, mais pas sous IE ^^

    Si quelqu’un a une solution merci de la poster