Basé sur this tutorial, j'ai construit un menu déroulant pour template from Styleshout.com. medigerati helped me pour que cela fonctionne maintenant - au moins dans Firefox 3.5 et Internet Explorer 8.Améliorer le code pour le menu déroulant (HTML/CSS/JavaScript)
You can see the menu in action here.
Mais malheureusement, il ne fonctionne pas bien dans tous les navigateurs. Dans Internet Explorer 6 - par exemple - il n'est pas affiché correctement.
Pourriez-vous s'il vous plaît me dire comment je peux améliorer le code pour le faire fonctionner dans plus de navigateurs?
J'espère que vous pouvez m'aider. Merci d'avance!
HTML:
<ul id="nav">
<li><a href="index.html">Nav #1</a>
<ul>
<li><a href="#">Nav #1.1</a></li>
<li><a href="#">Nav #1.2</a></li>
</ul>
</li>
<li><a href="index.html">Nav #2</a>
<ul>
<li><a href="#">Nav #2.1</a></li>
<li><a href="#">Nav #2.2</a></li>
</ul>
</li>
<li><a href="index.html">Nav #3</a>
<ul>
<li><a href="#">Nav #3.1</a></li>
<li><a href="#">Nav #3.2</a></li>
</ul>
</li>
</ul>
CSS:
ul#nav li ul {
position: absolute;
left: -9999px;
top: 100%;
display: block;
width: 100px;
background-color: transparent;
}
ul#nav li {
position: relative;
float: left;
}
/* Links in the drop down lists start */
ul#nav li ul li a {
clear: left;
display: block;
text-decoration: none;
width: 100px;
background-color: #333;
}
/* Links in the drop down lists end */
/* Making visible start */
ul#nav li:hover ul, #nav li.sfhover ul {
left: auto;
}
/* Making visible end */
JavaScript:
sfHover = function() {
var sfEls = document.getElementById("nav").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);
Merci. Mais quelles sont exactement les différences entre mon ancien code et votre nouveau code? – caw
Notez la fonction addEvent? Cette fonction attache des événements de manière compatible avec tous les navigateurs. Ceci est nécessaire car tous les navigateurs ne sont pas 'sfEls [i] .onmouseout =' ou 'element.attachEvent (...)'. – Joel
Ça ne marche pas! Au début, je pensais que ce serait mais je ne vois pas que ce n'est pas le cas. Les menus déroulent correctement. Mais ils ne se ferment plus. Voir ici: http://wp1080088.wp029.webpack.hosteurope.de/Refresh1-1/ Que puis-je faire? Pourquoi est-ce? – caw