如何用css中的ul li ul li ul li 实现三级菜单

hnldzsl 2013-10-25 10:24:57
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
<title>多级菜单</title>
<style type="text/css">
body{
font-family:"微软雅黑";
font-size:12px;
line-height:1.5;
}
ul,li,h1,h2,h3,h4,h5,h6,p,form,dl,dt,dd{
margin:0px;
padding:0px;
font-size:12px;
font-weight:normal;
}
ul{
list-style:none;
}
img{
border-style:none;
}
a{
color:#000;
text-decoration:none;
}
a:hover{
color:#ff0000;
}

#menu2{
width:100px;
border:1px solid #cccccc;
margin-top:20px;
}
#menu2 ul{
list-style:none;
margin:0px;
padding:0px;
}
#menu2 ul li{
background:#eeeeee;
padding:0px 24px;
height:26px;
line-height:26px;
border-bottom:1px solid #cccccc;
position:relative;
}
#menu2 ul li ul{
display:none;
border:1px solid #cccccc;
border-bottom:none;
position:absolute;
left:100px;
top:0px;
width:100px;
}
#menu2 ul li ul li{
background:#eeeeee;
padding:0px 24px;
height:26px;
line-height:26px;
border-bottom:1px solid #cccccc;
position:relative;
}

#menu2 ul li ul li ul{
display:none;
border:1px solid #cccccc;
border-bottom:none;
position:absolute;
left:100px;
top:0px;
width:100px;
}

#menu2 ul li:hover ul{
display:block;
}

#menu2 ul li ul li:hover ul{
display:block;
}



</style>
</head>

<body>

<div id="menu2">
<ul>
<li><a href="#">网站首页</a></li>
<li><a href="#">域名主机</a>
<ul>
<li><a href="#">域名注册</a></li>
<li><a href="#">企业邮局</a></li>
</ul>
</li>
<li><a href="#">网站建设</a>
<ul>
<li><a href="#">企业网站</a></li>
<li><a href="#">其它网站</a>
<ul>
<li><a href="#">行业网站</a></li>
<li><a href="#">论坛程序</a></li>
<li><a href="#">商城程序</a></li>
</ul>
</li>
</ul>
</li>
<li><a href="#">联系我们</a></li>
</ul>
</div>
</body>
</html>

目前这样的,第二级菜单显示的时候,三级菜单也跟着显示了,不知道哪里出错了,求高手指导,谢谢先……

文件已上传到:http://www.zjgqy.com.cn/t4.html
...全文
940 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
hnldzsl 2013-10-29
  • 打赏
  • 举报
回复
引用 8 楼 Dizzy88 的回复:
[quote=引用 3 楼 hnldzsl 的回复:] #menu2 ul li.current ul{ display:block;} 加了这个样式,还有下面这段JS <script type="text/javascript"><!--//--><![CDATA[//><!-- startList = function() { if (document.all&&document.getElementById) { navRoot = document.getElementById("menu2"); var allli = navRoot.getElementsByTagName("li") for (i=0; i<allli.length; i++) { node = allli[i]; node.onmouseover=function() { this.className+=" current"; } node.onmouseout=function() { this.className=this.className.replace(" current", ""); } } } } window.onload=startList; //--><!]]> </script>
ie6 是不支持div的伪类 :hover的 你把你的 li里加个a标签 然后css 控制a标签就好了[/quote] 不知道加在哪里啊,试了几次,都没有调试成功,能麻烦你帮我改改么?
Dizzy88 2013-10-28
  • 打赏
  • 举报
回复
引用 3 楼 hnldzsl 的回复:
#menu2 ul li.current ul{ display:block;} 加了这个样式,还有下面这段JS <script type="text/javascript"><!--//--><![CDATA[//><!-- startList = function() { if (document.all&&document.getElementById) { navRoot = document.getElementById("menu2"); var allli = navRoot.getElementsByTagName("li") for (i=0; i<allli.length; i++) { node = allli[i]; node.onmouseover=function() { this.className+=" current"; } node.onmouseout=function() { this.className=this.className.replace(" current", ""); } } } } window.onload=startList; //--><!]]> </script>
ie6 是不支持div的伪类 :hover的 你把你的 li里加个a标签 然后css 控制a标签就好了
无盐海 2013-10-26
  • 打赏
  • 举报
回复
注意把前面的ID 修改为你自己的id
无盐海 2013-10-26
  • 打赏
  • 举报
回复
因为在鼠标移动到二级菜单的时候三级菜单没有隐藏 只要在<style type=text/css>#div1 ul li:hover ul li ul{display:none}</style>就可以了
Dizzy88 2013-10-25
  • 打赏
  • 举报
回复

#menu2 ul li:hover ul li ul{
   display:none;
}
加一个这个,否则第二集菜单显示时会连带把第三级 ul 显示出来
qcrlzsl 2013-10-25
  • 打赏
  • 举报
回复
这个肯定是JS代码的问题了,有一句说得很对,IE6不支持伪类,所以你后加的那句隐藏三级列表的也失效了,应该在JS里面给它加上不显示!
hnldzsl 2013-10-25
  • 打赏
  • 举报
回复
这个ie6不支持那句话了,它只支持a的伪类!这个是不是要改JS了啊?
hnldzsl 2013-10-25
  • 打赏
  • 举报
回复
#menu2 ul li.current ul{ display:block;} 加了这个样式,还有下面这段JS <script type="text/javascript"><!--//--><![CDATA[//><!-- startList = function() { if (document.all&&document.getElementById) { navRoot = document.getElementById("menu2"); var allli = navRoot.getElementsByTagName("li") for (i=0; i<allli.length; i++) { node = allli[i]; node.onmouseover=function() { this.className+=" current"; } node.onmouseout=function() { this.className=this.className.replace(" current", ""); } } } } window.onload=startList; //--><!]]> </script>
hnldzsl 2013-10-25
  • 打赏
  • 举报
回复
引用 1 楼 Dizzy88 的回复:

#menu2 ul li:hover ul li ul{
   display:none;
}
加一个这个,否则第二集菜单显示时会连带把第三级 ul 显示出来
感谢Dizzy88的回复,这个问题解决了,但是在IE6下面还是有问题,不知道怎么办了!能麻烦你帮我再看看么?

61,115

社区成员

发帖
与我相关
我的任务
社区描述
层叠样式表(英文全称:Cascading Style Sheets)是一种用来表现HTML(标准通用标记语言的一个应用)或XML(标准通用标记语言的一个子集)等文件样式的计算机语言。
社区管理员
  • HTML(CSS)社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧