Хочу сделать многоуровневое меню вида CODE:<div id="menu">
<ul id="nav">
<li><a href="#">Главная</a></li>
<li><a href="#" id="sub">Новости</a>
<ul>
<li><a href="#">Sub menu 1</a></li>
<li><a href="#" id="sub">Sub menu 2</a>
<ul>
<li><a href="#">Sub menu 1</a></li>
<li><a href="#" id="sub">Sub menu 2</a>
<ul>
<li><a href="#" id="sub">Sub menu 1</a>
<ul>
<li><a href="#">Sub menu 1</a></li>
<li><a href="#">Sub menu 2</a></li>
<li><a href="#" id="sub">Sub menu 3</a>
<ul>
<li><a href="#">Sub menu 1</a></li>
<li><a href="#">Sub menu 2</a></li>
<li><a href="#">Sub menu 3</a></li>
<li><a href="#" id="sub">Sub menu 4</a>
<ul>
<li><a href="#">Sub menu 1</a></li>
<li><a href="#">Sub menu 2</a></li>
<li><a href="#">Sub menu 3</a></li>
<li><a href="#">Sub menu 4</a></li>
</ul></li>
</ul></li>
<li><a href="#">Sub menu 4</a></li>
</ul></li>
<li><a href="#">Sub menu 2</a></li>
<li><a href="#">Sub menu 3</a></li>
<li><a href="#">Sub menu 4</a></li>
</ul></li>
<li><a href="#">Sub menu 3</a></li>
<li><a href="#">Sub menu 4</a></li>
</ul></li>
<li><a href="#">Sub menu 3</a></li>
<li><a href="#">Sub menu 4</a></li>
</ul>
</li>
</ul>
</div> (тут кода на 5 уровней)
На каждый уровень приходится прописывать CSS, но не в этом беда... IE не понимает этого... CSS CODE:#menu ul li ul {position: absolute;top: 29px;left: 0; display:none; width:112px}
#menu ul li:hover ul,#main #container #menu ul li.over ul {display: block}
#menu ul li:hover li ul,#menu ul li.over li ul {display: none}
#menu ul li:hover li:hover ul,#menu ul li.over li.over ul {display: block}
#menu ul li:hover ul li:hover ul li ul,#menu ul li.over li.over li ul {display: none}
#menu ul li:hover li:hover li:hover ul,#menu ul li.over li.over li.over ul {display: block}
и т.д. для каждого уровня...
li.over добавлен так как li:hover ослик не понимает... для этого добавлен JS CODE:<!--
startList = function() {
navRoot1 = document.getElementById("nav");
Add(navRoot1);
function Add(navRoot) {
if (document.all&&document.getElementById) {
for (i=0; i<navRoot.childNodes.length; i++) {
node = navRoot.childNodes[i];
if (node.nodeName=="LI") {
for (ii=0; ii<node.childNodes.length; ii++) {
if (node.childNodes[ii].nodeName == "UL") {
if (document.all&&document.getElementById) {
UlNode = node.childNodes[ii];
for (iii=0; iii<UlNode.childNodes.length; iii++) {
UlLiNode = UlNode.childNodes[iii];
if (UlLiNode.nodeName=="LI") {
UlLiNode.onmouseover=function() {
this.className+=" over";
}
UlLiNode.onmouseout=function() {
this.className=this.className.replace(" over", "");
}
}
}
}
}
}
node.onmouseover=function() {
this.className+=" over";
}
node.onmouseout=function() {
this.className=this.className.replace(" over", "");
}
}
}
}
return;
}
}
window.onload=startList;
//--> стащил у Маркуса...
Но дальше двух уровней это меню в IE не пашет... даже просто li на втором уровне не реагирует (в CSS добавлено #menu ul li ul li:hover,#main #container #menu ul li ul li.over{ background:#FFF})
Можно ли заставить эту конструкцию пахать под IE? |