Bug Menu IE 6 (marche sous FF et IE7)

Bug Menu IE 6 (marche sous FF et IE7) - HTML/CSS - Programmation

Marsh Posté le 14-05-2007 à 15:31:59    

Bonjour à tous (ça fait longtemps que je suis pas venu tiens).
 
Je suis sur un petit os, mais j'ai malheureusement pas trop le temps de galérer dessus, et je commence à être à court de solutions :  
 
Je n'ai pas de page à vous montrer, le résultat est plutot confidentiel.
 
Par contre, j'ai ça :  
 
le HTML

Code :
  1. <script language="javascript" type="text/javascript" src="Composants/_Menu.js"></script>
  2. <div id="MenuHorizontal" onMouseOver="SetNbSubMenu('3');">
  3.     <div class="MenuSeparator">&nbsp;</div>
  4.     <a href="#" id="Link_1" class="LinkLevel1" onMouseOver="HideAll();">Accueil</a>
  5.     <a href="#" id="Link_2" class="LinkLevel1" onMouseOver="HideAll();DispHideSubMenu('2');ClearSubMenuTimeOut();" onMouseOut="SubMenuTimeOut();">Cartes de visite</a>
  6.     <a href="#" id="Link_3" class="LinkLevel1" onMouseOver="HideAll();DispHideSubMenu('3');ClearSubMenuTimeOut();" onMouseOut="SubMenuTimeOut();">Suivi global</a>
  7. </div>
  8. <div style="display: none;" id="Sub_1" class="SubMenu">
  9.     <a class="LinkLevel2" href="#" onMouseOver="ClearSubMenuTimeOut();" onMouseOut="SubMenuTimeOut();" onClick="HideAll();">Sous-Menu 1</a>
  10. </div>
  11. <div style="display: none;" id="Sub_2" class="SubMenu">
  12. <a class="LinkLevel2" href="#" onMouseOver="ClearSubMenuTimeOut();" onMouseOut="SubMenuTimeOut();" onClick="HideAll();">Sous-Menu 1</a>
  13.     <a class="LinkLevel2" href="#" onMouseOver="ClearSubMenuTimeOut();" onMouseOut="SubMenuTimeOut();" onClick="HideAll();">Sous-Menu 2</a>
  14. </div>
  15. <div style="display: none;" id="Sub_3" class="SubMenu">
  16. <a class="LinkLevel2" href="#" onMouseOver="ClearSubMenuTimeOut();" onMouseOut="SubMenuTimeOut();" onClick="HideAll();">Sous-Menu 1</a>
  17.     <a class="LinkLevel2" href="#" onMouseOver="ClearSubMenuTimeOut();" onMouseOut="SubMenuTimeOut();" onClick="HideAll();">Sous-Menu 2</a>
  18.     <a class="LinkLevel2" href="#" onMouseOver="ClearSubMenuTimeOut();" onMouseOut="SubMenuTimeOut();" onClick="HideAll();">Sous-Menu 3</a>
  19.     <a class="LinkLevel2" href="#" onMouseOver="ClearSubMenuTimeOut();" onMouseOut="SubMenuTimeOut();" onClick="HideAll();">Sous-Menu 4</a>
  20. </div>


 
le JS

Code :
  1. var MyTimeOut;
  2.     var NbSousMenu;
  3.     MyTimeOut = '';
  4.     NbSousMenu = 3;
  5.     function SetNbSubMenu(Nombre)
  6.     {
  7.     NbSousMenu = Nombre;
  8.     }
  9.     function DispHideSubMenu(SubMenu)
  10.     {
  11.     document.getElementById('Sub_'+SubMenu).style.display = 'block';
  12.     document.getElementById('Sub_'+SubMenu).style.left = document.getElementById('Link_'+SubMenu).offsetLeft + "px";
  13.     //document.getElementById('Sub_'+SubMenu).style.top = (document.getElementById('Link_'+SubMenu).offsetTop + 30) + "px";
  14.    
  15.     SubMenuTimeOut();
  16.     }
  17.     function HideAll()
  18.     {
  19.     var i;
  20.     for (i = 1; i <= NbSousMenu; i++)
  21.     {
  22.      document.getElementById('Sub_'+i).style.display = 'none';
  23.     }
  24.     /*
  25.      document.getElementById('Sub_1').style.display = 'none';
  26.      document.getElementById('Sub_2').style.display = 'none';
  27.      document.getElementById('Sub_3').style.display = 'none';
  28.      document.getElementById('Sub_4').style.display = 'none';
  29.      document.getElementById('Sub_5').style.display = 'none';
  30.     */
  31.     }
  32.     function SubMenuTimeOut()
  33.     {
  34.     MyTimeOut += ','+setTimeout("HideAll()", 1200);
  35.     }
  36.     function ClearSubMenuTimeOut()
  37.     {
  38.     var TabTimeOut, i;
  39.    
  40.     TabTimeOut = MyTimeOut.split(',')
  41.     for (i=0; i<TabTimeOut.length; i++)
  42.     {
  43.      window.clearTimeout(TabTimeOut[i]);
  44.     }
  45.    
  46.     MyTimeOut = '';
  47.     }


 
et le CSS

Code :
  1. /*
  2. Couleurs Charte :  
  3. #002448 Bleu foncé
  4. #004080 ^
  5. #a6d2ff ^
  6. #cee7ff ^
  7. #ecf5ff Bleu Clair
  8. #57a0cc Gris/Bleu Foncé
  9. #a6cce3 ^
  10. #d1e6f1 ^
  11. #e7f1f8 Gris/Bleu Clair
  12. */
  13. .MenuSeparator
  14. {
  15.     float: left;
  16. }
  17. #MenuHorizontal
  18. {
  19. width: 100%;
  20. height: 30px;
  21. background-color: #2e5072;
  22. border-left: 1px solid #002448;
  23. border-right: 1px solid #002448;
  24.     border-bottom: 1px solid #002448;
  25. padding-top: 1px;
  26. }
  27. #MenuHorizontal .LinkLevel1, .LinkLevel1:visited
  28. {
  29. background-image: url("../images/Menu_Element.jpg" );
  30. background-repeat:no-repeat;
  31. color: #FFFFFF;
  32. text-decoration: none;
  33. position: relative;
  34. padding-top: 6px;
  35. height: 24px;
  36. float: left;
  37. display: block;
  38. width: 130px;
  39. text-align: center;
  40. }
  41. #MenuHorizontal .LinkLevel1:hover
  42. {
  43. background-image: url("../images/Menu_ElementHover.jpg" );
  44. text-decoration: underline;
  45. color: #002448;
  46. /*background-color: #002448;*/
  47. }
  48. #MenuHorizontal .LinkLevel1:active
  49. {
  50. color: #800000;
  51. }
  52. #MenuDate
  53. {
  54. width: 80px;
  55. height: 100%;
  56. float: right;
  57. }
  58. #MenuDate TD
  59. {
  60. font-size: 10px;
  61. vertical-align: middle;
  62. text-align: right;
  63. color: #ffffff;
  64. }
  65. .SubMenu
  66. {
  67. position: absolute;
  68. width: 132px;
  69. background-color: #2e5072;
  70. /*margin-top: 1px;*/
  71. border-bottom: 1px solid #002448;
  72. border-left: 1px solid #002448;
  73. border-right: 1px solid #002448;
  74. text-align: center; /* pour IE6 */
  75. }
  76. .LinkLevel2
  77. {
  78. width: 115px;
  79. max-width: 115px;
  80. position: relative;
  81. display: block;
  82. text-align: left;
  83. padding: 2px;
  84. background-color: #9daaba;
  85. border: 1px solid #002448;
  86. margin-bottom: 4px;
  87. margin-left: auto;
  88. margin-right: auto;
  89. clear: both;
  90. color: #ffffff;
  91. text-decoration: none;
  92. }
  93. .LinkLevel2:hover
  94. {
  95. background-color: #66A8B8;
  96. color: #FFFFFF;
  97. }
  98. .FondSubMenu
  99. {
  100. position: static;
  101. width: 100%;
  102. height: 100%;
  103. border: 1px solid #4D4D4D;
  104. z-index: -1;
  105. }


C'est un menu Horizontal avec sous-menu déroulant.
Le problème est que sous IE 6 (pas testé 5.5, mais à mon avis ça doit faire pareil), les éléments du sous menu, lorsqu'il y en a plus que 2, se décalent sur le hover (c'est la classe LinkLevel2 et le :hover), c'est à dire que la marge saute, comme ça.
 
Dans le js, rien de particulier (je pense). Donc là je ne vois pas vraiment d'ou ça peut venir.
 
Merci d'avance pour votre aide...
 

Reply

Marsh Posté le 14-05-2007 à 15:31:59   

Reply

Marsh Posté le 14-05-2007 à 16:49:13    

Ben dis donc, si le reste du code, ressemble à ça aussi, le projet confidentiel, va au mur :D
 
Pour des jolies menu, qui passe partout :
http://css.maxdesign.com.au/listamatic/index.htm

Reply

Marsh Posté le 14-05-2007 à 17:49:07    

Bah, c'est pas si terrible que ça quand même :D
 
Ya quand même des div et du css, au moins ça... Après c'est pas ultra compliant, mais bon, ça marche... J'ai malheureusement pas trop le temps de faire de l'optimisation.
 
Et non j'irais pas au mur, je sais tout de même un minimum développer ;)
 
Bref, personne pour le bug ?

Reply

Marsh Posté le 14-05-2007 à 20:00:13    

C'est vrai que dés qu'on met des div...tout de suite, on se sent plus puissant :o
on devrais coder, que en div, parler que en div...tu penses pas...

Reply

Marsh Posté le 15-05-2007 à 08:37:35    

Ca va finir en débat d'idées ça :D
 
Ce que je veux dire, c'est que j'ai passé l'époque des tableaux.
Faut pas s'enflammer.
 
J'ai pas demander d'avis sur mon code ou sur le site, je demande juste pourquoi sur IE6, sur le hover de mes links, ça bousille les margins (je pense que c'est ça) ou autre chose, et du coup mon lien bouge...
 
Personne n'a une idée ?

Reply

Marsh Posté le 15-05-2007 à 16:10:27    

Bon, j'ai du modifier mon menu, mais j'aimerais bien comprendre quand même...
 
Donc n'hésitez pas
 
:bounce:

Reply

Sujets relatifs:

Leave a Replay

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