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 :

Toggle ouvert une fraction de seconde au chargement…


Sujet :

Bibliothèques & Frameworks

  1. #1
    Membre habitué
    Profil pro
    Inscrit en
    Février 2007
    Messages
    747
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 747
    Points : 168
    Points
    168
    Par défaut Toggle ouvert une fraction de seconde au chargement…
    Bonjour,

    je profite du Mootools 1.11 chargé par défaut avec ma version de Joomla pour faire des toggles sur un DIV.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
        <script type="text/javascript"><div id="myElement">Bla bla bla...</div>
     
          var mySlider;
          window.addEvent('domready', function() {
            mySlider = new Fx.Slide('myElement', {duration: 500});
            mySlider.hide();
          });
        </script>
    Ça fonctionne bien.

    Sauf qu'à l'ouverture de la page le DIV se trouve ouvert une fraction de seconde avant de se refermer (en faisant remonter tout ce qu'il y a en dessous de lui). Alors évidemment ce n'est pas très joli...

    Comment faire pour éviter ça ?

    Merci
    Paul

  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,

    Vous désirez que l'élément soit ouvert ou bien fermé lors du chargement de la page ?
    Je n'ai malheureusement pas les scripts de la version 1.1 mais je pourrai tester tantôt en 1.2.0.

  3. #3
    Membre habitué
    Profil pro
    Inscrit en
    Février 2007
    Messages
    747
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 747
    Points : 168
    Points
    168
    Par défaut
    Oui je désirerais qu'il apparaisse directement totalement fermé.

    Or là il apparaît ouvert à l'ouverture et se referme aussitôt après...
    (il attend le domready ?… C'est vrai que la page est un peu lourde)

    Edit : je mets en pièce jointe la version 1.11 de Mootools
    Fichiers attachés Fichiers attachés

  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 Merci pour la v1.1 =)
    Il attend le DomReady. Effectivement c'est peut-être à cause de la lourdeur de la page. C'est plutôt gênant. Je vous propose de tromper un peu le document en déclarant l'élément invisible au chargement de la page :

    Code html : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    <div id="myElement" style="visibility:hidden">Bla bla bla...</div>

    Et en réactivant la visibilité à bon escient, par exemple :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    $('la_ou_on_clic').addEvent('click', function(){
          	$("myElement").setStyle('visibility','');
          	mySlider.toggle();
    });

  5. #5
    Membre habitué
    Profil pro
    Inscrit en
    Février 2007
    Messages
    747
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 747
    Points : 168
    Points
    168
    Par défaut
    Oui c'est une bonne idée.

    malheureusement comme il y a des éléments sous ce DIV, même s'il est invisible, en se repliant une fraction de seconde après le début du chargement de la page, on voit tout le reste remonter tout seul ensuite…

    Si on ne peut pas le charger fermé d'entré,
    il faudrait peut-être alors rendre invisible un DIV contenant toute la page et la rendre visible avec un <body onload…

  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
    Ce serait triste d'en arriver là. Je pensais bêtement qu'un input déclaré invisible ne s'affichait même pas une fraction de seconde.

  7. #7
    Membre habitué
    Profil pro
    Inscrit en
    Février 2007
    Messages
    747
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 747
    Points : 168
    Points
    168
    Par défaut
    Oui, oui ça semble bien le cas.
    Sauf que si le contenu du DIV est bien invisible, ce DIV prend le même espace ! Et donc tous les DIV qui étaient repoussés le sont toujours…


    Mais avec style="display:none" ça passe bien sur Safari, Firefox et Chrome Mac
    Il n'y a pas de souci sur Windows ?

    Mon code a changé :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
        <script type="text/javascript">
          window.addEvent('domready', function() {
          	$("myElement").setStyle('display','block');
          	mySlider = new Fx.Slide('myElement');
          	mySlider.hide();
          	$('toggle').addEvent('click', function(e){
    			e = new Event(e);
    			mySlide.toggle();
    			e.stop();
    		});
          });
        </script>

  8. #8
    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
    Je crois que ce n'est pas ma journée. Étant donné le chargement rapide de ma page de test, je n'ai pas fait attention au fait que visibility gardait la position de l'élément. J'avais testé display block et inline mais aucun des dès deux ne rendait un bon affichage sur IE.

    Et là je réessaye avec votre code et ça fonctionne sur FF, IE et Google Chrome.

  9. #9
    Membre habitué
    Profil pro
    Inscrit en
    Février 2007
    Messages
    747
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 747
    Points : 168
    Points
    168
    Par défaut
    Citation Envoyé par vermine Voir le message
    Et là je réessaye avec votre code et ça fonctionne sur FF, IE et Google Chrome.
    Tant mieux !

    Et Merci !

  10. #10
    Membre habitué
    Profil pro
    Inscrit en
    Février 2007
    Messages
    747
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 747
    Points : 168
    Points
    168
    Par défaut
    Aïe…
    je viens de voir sur Firebug une erreur au chargement de la page :
    $("toggle") is null

    Et j'en ai 2 avec Safari :
    TypeError: Result of expression '$('toggle')' [null] is not an object.
    The first argument must be a beforeLoad event object.

    Euh... qu'est ce que je dois faire ?

  11. #11
    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
    Veillez à bien écrire vos instructions dans le domready.
    Ensuite, il vous faut un élément dont l'id est "toggle". C'est l'élément sur lequel vous cliquez pour afficher/cacher la <div>.

Discussions similaires

  1. récupérer la fenêtre en ayant ouvert une autre ?
    Par GregHory dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 10/05/2006, 17h56
  2. Réponses: 1
    Dernier message: 09/02/2006, 10h11
  3. Visual basic: algo résolvant une équation du second degré
    Par mauriiice dans le forum VB 6 et antérieur
    Réponses: 15
    Dernier message: 05/12/2005, 17h16
  4. Réponses: 2
    Dernier message: 24/11/2005, 17h33
  5. convertir une date en seconde
    Par svil dans le forum Langage
    Réponses: 5
    Dernier message: 05/11/2005, 22h45

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