高分请CSS和JS高手帮忙解决css菜单的问题

zhgj8750 2009-07-01 11:45:21
有一个纯css控制的菜单,鼠标放到一级菜单上后会显示二级菜单列表,现在我想当用户点击某个二级菜单后,自动将二级菜单列表隐藏。因css无法获得鼠标点击事件,所以我写了个js函数,鼠标点击某个二级菜单后用js方法将二级菜单列表隐藏。但点击一次后,鼠标再放到一级菜单上时二级菜单显示不出来了,好像是CSS不起作用了。请CSS和JS高手帮忙分析一下什么原因?如何解决?非常感谢!

完整代码如下:
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gbk"/>
<title>三级dropdown弹出菜单</title>
<style type="text/css">
/* common styling */
.menu {font-family: arial, sans-serif; width:750px; position:relative; margin:0; font-size:11px; margin:50px 0;}
.menu ul li a, .menu ul li a:visited {display:block; text-decoration:none; color:#000; width:104px; height:20px; text-align:center; color:#fff; border:1px solid #fff; background:#710069; line-height:20px; font-size:11px;}
.menu ul {padding:0; margin:0;list-style-type: none; }
.menu ul li {float:left; margin-right:1px; position:relative;}
.menu ul li ul {display: none;}
.menu ul li a.hide, .menu ul li a:visited.hide {display:none;}
.menu ul li a:hover ul li a.hide {display:none;}
.menu ul li a:hover {color:#fff; background:#36f;}
.menu ul li a:hover ul {display:block; position:absolute; top:21px; left:0px; width:104px;}
.menu ul li a:hover ul li a.sub {background:red; color:#fff;}
.menu ul li a:hover ul li a {display:block; background:#ddd; color:#000;}
.menu ul li a:hover ul li a ul {visibility:hidden;}
.menu ul li a:hover ul li a:hover {background:#6fc; color:#000;}
.menu ul li a:hover ul li a:hover ul {visibility:visible; position:absolute; left:105px; top:0; color:#000;}
.menu ul li a:hover ul li a:hover ul.left {left:-105px;}
</style>
</head>
<SCRIPT LANGUAGE="JavaScript">
function hidSubMenu(){
var obj = document.getElementById("ulid");
obj.style.visibility = "hidden";
}
</SCRIPT>
<body>
<div class="menu">
<ul>
<li><a class="hide" href="../menu/index.html">DEMOS</a>
<!--[if lte IE 6]>
<a href="../menu/index.html">DEMOS
<table><tr><td nowrap>
<![endif]-->
<ul id="ulid">
<li nowrap><a href="#" onclick="hidSubMenu()" title="The zero dollar ads page">zero dollars</a></li>
<li><a href="#" onclick="hidSubMenu()" title="Wrapping text around images">wrapping text</a></li>
<li><a href="#" onclick="hidSubMenu()" title="Styling forms">styled form</a></li>
</ul>
<!--[if lte IE 6]>
</td></tr></table>
</a>
<![endif]-->
</li>
</ul>
</div>
</body>
</html>
...全文
45 点赞 收藏 5
写回复
5 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
SAT0725 2009-07-15

这个完全可以满足你的需求,多级菜单自定义,样式自定义。
下载地址:http://www.88king.cn/post/34.html
回复
kendyjack 2009-07-02
优先级
回复
natineprince 2009-07-02
style会覆盖css类定义.
回复
zhgj8750 2009-07-02
natineprince这位兄弟,果然高手啊!很巧妙的解决了问题,佩服!
不过我有个疑问想问一下,就是用js修改了style某个属性后,对css会造成什么影响呢?是否因为js修改了style的某种属性后,而css就不能再控制这个属性了?请指点!

对了,问题已解决,马上会结贴给分!
回复
natineprince 2009-07-02
<html xmlns="http://www.w3.org/1999/xhtml"> 
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gbk"/>
<title>三级dropdown弹出菜单 </title>
<style type="text/css">
/* common styling */
.menu {font-family: arial, sans-serif; width:750px; position:relative; margin:0; font-size:11px; margin:50px 0;}
.menu ul li a, .menu ul li a:visited {display:block; text-decoration:none; color:#000; width:104px; height:20px; text-align:center; color:#fff; border:1px solid #fff; background:#710069; line-height:20px; font-size:11px;}
.menu ul {padding:0; margin:0;list-style-type: none; }
.menu ul li {float:left; margin-right:1px; position:relative;}
.menu ul li ul {display: none;}
.menu ul li a.hide, .menu ul li a:visited.hide {display:none;}
.menu ul li a:hover ul li a.hide {display:none;}
.menu ul li a:hover {color:#fff; background:#36f;}
.menu ul li a:hover ul {display:block; position:absolute; top:21px; left:0px; width:104px;}
.menu ul li a:hover ul li a.sub {background:red; color:#fff;}
.menu ul li a:hover ul li a {display:block; background:#ddd; color:#000;}
.menu ul li a:hover ul li a ul {visibility:hidden;}
.menu ul li a:hover ul li a:hover {background:#6fc; color:#000;}
.menu ul li a:hover ul li a:hover ul {visibility:visible; position:absolute; left:105px; top:0; color:#000;}
.menu ul li a:hover ul li a:hover ul.left {left:-105px;}
</style>
</head>
<SCRIPT LANGUAGE="JavaScript">
function hidSubMenu(){
var obj = document.getElementById("ulid");
obj.style.display = "none";
}
function clSubMenu(){
var obj = document.getElementById("ulid");
obj.style.display = "";
}
</SCRIPT>
<body>
<div class="menu">
<ul>
<li> <a class="hide" href="../menu/index.html">DEMOS </a>
<!--[if lte IE 6]>
<a href="../menu/index.html">DEMOS
<table> <tr> <td nowrap>
<![endif]-->
<ul id="ulid">
<li nowrap> <a href="#" onclick="hidSubMenu()" onmouseout="clSubMenu()" title="The zero dollar ads page">zero dollars </a> </li>
<li> <a href="#" onclick="hidSubMenu()" onmouseout="clSubMenu()" title="Wrapping text around images">wrapping text </a> </li>
<li> <a href="#" onclick="hidSubMenu()" onmouseout="clSubMenu()" title="Styling forms">styled form </a> </li>
</ul>
<!--[if lte IE 6]>
</td> </tr> </table>
</a>
<![endif]-->
</li>
</ul>
</div>
</body>
</html>
回复
相关推荐
发帖
CSS
创建于2007-09-28

6.0w+

社区成员

层叠样式表(英文全称:Cascading Style Sheets)是一种用来表现HTML(标准通用标记语言的一个应用)或XML(标准通用标记语言的一个子集)等文件样式的计算机语言。
申请成为版主
帖子事件
创建了帖子
2009-07-01 11:45
社区公告
暂无公告