Menu UL + compatibilité IE6

Menu UL + compatibilité IE6 - HTML/CSS - Programmation

Marsh Posté le 25-08-2008 à 14:26:20    

Bonjour a tous,
 
Je dois créer un menu à deux niveaux tout en CSS et qu'il soit compatible avec IE6/IE7 et FF2/FF3!
Le problème se pose pour IE6 qui ne connait pas la pseudo-classe :hover autre que sur l'élément a. Pour contrer ce problème, je passe par un fichier .htc.
Cette étape fonctionne a moitié : lorsque je survole un item du premier, ca affiche bien le sous menu correspondant, mais suivant la position du curseur il ne prend pas la même classe. Il fait une différence entre les éléments 'ul' du sous menu, 'li' du sous menu et 'a' du sous menu!
 
Voila mon code :
 
Source HTML

Code :
  1. <link type="text/css" href="Menu.css" rel="Stylesheet" />
  2. <!--[if lte IE 6]>
  3.                     <link href="MenuIE6.css" rel="stylesheet" type="text/css" />
  4. <![endif]-->
  5.              <div>
  6.  <ul id="menu">
  7.   <li name="0">
  8.    <a href="/MenuHorizontal/Default.aspx"><span>Home</span></a>
  9.   </li>
  10.   <li name="1">
  11.    <a href="/MenuHorizontal/WebForm10.aspx"><span>Page 1</span></a>
  12.    <ul style="left: 0px;">
  13.     <li name="2">
  14.      <a href="/MenuHorizontal/WebForm11.aspx">Page 1.1</a>
  15.     </li>
  16.     <li name="3" class="last">
  17.      <a href="/MenuHorizontal/WebForm12.aspx">Page 1.2</a>
  18.     </li>
  19.    </ul>
  20.   </li>
  21.   <li name="4">
  22.    <a href="/MenuHorizontal/WebForm20.aspx"><span>Page 2</span></a>
  23.    <ul style="left: 0px;">
  24.     <li name="5">
  25.      <a href="/MenuHorizontal/WebForm21.aspx">Page 2.1</a>
  26.     </li>
  27.     <li name="6">
  28.      <a href="/MenuHorizontal/WebForm22.aspx">Page 2.2</a>
  29.     </li>
  30.     <li name="7">
  31.      <a href="/MenuHorizontal/WebForm23.aspx">Page 2.3</a>
  32.     </li>
  33.     <li name="8">
  34.      <a href="/MenuHorizontal/WebForm24.aspx">Page 2.4</a>
  35.     </li>
  36.     <li name="9">
  37.      <a href="/MenuHorizontal/WebForm25.aspx">Page 2.5</a>
  38.     </li>
  39.     <li name="10">
  40.      <a href="/MenuHorizontal/WebForm26.aspx">Page 2.6</a>
  41.     </li>
  42.     <li name="11" class="last">
  43.      <a href="/MenuHorizontal/WebForm27.aspx">Page 2.7</a>
  44.     </li>
  45.    </ul>
  46.   </li>
  47.  </ul>
  48. </div>


 
CSS : Menu

Code :
  1. #menu{ width:635px;  height:53px;  margin:20px 0px 0px 0px;  padding:0px;  list-style:none;  background:url('images/menu-background.gif') no-repeat 50% bottom; overflow:hidden}
  2. #menu li{ float:left;  margin:0px;  padding:3px 0px 4px 0px}
  3. #menu li a{ color:#56A1CE;  font-weight:bold;  text-decoration:none;  margin:0px;  display:block}
  4. #menu>li a:hover{ background:url('images/menu-hov.gif') no-repeat left top; overflow:hidden;  color:#8C8C8C}
  5. #menu li a span{ margin:0px;  padding:3px 15px 4px 10px; display:block;}
  6. #menu>li a:hover span{ background:url('images/menu-arrow.gif') no-repeat right top; overflow:hidden}
  7. #menu li li a{ display:block; padding:2px 0px 2px 0px;  color:#56A1CE;  margin-top:2px;  text-decoration:none}
  8. #menu li li a:hover{ color:#8C8C8C; text-decoration:none; background:none}
  9. #menu li li{ float:left; border:0;  padding:0px 7px 0px 7px; border-right:1px solid #8C8C8C;position: relative; top: 5px;}
  10. #menu li li.last {border:0px;}
  11. li ul{visibility:hidden; position:absolute;font-size:90%; list-style:none;}
  12. html>body li:hover ul { visibility:visible; width: 650px;}


 
CSS : MenuIE6.css

Code :
  1. #menu li, #menu li a, #menu li a span {  behavior: url('IE6Hover.htc'); }
  2. .displayItems {visibility: visible;top: 0px;}
  3. #menu li a.displayItems { background: url('images/menu-hov.gif') no-repeat left top;overflow: hidden;color: #8C8C8C;}
  4. #menu li a.displayItems span {background: url('images/menu-arrow.gif') no-repeat right top;overflow: hidden;}
  5. #menu li li a.displayItems { color: #8C8C8C; text-decoration: none; background: none; }


 
Et le fichier .htc

Code :
  1. <public:attach event="onmouseover" onevent="montrer()" />
  2. <public:attach event="onmouseout" onevent="cacher()" />
  3. <script language="JScript">
  4.     var _liste = this.getElementsByTagName('*');
  5.     var _listeLI = this.getElementsByTagName('li');
  6.     var _listeA = this.getElementsByTagName('a');
  7.     var _listeSPAN = this.getElementsByTagName('span');
  8.     function montrer() {
  9.         var i;
  10.         for (i = 0; i < _listeLI.length; i++) {
  11.             _listeLI[i].className = 'displayItems';
  12.         }
  13.         window.status += i;
  14.         for (i = 0; i < _listeA.length; i++)
  15.         { _listeA[0].className = 'displayItems'; }
  16.         window.status += i;
  17.         for (i = 0; i < _listeSPAN.length; i++)
  18.         { _listeSPAN[0].className = 'displayItems'; }
  19.         window.status += i+";";
  20.     }
  21.     function cacher() {
  22.         for (i = 0; i < _liste.length; i++) {
  23.             _liste[i].className = '';
  24.         }
  25.     }
  26. </script>


 
Désolé pour la longueur^^
 
Est-ce que quelqu'un peut m'aider... :)
 
Sinon, une deuxième petite chose, si je centre mon le div contenant le menu, les sous menus prennent une position absolute au lieu de relative (sur tout les navig)??
 
Merci d'avance Enjoy @+
 
Julien

Reply

Marsh Posté le 25-08-2008 à 14:26:20   

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed