纯css编写的二级导航菜单问题?

以下是css编写的导航菜单,鼠标悬浮导航菜单后自动弹出二级菜单,因为需要我在一个子菜单中调用函数隐藏弹出的层(为了子菜单点击后不影响下方的图片),但当我再次把鼠标放到导航菜单上,二级菜单就不再弹出了,如何修改代码?
-----------以下为示例--------
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML>
<HEAD>
<TITLE> New Document </TITLE>
<META NAME="Generator" CONTENT="EditPlus">
<META NAME="Author" CONTENT="">
<META NAME="Keywords" CONTENT="">
<META NAME="Description" CONTENT="">
</HEAD>

<BODY>
<!---->
<style>
.Nav {

}
.Nav li{
float:left;
display:block;
position:relative;
}
.Nav a{
float:left;
display:block;
position:relative;
padding:2px 10px 2px 10px;
font-size:13px;
text-decoration: none;
}
.Nav li a:hover
{
color:#ffffff;
background:#ea0000;
}
.Nav li table {
display:none;
border-collapse:collapse;
}
.Nav li:hover table, .Nav a:hover table {
display:block;
position:absolute;
top:18px;
left:0;
background:#ea0000;
}
.Nav li:hover table a, .Nav a:hover table a {
float:none;
background:#f2f2f2;
color:#000;
width:120px;
border-bottom:1px solid #fff;
}
.Nav li:hover table a:hover, .Nav a:hover table a:hover {
background:#565656;
color:#fff;
}
</style>
<script language="javascript" type="text/javascript">
function OnclickLink()
{
document.getElementById("subnav").style.visibility="hidden";
}
</script>
<div class='Nav'>
<li>
<a href='#'>产品
<table id="subnav"><tr><td>
<a href='#1'onclick="OnclickLink();">产品1</a>
<a href='#2'>产品2</a>
</td></tr></table>
</a>
</li>
</div>
</BODY>
</HTML>
----------------------------

你好
看了下你的代码发现你是用a用的导航,这样当然会出现如果不在a上面就会隐藏二级菜单了,而且你的是a里面套a,这样很不好的。
出于HTML标签语义化考虑,一般都是用ul,li来写导航的,我给你个提示,你试着做做。

<ul id=ul1>
<li>
这里是一级导航
<ul id=ul2>
<li>这里是二级导航</li>

</ul>

</li>
</ul>
其中ul1是整个导航,而li是一级菜单,你让默认的时候ul2是隐藏的,只有滑过li的时候把滑过的那个li里面的ul2显示,当滑出的时候再隐藏ul2,当然你的ul1里的li得设置定位,用relative,然后里面的ul2用绝对定位absolute,就OK了,当然我这里没有设置连接,加个连接跟不加操作是一样的。你可以百度下级连菜单。网上有很多源码吧。
希望可以帮到你!
温馨提示:答案为网友推荐,仅供参考
第1个回答  2013-01-03
<styletype="text/css">.menue{background:url(/Content/xie/UploadFiles/s/dh.jpg) no-repeat;width:966px; height:54px;text-align:center;list-style:none; }
.menue li a{font-size:14px;letter-spacing:2px;width:138px;display:block;line-height:30px;text-decoration:none;color:#fff;font-weight:bold;float:left; }
.menue li a:hover{font-weight:bold; color:#c92a25;letter-spacing:2px; width:138px;height:54px;line-height:30px;text-align:center;}
.menue li {float:left; width:138px;text-align:center;z-index:1000;}
.menue li ul li{list-style:none; display:none; z-index:1000;}
.menue li:hover ul li{ display:block; width:138px;background-color:#329900; height:30px; line-height:30px;z-index:1000;}
.menue li:hover ul li a:hover{ display:block; background:#329900; width:100%}
.asd{witdh:137px;}
.asd li a{line-height:30px; witdh:138px;font-size:14px;clear:both;height:30px;}
.asd li a:hover{line-height:30px;font-size:14px; height:30px;}</style><ulclass="menue"><listyle="font-size: 14px;"><ahref="/index.html">网站首页</a></li><listyle="font-size: 14px;"><ahref="/gsjj.html">公司简介</a></li><listyle="font-size: 14px;"><ahref="/news.html">新闻中心</a></li><listyle="font-size: 14px; position: relative;"><ahref="/qyry.html?q=&t=p&cid=7501">产品展示</a><ulclass="asd" style="left: 2px; top: 30px; position: absolute;"><listyle="font-size: 14px;"><ahref="/qyry.html?q=&t=p&cid=7500">礼盒套餐</a></li><listyle="font-size: 14px;"><ahref="/qyry.html?q=&t=p&cid=7501">太湖蟹</a></li><listyle="font-size: 14px;"><ahref="/qyry.html?q=&t=p&cid=7502">养殖环境</a></li><listyle="font-size: 14px;"><ahref="/qyry.html?q=&t=p&cid=7503">农家乐</a></li></ul></li><listyle="font-size: 14px;"><ahref="/ysxl.html">零售价格</a></li><listyle="font-size: 14px;"><ahref="/ryzz.html">荣誉资质</a></li><listyle="font-size: 14px;"><ahref="/lxwm.html">联系我们</a></li></ul>
第2个回答  2013-01-04
document.getElementById("subnav").style.visibility="hidden"; 出在visibility="hidden"这个问题上

visibility="hidden" 和display none 是不一样的 他们都可以控制元素的显示与隐藏

visibility="hidden" 隐藏后依然占位

display none 隐藏后不占位

按照你的想法 不应该用visibility="hidden" 而是应该用display none

document.getElementById("subnav").style.display="none";
相似回答