R1Zib
Accueil du site > Web 2.0 > JavaScript > Menu déroulant compatible IE6

Menu déroulant compatible IE6

Internet explorer

Voici les différentes façons d’avoir un menu horizontal à 2 niveaux compatible avec Internet explorer.

code HTML :

  • Menu 1
    1. sous Menu1
    2. sous Menu2
    3. sous Menu3
  • Menu 2
    1. Ma présentation
    2. sous Menu2
    3. sous Menu3
  • code CSS :


    #navigation ul {
    list-style-type:none;
    }

    #navigation li{
    float:left;
    position: relative; /* ATTENTION TRES IMPORTANT */
    }
    #navigation a {
    display:block;
    float:left;
    width:300px; /* largeur de chaque entrée dans le menu */
    height:40px;
    text-decoration:none;
    }

    #navigation ol {
    display: none;
    list-style-type:none;
    }


    #navigation ol {
    position: absolute; /* se positionne par rapport à élément pére positionné : #navigation li */
    top:40px;  
    left:0;
    display: block;
    z-index:1;
    }

    #navigation ol li,#navigation ol a{
    float:none;
    }

    Avec un minimum de code en javascript

    Voir sur le site du zéro

    Exemple :

    Voir le code :

    placer ce code javascript en début de programme


    sfHover = function() {
           var sfEls = document.getElementById("navigation").getElementsByTagName("li");
           for (var i=0; i<sfEls.length; i++) {
                   sfEls[i].onmouseover=function() {
                           this.className+=" sfhover";
                   }
                   sfEls[i].onmouseout=function() {
                           this.className=this.className.replace(new RegExp(" sfhover\\b"), "");
                   }
           }
    }
    if (window.attachEvent) window.attachEvent("onload", sfHover);

    La partie CSS :


    #navigation li.sfhover /* Sous-sous-listes lorsque la souris passe sur un élément de liste */
    {
           left: -999em; /* On expédie les sous-sous-listes hors du champ de vision */
    }

    #menu li:hover ul, #menu li li:hover ul, #menu li.sfhover ul, #menu li li.sfhover ul  /* Sous-listes lorsque la souris passe sur un élément de liste ET sous-sous-lites lorsque la souris passe sur un élément de sous-liste */
    {
           left: auto; /* Repositionnement normal */
           min-height: 0; /* Corrige un bug sous IE */
    }

Répondre à cet article