IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Bibliothèques & Frameworks Discussion :

Diaporama sous Mootools 1.3 [MooTools]


Sujet :

Bibliothèques & Frameworks

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Février 2004
    Messages
    12
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2004
    Messages : 12
    Points : 14
    Points
    14
    Par défaut Diaporama sous Mootools 1.3
    Bonjour à tous,

    je suis en train de développez un diaporama en js avec mootools.
    Ce dernier fonctionne très bien sous Firefox et Chrome, mais j'ai un soucis de compatibilité sous IE (8 et 7)

    Voici mon code js :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    window.addEvent('domready', function() {
     
    	var showDuration = 7000;
    	var container = $('diaporama');
    	var images = $$('#diapo_haut img');
    	var imageIndex = 0;
    	var interval;
     
    	images.each(function(img){
    		img.set('tween', {transition: Fx.Transitions.Back.easeIn, duration: 'long'});
    		images[imageIndex].tween("opacity", 1);
    	});
     
    	var show = function() {
    		imageIndex < images.length - 1 ? imageIndex = imageIndex + 1 : imageIndex = 0;
    		images.each(function(img,i){
    			if(imageIndex == i){
    				img.tween("opacity", 1);
    			}else{
    				img.tween("opacity", 0);
    			}
    		});
    	};
        interval= show.periodical(showDuration);
     
    });
    Mon code html :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    <div id="diapo_haut">
     <img src="images/images_diapo_haut/1.png" alt="" />
     <img src="images/images_diapo_haut/2.png" alt="" />
     <img src="images/images_diapo_haut/3.png" alt="" />
     <img src="images/images_diapo_haut/4.png" alt="" />
     <img src="images/images_diapo_haut/5.png" alt="" />				</div>
    Mon code css :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    #diapo_haut{
    margin:55px 0 0 240px;
    width:557px;
    height:140px;
    position:absolute;
    z-index:1
    }
     
    #diapo_haut img{
    position:absolute;
    z-index:2;
    opacity:0
    }
    En faite sous IE, ça ne fait l'effet de transition uniquement que sur les deux première images. J'ai essayé de voir si le temps entre chaque transitions était bien respecté (par le biais d'une "alert"), et cela fonctionne il enchaîne et trouve les position de chaque image.

    Je ne vois pas pourquoi sachant que IE est capable d'enchaîner les transitions lors des alert, n'est pas capable d'enchaîner l'affichage de mes images.

    Avez-vous une idée?
    Log utilisés:
    Easyphp 1.6(mysql intégré)
    phpMyAdmin 2.2.0

  2. #2
    Expert éminent sénior

    Avatar de vermine
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    6 582
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2008
    Messages : 6 582
    Points : 79 912
    Points
    79 912
    Par défaut
    Bonjour,

    D'abord il faudrait vérifier que ce n'est pas le z-index qui pose problème.
    Ensuite, je ne comprends pas bien ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    images.each(function(img){
         img.set('tween', {transition: Fx.Transitions.Back.easeIn, duration: 'long'});
         images[imageIndex].tween("opacity", 1);
    });
    Pour chaque image, vous mettez l'opacité de la première image à 1 (c'est-à-dire cinq fois d'affilé) ?

    Et je remarque sous IE que l'opacité des images ne sont pas à 0 malgré le code CSS.

    Je ne m'y connais pas assez en CSS malheureusement pour affirmer quoique ce soit :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    .ma_class{
    filter:alpha(opacity=0);
    opacity:0;
    -moz-opacity:0;
    }

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Février 2004
    Messages
    12
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2004
    Messages : 12
    Points : 14
    Points
    14
    Par défaut
    Merci pour ta réponse,

    effectivement, l'initialisation de la première image se fait 5 fois, une erreur qui a été maintenant corrigée. (Bien vu)

    J'ai ajouté le code CSS que tu me propose et effectivement là au moins toutes les images passent avec une opacité de 0 sous IE. Cependant maintenant je n'ai plus aucune image qui s'affiche sous IE.

    Je me demande si mootools gère d'une manière particulière l'opacité pour IE ou non?

    Le problème persiste.
    Log utilisés:
    Easyphp 1.6(mysql intégré)
    phpMyAdmin 2.2.0

  4. #4
    Expert éminent sénior

    Avatar de vermine
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    6 582
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2008
    Messages : 6 582
    Points : 79 912
    Points
    79 912
    Par défaut
    J'ai envie de pousser l'audace jusqu'au bout et de dire que Mootools attaque les CSS directement :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    img.tween("opacity", 1);
    img.tween("filter", "alpha(opacity=1)");
    Mais ça me parait tiré par les cheveux. Je n'ai pas le temps de faire beaucoup de tests.

  5. #5
    Membre à l'essai
    Profil pro
    Inscrit en
    Février 2004
    Messages
    12
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2004
    Messages : 12
    Points : 14
    Points
    14
    Par défaut
    Je viens de tester en ajoutant la ligne que tu me proposé, mais dans ce cas là, mootools me génère des erreurs javascript et le script ne fonctionne plus sous aucun navigateur.

    Je continue à chercher.
    Log utilisés:
    Easyphp 1.6(mysql intégré)
    phpMyAdmin 2.2.0

  6. #6
    Expert éminent sénior

    Avatar de vermine
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    6 582
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2008
    Messages : 6 582
    Points : 79 912
    Points
    79 912
    Par défaut
    Mootools propose de gérer l'opacité avec la méthode fade :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    img.fade('out'); //0
    img.fade('in'); //1
    Que vous pourriez, si la transition vous convient, transformer sans souci de gestion en :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    img.fade('toggle'); //Si 1, passe à 0. Si 0, passe à 1.
    Vous n'auriez plus qu'une seule instruction là où vous faites un if dans le each selon l'opacité de l'image en cours.

  7. #7
    Membre à l'essai
    Profil pro
    Inscrit en
    Février 2004
    Messages
    12
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2004
    Messages : 12
    Points : 14
    Points
    14
    Par défaut
    Merci bien cela fonctionne sous IE 7 et 8.

    Je me permets de remettre mon code final si ça peut aider d'autres personnes par la suite.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
     
    window.addEvent('domready', function() {
     
    	/*Diaporama du haut de la page*/
    	var showDuration = 7000;
    	var images = $$('#diapo_haut img');
    	var imageIndex = 0;
    	var interval;
     
    	images[imageIndex].fade("in");
    	var show = function() {
    		imageIndex < images.length - 1 ? imageIndex = imageIndex + 1 : imageIndex = 0;
    		images.each(function(img,i){
    			if(imageIndex == i){
    				img.fade('in');
    			}else{
    				img.fade('out');
    			}
    		});
    	};
        periodical = show.periodical(showDuration);
     
    });
    J'ai fait un premier fade "in" sur la première image comme ça j'ai un fondu au premier affichage.

    Merci à toi Vermine pour tes conseils.
    Log utilisés:
    Easyphp 1.6(mysql intégré)
    phpMyAdmin 2.2.0

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Diaporama sous flex
    Par leyeno dans le forum Flex
    Réponses: 1
    Dernier message: 03/05/2010, 17h11
  2. Le diaporama sous Vista ne fonctionne pas
    Par Thomas1405 dans le forum Windows Vista
    Réponses: 2
    Dernier message: 18/09/2009, 22h18
  3. Diaporama sous forme de fenêtre
    Par zak03 dans le forum Powerpoint
    Réponses: 4
    Dernier message: 14/04/2009, 17h05
  4. Diaporama sous Vista = Plantage !?
    Par henri92 dans le forum Windows Vista
    Réponses: 0
    Dernier message: 18/01/2009, 12h27
  5. preload d'un diaporama sous flash 8
    Par bukingam dans le forum Flash
    Réponses: 3
    Dernier message: 12/02/2007, 00h09

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo