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

Mise en page CSS Discussion :

Menu accordéon avec JQUERY


Sujet :

CSS

  1. #1
    Membre confirmé
    Inscrit en
    Juin 2009
    Messages
    129
    Détails du profil
    Informations forums :
    Inscription : Juin 2009
    Messages : 129
    Par défaut Menu accordéon avec JQUERY
    Bonjour à tous,

    J'ai trouvé un tutoriel sur le WEB pour une menu en accordéon avec JQUERY et CSS.

    Lorsque le sous-menu est ouvert et que je clique sur un lien de ce sous-menu, la page se charge et mon menu se referme au lieu de rester ouvert tel qu'indiqué dans le tutoriel.

    Voici du CODE afin de vous aider à comprendre.

    Le code avec jQuery

    Code javascript : 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
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    <script type="text/javascript" src="../js/jquery-1.10.1.js"></script> 
     
    <script type="text/javascript">
     
    $(document).ready( function () {
        // On cache les sous-menus
        // sauf celui qui porte la classe "open_at_load" :
        $(".navigation ul.subMenu:not('.open_at_load')").hide();
        // On sélectionne tous les items de liste portant la classe "toggleSubMenu"
     
        // et on remplace l'élément span qu'ils contiennent par un lien :
        $(".navigation li.toggleSubMenu span").each( function () {
            // On stocke le contenu du span :
            var TexteSpan = $(this).text();
            $(this).replaceWith('<a href="" title="Afficher le sous-menu">' + TexteSpan + '<\/a>') ;
        } ) ;
     
        // On modifie l'évènement "click" sur les liens dans les items de liste
        // qui portent la classe "toggleSubMenu" :
        $(".navigation li.toggleSubMenu > a").click( function () {
            // Si le sous-menu était déjà ouvert, on le referme :
            if ($(this).next("ul.subMenu:visible").length != 0) {
                $(this).next("ul.subMenu").slideUp("normal", function () { $(this).parent().removeClass("open") } );
            }
            // Si le sous-menu est caché, on ferme les autres et on l'affiche :
            else {
                $(".navigation ul.subMenu").slideUp("normal", function () { $(this).parent().removeClass("open") });
                $(this).next("ul.subMenu").slideDown("normal", function () { $(this).parent().addClass("open") } );
            }
            // On empêche le navigateur de suivre le lien :
            return false;
        });
     
    } ) ;
     
    </script>

    Le menu en PHP qui est appelé à l'aide d'un INCLUDE dans les pages.

    Code html : 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
    27
    28
    29
    <ul class="navigation">
         <li><a href="index.php" title="Qui sommes-nous ?">Qui sommes-nous ?</a></li>
         <li class="toggleSubMenu"><span>Notre équipe</span>
    		<ul class="subMenu">
            	<?php if ($_GET['id_page'] == 1) { ?>
            		<li class="open_at_load">
                <?php } else { ?>
            		<li>
                <?php } ?>
                <a href="page.php?id_page=1" title="Nos producteurs">Nos producteurs</a></li>
            	<?php if ($_GET['id_page'] == 2) { ?>
            		<li class="open_at_load">
                <?php } else { ?>
            		<li>
                <?php } ?>
                <a href="page.php?id_page=2" title="Nos directeurs">Nos réalisateurs</a></li>
            	<?php if ($_GET['id_page'] == 3) { ?>
            		<li class="open_at_load">
                <?php } else { ?>
            		<li>
                <?php } ?>
                <a href="page.php?id_page=3" title="Nos recherchistes">Nos recherchistes</a></li>
            </ul>
         </li>
         <li><a href="equipements.php" title="Nos équipements">Nos équipements</a></li>
         <li><a href="forfaits.php" title="Forfaits">Forfaits</a></li>
         <li><a href="contact.php" title="Nous joindre">Nous joindre</a></li>
         <li><a href="#" title="Espace Membres">Espace Membres</a></li>
    </ul>

    Voici le menu une fois rendu sur une des pages du sous-menu, ici j'ai choisi la page nos recherchistes, on voit que la ligne de code recoit la classe open_at_load, mais que malgré tout le menu se referme

    Code html : 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
    <ul class="navigation">
         <li><a href="index.php" title="Qui sommes-nous ?">Qui sommes-nous ?</a></li>
         <li class="toggleSubMenu"><span>Notre équipe</span>
    		<ul class="subMenu">
            	        		<li>
                            <a href="page.php?id_page=1" title="Nos producteurs">Nos producteurs</a></li>
            	        		<li>
                            <a href="page.php?id_page=2" title="Nos directeurs">Nos réalisateurs</a></li>
            	        		<li class="open_at_load">
                            <a href="page.php?id_page=3" title="Nos recherchistes">Nos recherchistes</a></li>
            </ul>
         </li>
         <li><a href="equipements.php" title="Nos équipements">Nos équipements</a></li>
         <li><a href="forfaits.php" title="Forfaits">Forfaits</a></li>
         <li><a href="contact.php" title="Nous joindre">Nous joindre</a></li>
         <li><a href="#" title="Espace Membres">Espace Membres</a></li>
    </ul>

    J'ai mis le code en GRAS et en ROUGE pour vous aider.

    Le lien ou vous pouvez voir le tout est le suivant : www.productionsfx.com/fr/

    Merci de votre aide
    Sylvain

  2. #2
    Invité
    Invité(e)
    Par défaut
    Bonjour,
    la class "open_at_load" doit être appliquée au <ul> et non aux <li>.

    Code html : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    <ul class="navigation">
         <li><a href="index.php" title="Qui sommes-nous ?">Qui sommes-nous ?</a></li>
         <li class="toggleSubMenu"><span>Notre équipe</span>
            <ul class="subMenu<?php if ( isset($_GET['id_page']) && in_array( $_GET['id_page'], array(1,2,3) ) ) { echo ' open_at_load'; } ?>">
            	<li><a href="page.php?id_page=1" title="Nos producteurs">Nos producteurs</a></li>
            	<li><a href="page.php?id_page=2" title="Nos directeurs">Nos réalisateurs</a></li>
            	<li><a href="page.php?id_page=3" title="Nos recherchistes">Nos recherchistes</a></li>
            </ul>
         </li>
         <li><a href="equipements.php" title="Nos équipements">Nos équipements</a></li>
         <li><a href="forfaits.php" title="Forfaits">Forfaits</a></li>
         <li><a href="contact.php" title="Nous joindre">Nous joindre</a></li>
         <li><a href="#" title="Espace Membres">Espace Membres</a></li>
    </ul>
    Dernière modification par Bovino ; 24/06/2013 à 12h11.

  3. #3
    Membre confirmé
    Inscrit en
    Juin 2009
    Messages
    129
    Détails du profil
    Informations forums :
    Inscription : Juin 2009
    Messages : 129
    Par défaut
    Hello,

    Merci ça fonctionne super bien. Il y a encore un petit HIC de rien du tout.

    Lorsque le menu est ouvert, l'image de fond change, et devient un moins (-) au bout de celle-ci, mais en cliquant dans un lien du sous-menu, l'image comme si il est fermé revient en fond celle avec un (+).

    Voici le CSS que je n'avais pas inclu dans le code précédent, ce n'est sûrement pas grand chose.

    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
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    @charset "utf-8";
    /* CSS Document */
     
    .navigation {
      margin: 0;
      padding: 0;
      list-style: none;
      background: #000;
      color: #fff;
      width: 200px;
      font-family:Arial;
      font-size:12pt;
      height: 40px;
    }
    .navigation a, .navigation span {
      display: block;
      padding: 4px 10px;
      color: #fff;
      text-decoration: none;
      background: #000 url(../img/menu-item.png) left bottom no-repeat;
    }
    .navigation .toggleSubMenu a, .navigation .toggleSubMenu span {
      background-image: url(../img/menu-item-deroule.png);
    }
    .navigation .open a, .navigation .open span {
      background-image: url(../img/menu-item-enroule.png);
    }
    .navigation a:hover, .navigation a:focus, .navigation a:active {
      text-decoration: none;
    }
    .navigation .subMenu {
      font-size: .8em;
      background: #000 url(../img/subMenu.png) 0 0 repeat-x;
      font-size: .9em;
      margin: 0;
      padding: 0;
      border-bottom: 1px solid #f00;
      list-style:none;
    }
    .navigation ul.subMenu a {
      background: none;
      padding: 3px 20px;
    }
    Merci pour la précédente réponse rapide. C'est très apprécié.

    Sylvain

Discussions similaires

  1. [Article] Créer un menu contextuel avec jQuery
    Par RideKick dans le forum jQuery
    Réponses: 10
    Dernier message: 07/12/2011, 18h43
  2. [Article] Créez un menu animé avec jQuery
    Par Kerod dans le forum jQuery
    Réponses: 6
    Dernier message: 10/02/2010, 20h05
  3. Menu déroulant compatible IE6 avec JQuery
    Par Thy974 dans le forum jQuery
    Réponses: 2
    Dernier message: 26/07/2009, 15h39
  4. Améliorer un menu fait avec JQuery avec du javascript
    Par Alplob dans le forum Général JavaScript
    Réponses: 9
    Dernier message: 15/04/2009, 18h59

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