我在html / css中创建了一个菜单,但我想在子项hover上显示子项。问题是当我在IE中将鼠标悬停在它上面时,当我将鼠标悬停在菜单项中的文本上时,它只显示它的子项。如果我将鼠标悬停在元素上而不是文本上,则子项将再次消失。因此,如果我将鼠标移动并想将鼠标移动到子菜单,子菜单就会消失,除非我足够快。这很烦人,有谁知道我怎么解决这个问题?
我的菜单代码如下:
<ul id="leftnav">
<li><a>Item1</a></li>
<ul>
<li><a href='#'>SubItem1</a></li>
<li><a href='#'>SubItem2</a></li>
<li><a href='#'>SubItem3</a></li>
</ul>
<li><a>Item2</a></li>
<ul>
<li><a href='#'>SubItem1</a></li>
<li><a href='#'>SubItem2</a></li>
<li><a href='#'>SubItem3</a></li>
</ul>
</ul>
菜单应该是一个左侧菜单,仅在悬停时显示它的子项,所以我使用css通过以下代码实现此目的:
#leftnav, #leftnav ul
{
padding: 0;
margin: 0;
}
#leftnav ul li
{
margin-left: 102px;
position: relative;
top: -19px; /*sets the childitems on the same height as the parent item*/
}
#leftnav li
{
float: left;
width: 100px;
}
#leftnav ul
{
position: absolute;
width: 100px;
left: -1000px; /*makes it disappear*/
}
#leftnav li:hover ul, #leftnav li.ie_does_hover ul
{
left: auto;
}
#leftnav a
{
display: block;
height: 15px;
margin-top: 2px;
margin-bottom: 2px;
}
由于这只适用于firefox,我还必须插入一个javascript,以便在IE中使用代码工作:
<script language="JavaScript">
sfHover = function()
{
var sfElsE = document.getElementById("leftnav").getElementsByTagName("LI");
for (var i=0; i<sfElsE.length; i++)
{
sfElsE[i].onmouseover=function()
{
this.className+=" ie_does_hover";
}
sfElsE[i].onmouseout=function()
{
this.className=this.className.replace(new RegExp(" ie_does_hover\\b"), "");
}
}
}
if (window.attachEvent) window.attachEvent("onload", sfHover);
</script>
许多人非常感谢你的回复
答案 0 :(得分:2)
在CSS中你有:
#leftnav li:hover ul
这意味着该规则适用于作为li元素的子元素的ul元素,当父li被悬停时。
但是在你的HTML中,你有:
<li><a>Item2</a></li>
<ul>
<li><a href='#'>SubItem1</a></li>
</ul>
因此子项ul
不是项ul
的子项,因此该规则永远不会实现。您需要将子项嵌套到项目中。像这样:
<ul id="leftnav">
<li><a>Item1</a>
<ul>
<li><a href='#'>SubItem1</a></li>
<li><a href='#'>SubItem2</a></li>
<li><a href='#'>SubItem3</a></li>
</ul>
</li>
<li><a>Item2</a>
<ul>
<li><a href='#'>SubItem1</a></li>
<li><a href='#'>SubItem2</a></li>
<li><a href='#'>SubItem3</a></li>
</ul>
</li>
</ul>
注意在子列表之后我不会关闭列表项。
答案 1 :(得分:0)
Reinventing the wheel
:http://www.htmldog.com/articles/suckerfish/教你了解它。他们甚至有great example。