js+css下拉菜单导航
最近在帮别人制作网站,看到一个下拉导航,无奈没学过JS,JS部分看不明白。求高人讲解。这段代码应该很经典,现在主要是fuction部分不懂。上代码<styletype="...
最近在帮别人制作网站,看到一个下拉导航,无奈没学过JS,JS部分看不明白。求高人讲解。
这段代码应该很经典,现在主要是fuction部分不懂。
上代码
<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: 180px; position: absolute;
}
#nav li ul li{
float: left; width: 180px;
background: #F6F6F6;
}
#nav li ul a{
display: block; width: 156px;text-align:left;padding-left:24px;
}
#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: auto;
}
#nav li.sfhover ul {
left: auto;
}
#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> 展开
这段代码应该很经典,现在主要是fuction部分不懂。
上代码
<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: 180px; position: absolute;
}
#nav li ul li{
float: left; width: 180px;
background: #F6F6F6;
}
#nav li ul a{
display: block; width: 156px;text-align:left;padding-left:24px;
}
#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: auto;
}
#nav li.sfhover ul {
left: auto;
}
#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> 展开
4个回答
展开全部
var sfEls = document.getElementById("nav").getElementsByTagName("li");
获取部菜单下所有LI元素(<div id="nav"><ul><li>菜单名</i></ul></div>)
反回的是菜单的集合下面是用循环一个一个读出来分别为它们增加鼠标事件
for (var i=0; i<sfEls.length; i++) {
鼠标停在某菜单上时该元素的样式(如:原来是class="menu1"变成class="menu1 sfhover"第二个事件onMouseDown 鼠标按下时 class="menu1 sfhover"第三个事件onMouseUp放开鼠标class="menu1 sfhover"
第四个onmouseout鼠标离开的时候class="menu1"
其中this.className.replace(new RegExp("( ?|^)sfhover\\b")是JS正则是将class="menu1 sfhover"中的以( sfhover结尾的字符串用空格来替换掉)所以class="menu1"
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"),
获取部菜单下所有LI元素(<div id="nav"><ul><li>菜单名</i></ul></div>)
反回的是菜单的集合下面是用循环一个一个读出来分别为它们增加鼠标事件
for (var i=0; i<sfEls.length; i++) {
鼠标停在某菜单上时该元素的样式(如:原来是class="menu1"变成class="menu1 sfhover"第二个事件onMouseDown 鼠标按下时 class="menu1 sfhover"第三个事件onMouseUp放开鼠标class="menu1 sfhover"
第四个onmouseout鼠标离开的时候class="menu1"
其中this.className.replace(new RegExp("( ?|^)sfhover\\b")是JS正则是将class="menu1 sfhover"中的以( sfhover结尾的字符串用空格来替换掉)所以class="menu1"
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"),
展开全部
(this.className.length>0? " ": ""),请问为什么要大于零啊,不会也有小于零吧
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
下拉菜单有的是,不用这么细了。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
2010-01-22
展开全部
这里有一个下拉菜单
里面有详细说明的
看看
里面有详细说明的
看看
参考资料: http://www.blueidea.com/common/shoutbox/redir.asp?id=10764
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询