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 :
- <script language="javascript" type="text/javascript" src="Composants/_Menu.js"></script>
- <div id="MenuHorizontal" onMouseOver="SetNbSubMenu('3');">
- <div class="MenuSeparator"> </div>
- <a href="#" id="Link_1" class="LinkLevel1" onMouseOver="HideAll();">Accueil</a>
- <a href="#" id="Link_2" class="LinkLevel1" onMouseOver="HideAll();DispHideSubMenu('2');ClearSubMenuTimeOut();" onMouseOut="SubMenuTimeOut();">Cartes de visite</a>
- <a href="#" id="Link_3" class="LinkLevel1" onMouseOver="HideAll();DispHideSubMenu('3');ClearSubMenuTimeOut();" onMouseOut="SubMenuTimeOut();">Suivi global</a>
- </div>
- <div style="display: none;" id="Sub_1" class="SubMenu">
- <a class="LinkLevel2" href="#" onMouseOver="ClearSubMenuTimeOut();" onMouseOut="SubMenuTimeOut();" onClick="HideAll();">Sous-Menu 1</a>
- </div>
- <div style="display: none;" id="Sub_2" class="SubMenu">
- <a class="LinkLevel2" href="#" onMouseOver="ClearSubMenuTimeOut();" onMouseOut="SubMenuTimeOut();" onClick="HideAll();">Sous-Menu 1</a>
- <a class="LinkLevel2" href="#" onMouseOver="ClearSubMenuTimeOut();" onMouseOut="SubMenuTimeOut();" onClick="HideAll();">Sous-Menu 2</a>
- </div>
- <div style="display: none;" id="Sub_3" class="SubMenu">
- <a class="LinkLevel2" href="#" onMouseOver="ClearSubMenuTimeOut();" onMouseOut="SubMenuTimeOut();" onClick="HideAll();">Sous-Menu 1</a>
- <a class="LinkLevel2" href="#" onMouseOver="ClearSubMenuTimeOut();" onMouseOut="SubMenuTimeOut();" onClick="HideAll();">Sous-Menu 2</a>
- <a class="LinkLevel2" href="#" onMouseOver="ClearSubMenuTimeOut();" onMouseOut="SubMenuTimeOut();" onClick="HideAll();">Sous-Menu 3</a>
- <a class="LinkLevel2" href="#" onMouseOver="ClearSubMenuTimeOut();" onMouseOut="SubMenuTimeOut();" onClick="HideAll();">Sous-Menu 4</a>
- </div>
|
le JS
Code :
- var MyTimeOut;
- var NbSousMenu;
- MyTimeOut = '';
- NbSousMenu = 3;
- function SetNbSubMenu(Nombre)
- {
- NbSousMenu = Nombre;
- }
- function DispHideSubMenu(SubMenu)
- {
- document.getElementById('Sub_'+SubMenu).style.display = 'block';
- document.getElementById('Sub_'+SubMenu).style.left = document.getElementById('Link_'+SubMenu).offsetLeft + "px";
- //document.getElementById('Sub_'+SubMenu).style.top = (document.getElementById('Link_'+SubMenu).offsetTop + 30) + "px";
-
- SubMenuTimeOut();
- }
- function HideAll()
- {
- var i;
- for (i = 1; i <= NbSousMenu; i++)
- {
- document.getElementById('Sub_'+i).style.display = 'none';
- }
- /*
- document.getElementById('Sub_1').style.display = 'none';
- document.getElementById('Sub_2').style.display = 'none';
- document.getElementById('Sub_3').style.display = 'none';
- document.getElementById('Sub_4').style.display = 'none';
- document.getElementById('Sub_5').style.display = 'none';
- */
- }
- function SubMenuTimeOut()
- {
- MyTimeOut += ','+setTimeout("HideAll()", 1200);
- }
- function ClearSubMenuTimeOut()
- {
- var TabTimeOut, i;
-
- TabTimeOut = MyTimeOut.split(',')
- for (i=0; i<TabTimeOut.length; i++)
- {
- window.clearTimeout(TabTimeOut[i]);
- }
-
- MyTimeOut = '';
- }
|
et le CSS
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...