我见过有人问这个问题,但我似乎无法将答案应用到我自己的菜单上。我的suckerfish菜单基本上是这样的(http://htmldog.com/articles/suckerfish/dropdowns/example/vertical.html),我自己做了一些颜色/字体/的调整,并清除了表格中的边界。我如何才能让你在选择的选项中移动时,你所经历的一切都保持高亮,这样你就知道你选择了哪些选项才能到达现在的位置?我已经对它附带的所有样式进行了反复试验,比如#nav,this和#nav,但它们似乎都不能同时引用一个嵌套列表项的所有先前菜单。
我一直在自学,所以我的问题尽可能的清晰,希望我能说得通!
非常感谢!
发布于 2009-08-28 20:29:12
您需要将颜色样式从标记移动到标记:
#nav li { /* all list items */
...
background-color : white;
color : black;
}
#nav li:hover,
li.sfhover{
color : white;
background-color : black;
}并将设置为从父对象中获取其颜色:
#nav li a {
color:inherit;
}请在这里查看您的示例的一个版本,其中包含这些更改:http://demo.raleighbuckner.com/so/1347579/
此更改的原因是导航的第二级和第三级是标记的子级,而不是标记的子级。因此,当您更多地停留在子列表上时,您不再将鼠标悬停在上,颜色也不再适用。
将着色样式上移到允许悬停仍然有效。
发布于 2010-01-13 05:31:49
上面的代码在Firefox中工作得很好,但在IE中就不行了,因为IE不支持inherit。这使得当您将鼠标移动到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);https://stackoverflow.com/questions/1347579
复制相似问题