0

我看过这个问题,但我似乎无法将答案应用于我自己的菜单。我的 Suckerfish 菜单基本上是这样的(http://htmldog.com/articles/suckerfish/dropdowns/example/vertical.html),我自己做了一些颜色调整/字体调整/并清除了边框桌子。我怎样才能做到这一点,以便当您在选择的选项中移动时,您所经历的所有内容都保持突出显示,以便您知道您选择了哪些选项以到达您所在的位置?我已经对它附带的所有样式进行了反复试验,例如#nav、this 和#nav、that,但它们似乎都没有同时引用一个嵌套列表项的所有先前菜单。

我几乎一直在自学这个,所以我试图在我的问题中尽可能清楚,希望我有道理!!!

太感谢了!

4

2 回答 2

1

以上在 Firefox 中运行良好,但在 IE 中不行,因为 IE 不尊重继承。这使得当您将鼠标移动到 LI 标记的其他部分时,链接的颜色不会停留在其悬停颜色。

下面的代码并不漂亮,但它可以工作:

HTML

<ul id="nav">
 <li ><a href="test.org" class="navlink">Test</a>
             <ul>
         <li ><a href="test2.org">Test2</a></li>
                <li ><a href="test2.org">Test2</a></li>
             </ul>
        </li>
 <li ><a href="test.org" class="navlink">Bonk</a>
             <ul>
         <li ><a href="test2.org">Bonk2</a></li>
                <li ><a href="test2.org">Bonk2</a></li>
             </ul>
        </li>
</ul>

Javascript

sfHover = function() {
 var sfEls = document.getElementById("nav").getElementsByTagName("LI");
 for (var i=0; i<sfEls.length; i++) {
  sfEls[i].onmouseover=function() {
   var els = this.getElementsByTagName("A");
   for (var j=0; j<els.length; j++) {
    if(els[j].className =="navlink") els[j].style.color = '#FFFFFF';
   }
   this.className+=" sfhover";
  }
  sfEls[i].onmouseout=function() {
   var els = this.getElementsByTagName("A");
   for (var j=0; j<els.length; j++) {
    if(els[j].className =="navlink") els[j].style.color = 'Red';
   }
   this.className=this.className.replace(new RegExp(" sfhover\\b"), "");
  }
 }
}
if (window.attachEvent) window.attachEvent("onload", sfHover);
于 2010-01-12T21:31:48.610 回答
1

您需要将颜色样式从 <a> 标签移动到 <li> 标签:

#nav li { /* all list items */
    ...
    background-color : white;
    color : black;
}
#nav li:hover,
li.sfhover{
    color : white;
    background-color : black;
    }

并且还设置 <a> 从它的父级获取它的颜色:

#nav li a {
    color:inherit;
}

请在此处查看带有这些更改的示例版本:http: //demo.raleighbuckner.com/so/1347579/

此更改的原因是导航的第二和第三级是 <li> 标记的子级,而不是 <a> 标记的子级。因此,当您将鼠标悬停在子列表上时,您不再将鼠标悬停在 <a> 上,并且颜色不再适用。

将着色样式向上移动到 <li> 允许悬停仍然有效。

于 2009-08-28T20:29:12.280 回答