首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使较高的菜单在suckerfish垂直突出显示

使较高的菜单在suckerfish垂直突出显示
EN

Stack Overflow用户
提问于 2009-08-28 15:02:36
回答 2查看 514关注 0票数 0

我见过有人问这个问题,但我似乎无法将答案应用到我自己的菜单上。我的suckerfish菜单基本上是这样的(http://htmldog.com/articles/suckerfish/dropdowns/example/vertical.html),我自己做了一些颜色/字体/的调整,并清除了表格中的边界。我如何才能让你在选择的选项中移动时,你所经历的一切都保持高亮,这样你就知道你选择了哪些选项才能到达现在的位置?我已经对它附带的所有样式进行了反复试验,比如#nav,this和#nav,但它们似乎都不能同时引用一个嵌套列表项的所有先前菜单。

我一直在自学,所以我的问题尽可能的清晰,希望我能说得通!

非常感谢!

EN

回答 2

Stack Overflow用户

发布于 2009-08-28 20:29:12

您需要将颜色样式从标记移动到标记:

代码语言:javascript
复制
#nav li { /* all list items */
    ...
    background-color : white;
    color : black;
}
#nav li:hover,
li.sfhover{
    color : white;
    background-color : black;
    }

并将设置为从父对象中获取其颜色:

代码语言:javascript
复制
#nav li a {
    color:inherit;
}

请在这里查看您的示例的一个版本,其中包含这些更改:http://demo.raleighbuckner.com/so/1347579/

此更改的原因是导航的第二级和第三级是标记的子级,而不是标记的子级。因此,当您更多地停留在子列表上时,您不再将鼠标悬停在上,颜色也不再适用。

将着色样式上移到允许悬停仍然有效。

票数 1
EN

Stack Overflow用户

发布于 2010-01-13 05:31:49

上面的代码在Firefox中工作得很好,但在IE中就不行了,因为IE不支持inherit。这使得当您将鼠标移动到LI标记的其他部分时,链接的颜色不会停留在其悬停颜色。

下面的代码并不美观,但它可以工作:

HTML

代码语言:javascript
复制
<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);
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1347579

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档