css+js 横向2级菜单 有两个问题

ccnp_Server 2008-01-11 10:19:13
按照如下代码,有两个效果无法实现,不知道用什么方法可以基于下述代码实现效果?
1. 在菜单条目中加入管道符"|" ,如: 菜单一 | 菜单二 | 菜单三
2. 默认显示"菜单一"的子菜单,也就是当打开时不需要hover,即可默认显示出“菜单一”的子菜单

<!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" lang="zh-CN">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
<title>css菜单演示</title>
<style type="text/css">
<!--
*{margin:0;padding:0;border:0;}
body {
font-family: arial, 宋体, serif;
font-size:12px;
}
#nav {
line-height: 24px; list-style-type: none; background:#666;
}
#nav a {
display: block; width: 80px; text-align:center;
}
#nav a:link {
color:#666; text-decoration:none;
}
#nav a:visited {
color:#666;text-decoration:none;
}
#nav a:hover {
color:#FFF;text-decoration:none;font-weight:bold;
}
#nav li {
float: left; width: 80px; background:#CCC;
}
#nav li a:hover{
background:#999;
}
#nav li ul {
line-height: 27px; list-style-type: none;text-align:left;
left: -999em; width: 980px; position: absolute; float:left;
}
#nav li ul li{
float: left; width: 80px;
background: #F6F6F6;
}
#nav li ul a{
display: block; width: 80px;text-align:center;
}
#nav li ul a:link {
color:#666; text-decoration:none;
}
#nav li ul a:visited {
color:#666;text-decoration:none;
}
#nav li ul a:hover {
color:#F3F3F3;text-decoration:none;font-weight:normal;
background:#C00;
}
#nav li:hover ul {
left: 0;
}
#nav li.sfhover ul {
left: 0;
}
#content {
clear: left;
}
-->
</style>
<script type=text/javascript><!--//--><![CDATA[//><!--
function menuFix() {
var sfEls = document.getElementById("nav").getElementsByTagName("li");
for (var i=0; i<sfEls.length; i++) {
sfEls[i].onmouseover=function() {
this.className+=(this.className.length>0? " ": "") + "sfhover";
}
sfEls[i].onMouseDown=function() {
this.className+=(this.className.length>0? " ": "") + "sfhover";
}
sfEls[i].onMouseUp=function() {
this.className+=(this.className.length>0? " ": "") + "sfhover";
}
sfEls[i].onmouseout=function() {
this.className=this.className.replace(new RegExp("( ?|^)sfhover\\b"),
"");
}
}
}
window.onload=menuFix;
//--><!]]></script>
</head>
<body>
<ul id="nav">
<li><a href="#">菜单一级</a>
<ul>
<li><a href="#">菜单一级</a></li>
<li><a href="#">菜单一级</a></li>
<li><a href="#">菜单一级</a></li>
<li><a href="#">菜单一级</a></li>
<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></li>
<li><a href="#">菜单二级</a></li>
<li><a href="#">菜单二级服</a></li>
<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></li>
<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></li>
<li><a href="#">菜单四级</a></li>
<li><a href="#">菜单四级</a></li>
<li><a href="#">菜单四级</a></li>
</ul>
</li>
</ul>
</body>
</html>
上面的代码如果在</li>后加入管道符"|"则会折行
不知道如何修改JS可以实现默认现实菜单一级的子


----------------
我尝试过在</li>后写"|",但是被折行了!我也曾经想过是长度设置的不够,因此测试过程中,我将"菜单一级" 去了一个字,如"菜单一',然后在</li>后加"|",依旧被折行,不知道什么原因!

...全文
1746 点赞 收藏 7
写回复
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
hbear 2010-05-03
我怎么看不到回复
回复
cloudgamer 2008-01-12
<!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>
</head>
<body>

<style type="text/css">
<!--
*{margin:0;padding:0;border:0;}
body {
font-family: arial, 宋体, serif;
font-size:12px;
}
#nav {
line-height: 24px; list-style-type: none; background:#666;
}
#nav a {
display: block; width: 80px; text-align:center;
}
#nav a:link {
color:#666; text-decoration:none;
}
#nav a:visited {
color:#666;text-decoration:none;
}
#nav a:hover {
color:#FFF;text-decoration:none;font-weight:bold;
}
#nav li {
float: left; width: 80px; background:#CCC;
}
#nav li a:hover{
background:#999;
}
#nav li ul {
line-height: 27px; list-style-type: none;text-align:left;
left: -999em; width: 980px; position: absolute; float:left;
}
#nav li ul li{
float: left; width: 80px;
background: #F6F6F6;
}
#nav li ul a{
display: block; width: 80px;text-align:center;
}
#nav li ul a:link {
color:#666; text-decoration:none;
}
#nav li ul a:visited {
color:#666;text-decoration:none;
}
#nav li ul a:hover {
color:#F3F3F3;text-decoration:none;font-weight:normal;
background:#C00;
}
#nav li:hover ul {
left: 0;
}
#nav li.sfhover ul {
left: 0;
}
#content {
clear: left;
}
-->
</style>
<script>
function menuFix() {
var sfEls = document.getElementById("nav").getElementsByTagName("li");
for (var i=0; i<sfEls.length; i++) {
sfEls[i].onmouseover=function() {
this.className="sfhover";
}
sfEls[i].onmouseout=function() {
this.className="";
}
}

sfEls[0].onmouseover();
}
window.onload=menuFix;
</script>


<ul id="nav">
<li><a href="#">菜单一级</a>
<ul>
<li><a href="#">菜单一级</a></li>
<li><a href="#">菜单一级</a></li>
<li><a href="#">菜单一级</a></li>
<li><a href="#">菜单一级</a></li>
<li><a href="#">菜单一级</a></li>
<li><a href="#">菜单一级</a></li>
</ul>
</li>
<li style="border-left:1px solid #000000;"><a href="#">菜单二级</a>
<ul>
<li><a href="#">菜单二级</a></li>
<li><a href="#">菜单二级</a></li>
<li><a href="#">菜单二级</a></li>
<li><a href="#">菜单二级服</a></li>
<li><a href="#">菜单二级</a></li>
<li><a href="#">菜单二级</a></li>
</ul>
</li>
</ul>



</body>
</html>
回复
cloudgamer 2008-01-12
<!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>
</head>
<body>

<style type="text/css">
<!--
*{margin:0;padding:0;border:0;}
body {
font-family: arial, 宋体, serif;
font-size:12px;
}
#nav {
line-height: 24px; list-style-type: none; background:#666;
}
#nav a {
display: block; width: 80px; text-align:center;
}
#nav a:link {
color:#666; text-decoration:none;
}
#nav a:visited {
color:#666;text-decoration:none;
}
#nav a:hover {
color:#FFF;text-decoration:none;font-weight:bold;
}
#nav li {
float: left; width: 80px; background:#CCC;
}
#nav li a:hover{
background:#999;
}
#nav li ul {
line-height: 27px; list-style-type: none;text-align:left;
left: -999em; width: 980px; position: absolute; float:left;
}
#nav li ul li{
float: left; width: 80px;
background: #F6F6F6;
}
#nav li ul a{
display: block; width: 80px;text-align:center;
}
#nav li ul a:link {
color:#666; text-decoration:none;
}
#nav li ul a:visited {
color:#666;text-decoration:none;
}
#nav li ul a:hover {
color:#F3F3F3;text-decoration:none;font-weight:normal;
background:#C00;
}
#nav li:hover ul {
left: 0;
}
#nav li.sfhover ul {
left: 0;
}
#content {
clear: left;
}
-->
</style>
<script type=text/javascript><!--//--><![CDATA[//><!--
function menuFix() {
var sfEls = document.getElementById("nav").getElementsByTagName("li");
for (var i=0; i<sfEls.length; i++) {
sfEls[i].onmouseover=function() {
this.className+=(this.className.length>0? " ": "") + "sfhover";
}
sfEls[i].onMouseDown=function() {
this.className+=(this.className.length>0? " ": "") + "sfhover";
}
sfEls[i].onMouseUp=function() {
this.className+=(this.className.length>0? " ": "") + "sfhover";
}
sfEls[i].onmouseout=function() {
this.className=this.className.replace(new RegExp("( ?|^)sfhover\\b"),
"");
}
}
}
window.onload=function(){
menuFix();
document.getElementById("nav").getElementsByTagName("li")[0].onmouseover();
}
//--><!]]></script>


<ul id="nav">
<li><a href="#">菜单一级</a>
<ul>
<li><a href="#">菜单一级</a></li>
<li><a href="#">菜单一级</a></li>
<li><a href="#">菜单一级</a></li>
<li><a href="#">菜单一级</a></li>
<li><a href="#">菜单一级</a></li>
<li><a href="#">菜单一级</a></li>
</ul>
</li>
<li style="border-left:1px solid #000000;"><a href="#">菜单二级</a>
<ul>
<li><a href="#">菜单二级</a></li>
<li><a href="#">菜单二级</a></li>
<li><a href="#">菜单二级</a></li>
<li><a href="#">菜单二级服</a></li>
<li><a href="#">菜单二级</a></li>
<li><a href="#">菜单二级</a></li>
</ul>
</li>
<li style="border-left:1px solid #000000;"><a href="#">菜单三级</a>
<ul>
<li><a href="#">菜单三级</a></li>
<li><a href="#">菜单三级</a></li>
<li><a href="#">菜单三级</a></li>
<li><a href="#">菜单三级</a></li>
</ul>
</li>
<li style="border-left:1px solid #000000;"><a href="#">菜单四级</a>
<ul>
<li><a href="#">菜单四级</a></li>
<li><a href="#">菜单四级</a></li>
<li><a href="#">菜单四级</a></li>
<li><a href="#">菜单四级</a></li>
<li><a href="#">菜单四级</a></li>
</ul>
</li>
</ul>



</body>
</html>
回复
ccnp_Server 2008-01-12
5# 非常感谢,理解了!


发现问题了,在MAXTHON就会出现结帖的那个问题!
回复
cloudgamer 2008-01-12
因为
#nav a {
display: block;


block :  CSS1 块对象的默认值。将对象强制作为块对象呈递,为对象之后添加新行

就是a已经变成像div那样的“块”了

回复
ccnp_Server 2008-01-12
出了点小问题,暂时不能给份,先这里声明一下

主要是我回复了,在结帖时,我这里有20分,而且不能删除,但系统又不让给自己分...


我找管理区问下!
回复
ccnp_Server 2008-01-12
2# 相当符合需求,非常感谢!

3# 也很帅,脚本简单易懂,而且效果基本可以实现! 非常感谢!

100分平分!

不过想问下,这样的脚本中,为什么不能在</li>后面加管道符呢?
回复
发动态
发帖子
CSS
创建于2007-09-28

5.9w+

社区成员

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