Partage
  • Partager sur Facebook
  • Partager sur Twitter

Menu déroulant avec sous-sous-menu

    4 juillet 2019 à 14:40:55

    Bonjour,

    je suis en train de concevoir une page web qui contient un menu déroulant.

    Jusque-là pas de souci, le menu déroulant horizontal est créé et fonctionnel.

    Il contient une entrée, quand on passe la souris dessus ça ouvre des sous-menus, tout fonctionne.

    Mais j'aimerais ajouter un niveau à ce menu : quand on passe la souris sur l'un des sous-menus, un sous-sous-menu s'affiche alors à droite.

    Pourriez-vous m'indiquer comment inscrire ça dans mon CSS ?

    Je vous donne un exemple de mon code :

    <li id="menu"><a href="#">Fruits</a>
                <ul>
                    <li id="sous-menu"><a href="#">Cerise</a></li>
                    <li id="sous-menu"><a href="#">Nectarine</a></li>
                </ul>
    </li>

    <li id="menu"><a href="#">Légumes</a>
                <ul>
                    <li id="sous-menu"><a href="#">Légumes verts</a>
                        <ul>
                            <li id="sous-sousmenu"><a href="#">Brocoli</a></li>
                            <li id="sous-sousmenu"><a href="#">Petits pois</a></li>
                        </ul>
                    </li>
                    <li id="sous-menu"><a href="#">Légumes rouges</a></li>
                </ul>
    </li>

    J'aimerais donc que quand on passe la souris sur "légumes verts", ça ouvre un sous-sous menu à droite de "légumes verts" avec le choix entre brocoli et petits pois...

    Merci beaucoup par avance pour votre aide !

    M.

    • Partager sur Facebook
    • Partager sur Twitter
      4 juillet 2019 à 15:23:54

      Hello,

      Avec le code CSS que tu utilises déjà ça serait plus simple.

      Tout d'abord, il faut signaler les erreurs dans ton code HTML.
      Tu utilises plusieurs fois le même ID et c'est à l'encontre même de ce qu'est un ID, un ID doit être unique et ne représenter qu'un élément.

      Il serait bon d'utiliser les classes pour identifier des éléments avec un comportement similaire.

      Enfin pour répondre à ta question, il me semble que simplement :

      #sous-menu {
          display: none;
      }
      #sous-menu:hover {
          display: inline-block;
      }

      Devrait donner le résultat attendu.

      Il faut ensuite définir le positionnement que tu souhaites pour ton sous-sous-menu.

      PS : il est très mauvais d'afficher des éléments à leur survol, il est préférable que cela résulte d'une vraie action d'un utilisateur tel qu'un clic ;)

      -
      Edité par vernaisc 4 juillet 2019 à 15:25:47

      • Partager sur Facebook
      • Partager sur Twitter
        5 juillet 2019 à 13:21:30

        Salut,

        vernaisc, ta solution ne peut pas fonctionner. Comment peut-on survoler un élément qui n'existe pas ? ^^

        Donc pour résumer nos deux posts:

        <ul id="menu">
          <li>lien menu
            <ul class="sm">
              <li>lien sous menu
                <ul class="ssm">
                  <li>lien sous sous menu</li>
                </ul>
              </li>
            </ul>
          </li>
        </ul>
        .sm, .ssm {
           display:none;
        }
        #menu li:hover .sm, .sm li:hover .ssm {
           display:block
        }
        • Partager sur Facebook
        • Partager sur Twitter
        Vous cherchez à faire un menu déroulant ? Visitez www.frogweb.fr ! frogweb le site qu'il vous faut !
          7 juillet 2019 à 9:01:17

          Bonjour MBrt ,

          Un exemple si cela peut t'aider

          https://codepen.io/Zonecss/pen/VxdPmO

          • Partager sur Facebook
          • Partager sur Twitter
          Découvrez les Css avec la zonecss.fr
            7 juillet 2019 à 18:23:58

            Bonjour à tous,

            merci beaucoup pour vos réponses !! je teste tout ça et je reviens vers vous...

            M.

            • Partager sur Facebook
            • Partager sur Twitter
              8 juillet 2019 à 11:27:33

              Bonjour,

              Alooooors... J'ai revu mon code, j'ai supprimé les erreurs signalées par @vernaisc (merci beaucoup !) mais je n'arrive toujours pas à afficher ce sous-sous menu...

              Voici mon CSS, pour l'instant, en ce qui concerne mon menu et mon sous-menu :

              #menu-deroulant ul{ /*menu entier*/
              position:absolute;
              z-index: 2000;
              max-height:0;
              left: 0;
              right: 0;
              overflow:hidden;
              -moz-transition: .8s all .3s;
              -webkit-transition: .8s all .3s;
              transition: .8s all .3s;
              }

              #menu-deroulant li{ /*config 1er niveau du menu*/
              display:inline-block;
              position:relative;
              border-radius:8px 8px 0 0;
              }

              #menu-deroulant ul li{
              display:inherit;
              border-radius:0;
              }
              #menu-deroulant li:hover{
              border-radius:0;
              }
              #menu-deroulant li:last-child{
              border-radius:0 0 8px 8px;
              }
              #menu-deroulant li:hover ul{
              max-height:55em;
              }

              En fait, je m'embrouille pas mal entre les niveaux de UL et de LI... Du coup, je n'arrive pas à avancer...

              • Partager sur Facebook
              • Partager sur Twitter
                8 juillet 2019 à 12:21:33

                Salut,

                redonne nous ton code html corrigé.

                • Partager sur Facebook
                • Partager sur Twitter
                Vous cherchez à faire un menu déroulant ? Visitez www.frogweb.fr ! frogweb le site qu'il vous faut !
                  8 juillet 2019 à 17:41:37

                  Voici :


                  <nav>
                  <ul id="menu-deroulant">

                      <li><a href="#">Fruits</a>
                              <ul>
                                  <li><a href="#">Cerise</a></li>
                                  <li><a href="#">Nectarine</a></li>
                              </ul>
                      </li>

                      <li><a href="#">Légumes</a>
                              <ul>
                                  <li><a href="#">Légumes verts</a>
                                      <ul>
                                          <li><a href="#">Brocoli</a></li>
                                          <li><a href="#">Petits pois</a></li>
                                      </ul>
                                  </li>
                                  <li><a href="#">Légumes rouges</a></li>
                              </ul>
                      </li>
                  </ul>
                  </nav>

                  • Partager sur Facebook
                  • Partager sur Twitter
                    8 juillet 2019 à 18:02:05

                    Pourquoi tu ne reprends pas l'ensemble de mon code ?
                    Après tu as juste à modifier les couleurs comme bon te semble.

                    Et un menu 3 niveaux n'est pas forcément une bonne idée...

                    • Partager sur Facebook
                    • Partager sur Twitter
                    Vous cherchez à faire un menu déroulant ? Visitez www.frogweb.fr ! frogweb le site qu'il vous faut !
                      8 juillet 2019 à 18:17:53

                      Je viens de tester, en remaniant mon HTML comme tu l'as construit, et en appliquant juste le CSS que tu as donné.

                      Le résultat : mon 3ème niveau ne s'affiche pas du tout...

                      • Partager sur Facebook
                      • Partager sur Twitter
                        10 juillet 2019 à 8:50:12

                        Si je reprends mon code :

                        HTML :

                        <nav>
                        <ul id="menu-deroulant">

                            <li><a href="#">Fruits</a>
                                    <ul>
                                        <li><a href="#">Cerise</a></li>
                                        <li><a href="#">Nectarine</a></li>
                                    </ul>
                            </li>

                            <li><a href="#">Légumes</a>
                                    <ul>
                                        <li><a href="#">Légumes verts</a>
                                            <ul>
                                                <li><a href="#">Brocoli</a></li>
                                                <li><a href="#">Petits pois</a></li>
                                            </ul>
                                        </li>
                                        <li><a href="#">Légumes rouges</a></li>
                                    </ul>
                            </li>
                        </ul>
                        </nav>

                        CSS:

                        #menu-deroulant ul{ /*menu entier*/
                        position:absolute;
                        z-index: 2000;
                        max-height:0;
                        left: 0;
                        right: 0;
                        overflow:hidden;
                        -moz-transition: .8s all .3s;
                        -webkit-transition: .8s all .3s;
                        transition: .8s all .3s;
                        }

                        #menu-deroulant li{ /*config 1er niveau du menu*/
                        display:inline-block;
                        position:relative;
                        border-radius:8px 8px 0 0;
                        }

                        #menu-deroulant ul li{
                        display:inherit;
                        border-radius:0;
                        }
                        #menu-deroulant li:hover{
                        border-radius:0;
                        }
                        #menu-deroulant li:last-child{
                        border-radius:0 0 8px 8px;
                        }
                        #menu-deroulant li:hover ul{
                        max-height:55em;
                        }
                        • Partager sur Facebook
                        • Partager sur Twitter
                          10 juillet 2019 à 11:39:33

                          Salut,

                          commence par rajouter overflow:visible à #menu-deroulant li:hover ul

                          On verra après la suite si tu ne t'en sort toujours pas.

                          • Partager sur Facebook
                          • Partager sur Twitter
                          Vous cherchez à faire un menu déroulant ? Visitez www.frogweb.fr ! frogweb le site qu'il vous faut !
                            10 juillet 2019 à 13:40:56

                            ???

                            J'ai repris ton code, j'ai ajouté overflow:visible sur #menu-deroulant li:hover ul et je vois bien les sous menus...

                            Regarde :

                            https://jsfiddle.net/Site_Frogweb/ft3h8eks/

                            • Partager sur Facebook
                            • Partager sur Twitter
                            Vous cherchez à faire un menu déroulant ? Visitez www.frogweb.fr ! frogweb le site qu'il vous faut !
                              16 juillet 2019 à 13:35:25

                              du coup, est-ce que tu sais comment je pourrais décaler encore un peu plus les sous menus sur la droite ? qu'ils dépassent du "cadre" du menu précédent, pour que tout soit bien lisible ?

                              Merci beaucoup pour ton aide (et ta patience !)

                              • Partager sur Facebook
                              • Partager sur Twitter
                                16 juillet 2019 à 16:46:25

                                ça devrait être bon avec ça :

                                #menu-deroulant {
                                  padding:0;
                                  margin:0;
                                }
                                #menu-deroulant ul,
                                #menu-deroulant li:hover ul ul{ /*menu entier*/
                                position:absolute;
                                z-index: 2000;
                                max-height:0;
                                overflow:hidden;
                                -moz-transition: .8s all .3s;
                                -webkit-transition: .8s all .3s;
                                transition: .8s all .3s;
                                padding:0;
                                margin:0
                                }
                                
                                #menu-deroulant li{ /*config 1er niveau du menu*/
                                display:inline-block;
                                position:relative;
                                border-radius:8px 8px 0 0;
                                }
                                
                                #menu-deroulant ul li{
                                display:inherit;
                                border-radius:0;
                                }
                                #menu-deroulant li:hover{
                                border-radius:0;
                                }
                                #menu-deroulant li:last-child{
                                border-radius:0 0 8px 8px;
                                }
                                #menu-deroulant li:hover ul,
                                #menu-deroulant li li:hover ul{
                                  overflow:visible;
                                  max-height:55em;
                                }
                                #menu-deroulant ul ul {
                                  left:100%;
                                  top:0
                                }



                                • Partager sur Facebook
                                • Partager sur Twitter
                                Vous cherchez à faire un menu déroulant ? Visitez www.frogweb.fr ! frogweb le site qu'il vous faut !
                                  16 juillet 2019 à 17:04:14

                                  • Partager sur Facebook
                                  • Partager sur Twitter

                                  Face a quelqu'un pour qui l'on n'éprouve que de l'aversion et du mépris, les yeux d'un homme deviennent extrêmement froids et cruels.

                                    17 juillet 2019 à 9:07:14

                                    Super, merci beaucoup, c'est parfait !!!!

                                    • Partager sur Facebook
                                    • Partager sur Twitter

                                    Menu déroulant avec sous-sous-menu

                                    × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
                                    × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
                                    • Editeur
                                    • Markdown