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

JavaScript Discussion :

Création d'un menu Horizontal


Sujet :

JavaScript

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé Avatar de snyfir
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    246
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 246
    Par défaut Création d'un menu Horizontal
    Bonjour,
    Pour créé un menu horizontal défilant j'utilise un script javascript.
    Mon menu marche bien, le seul problème que je peut lui reprocher, c'est qu'a chaque fois qu'on sort le pointeur de la sourie du menu, celui-ce referme. Ce qui en soit n'est pas pratique. Je voudrais donc qu'il se referme seulement quand on clique à coté du menu. Mais je ne vois pas comment faire.
    Si vous pouviez m'aider. Merci d'avance.

    Voici un exemple du code html:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    <div id="menu">
      <ul>		
        <li onmouseover="montre('smenu5',true);" onmouseout="montre('smenu5',false);">Menu 5
          <ul id="smenu5">
            <li onmouseover="montre('smenu51',true);" onmouseout="montre('smenu51',false);"><a href="#">smenu51</a>
              <ul class="dernier" id="smenu51">
                <li><a href="#">smenu511</a></li>
              </ul>
            </li>
          </ul>
        </li>
      </ul>	
    </div>
    Voici le code javascript:
    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
     
    //au chargement de la page, on appelle la fonction montre()
    window.onload=montre;
     
    //affichage du menu déroulant et placement de ce dernier
    function montre(id,affiche)
    {
        var d = document.getElementById(id);
        //si on quitte un élément du menu
        if (d && !affiche)  {
            d.style.display='none'; //on l'efface
        }
        //sinon si on se mets sur un élément du menu
        else if (d && affiche) { 
            d.style.display='block'; //on l'affiche
        }
    }

  2. #2
    Expert confirmé
    Avatar de le_chomeur
    Profil pro
    Développeur informatique
    Inscrit en
    Février 2006
    Messages
    3 653
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Février 2006
    Messages : 3 653
    Par défaut
    supprime le onmouseout="montre('smenu5',false);" sur le menu parent , puis ajoute sur le body un onclick qui fermera tous les menus

  3. #3
    Membre éclairé Avatar de snyfir
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    246
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 246
    Par défaut
    Oui, ji est penssé, mais le problème est que je n'est aucun sous menu qui se ferme quand j'en ouvre un autre.
    De plus, avec le onclik dans le body, quand je clique sur un lien de mon menu, cela ferme mon menu mais ne me redirige pas vers le lien.

  4. #4
    Expert confirmé
    Avatar de le_chomeur
    Profil pro
    Développeur informatique
    Inscrit en
    Février 2006
    Messages
    3 653
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Février 2006
    Messages : 3 653
    Par défaut
    pour fermer les autres menus :

    - récupère le nombre de menu parent de parent ( hé oui car tu as des sous menu ... )

    - sur le mouseover , commence par masquer tous les menu PUIS affiche le menu courant

    pour le onclick :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    document.onclick = function(e){
    		var source=window.event?window.event.srcElement:e.target;
    		if(source.id != 'iddetonmenu'){
    fonctionmasquer();
    		}
    		else if(!preventDouble){preventDouble = true}
    	}

  5. #5
    Membre éclairé Avatar de snyfir
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    246
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 246
    Par défaut
    Concrétement sa donne coi ?

  6. #6
    Expert confirmé
    Avatar de le_chomeur
    Profil pro
    Développeur informatique
    Inscrit en
    Février 2006
    Messages
    3 653
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Février 2006
    Messages : 3 653
    Par défaut
    . . . ça donne qu'il faut essayer de coder ^^

    essaye déja de récupérer tout tes menus et sous menu dans un tableau ( array )

    que tu parcourras pour masquer chacun d'entre eux sur le over :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    var mesMenu = ... sois tu remplis a la main soit via une méthode.
     
    for(var i = 0 , l = mesMenu.length ; i <l ; i++){
    mesMenu['i'].style.display = "none";
    }
    avec une subtilité /!\ il faut ajouter une condition pour ne pas masquer les menus parent ( d'ou la complexité )

Discussions similaires

  1. Besoin d'aide à la création de Menu Horizontal
    Par °°° Zen-Spirit °°° dans le forum Balisage (X)HTML et validation W3C
    Réponses: 9
    Dernier message: 01/04/2008, 01h07
  2. prob menu horizontal
    Par tinkye_winkye dans le forum Mise en page CSS
    Réponses: 3
    Dernier message: 25/01/2005, 11h19
  3. Création d'un menu
    Par gros bob dans le forum OpenGL
    Réponses: 3
    Dernier message: 15/01/2004, 08h43
  4. [Flash 5] Création d'un menu
    Par WriteLN dans le forum Flash
    Réponses: 4
    Dernier message: 09/10/2003, 13h37

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