鼠标划过快速展开的JS下拉菜单
代码简介:
鼠标划过快速展开的JS下拉菜单,缺点是代码偏多,建议封装在一个文件里。
代码内容:
<html xmlns="http://www.w3.org/1999/xhtml"> <head> <title>鼠标划过快速展开的JS下拉菜单_网页代码站(www.webdm.cn)</title> </head> <body> <SCRIPT language=jscript> var mmenus = new Array(); var misShow = new Boolean(); misShow=false; var misdown = new Boolean(); misdown=false; var msrcel; var mfromel; var mtoel; var musestatus=false; var mthestatus=""; var mpopTimer = 0; mmenucolor='Menu';mfontcolor='MenuText';mmenuoutcolor='#000084';mmenuincolor='#000084';mmenuoutbordercolor='#FFFFFF';mmenuinbordercolor='#00000 0';mmidoutcolor='#E2DFDA';mmidincolor='#8D8A85';mmenuovercolor='#FFFFFF';mitemedge='0';msubedge='0';mmenuunitwidth=60;mmenuitemwidth=160;mmenuh eight=30;mmenuwidth='100%';mmenuadjust=0;mmenuadjustV=0;mfonts='font-family: 宋体; font-size: 9pt; color: MenuText; ';mcursor='default'; var swipeSteps = 4; var swipemsec = 25; var swipeArray = new Array(); function swipe(el, dir, steps, msec) { if (steps == null) steps = swipeSteps; if (msec == null) msec = swipemsec; if (el.swipeIndex == null) el.swipeIndex = swipeArray.length; if (el.swipeTimer != null) window.clearTimeout(el.swipeTimer); swipeArray[el.swipeIndex] = el; el.style.clip = "rect(-99999, 99999, 99999, -99999)"; if (el.swipeCounter == null) { el.orgLeft = el.offsetLeft; el.orgTop = el.offsetTop; el.orgWidth = el.offsetWidth; el.orgHeight = el.offsetHeight; } else if (el.swipeCounter == 0) { el.orgLeft = el.offsetLeft; el.orgTop = el.offsetTop; el.orgWidth = el.offsetWidth; el.orgHeight = el.offsetHeight; } el.style.left = el.orgLeft; el.style.top = el.orgTop; el.swipeCounter = steps; el.style.clip = "rect(0,0,0,0)"; window.setTimeout("repeat(" + dir + "," + el.swipeIndex + "," + steps + "," + msec + ")", msec); } function repeat(dir, index, steps, msec) { el = swipeArray[index]; var left = el.orgLeft; var top = el.orgTop; var width = el.orgWidth; var height = el.orgHeight; if (el.swipeCounter == 0) { el.style.clip = "rect(-99999, 99999, 99999, -99999)"; return; } else { el.swipeCounter--; el.style.visibility = "visible"; switch (dir) { case 2: el.style.clip = "rect(" + height*el.swipeCounter/steps + "," + width + "," + height + "," + 0 + ")"; el.style.top = top - height*el.swipeCounter/steps; break; case 8: el.style.clip = "rect(" + 0 + "," + width + "," + height*(steps-el.swipeCounter)/steps + "," + 0 + ")"; el.style.top = top + height*el.swipeCounter/steps; break; case 6: el.style.clip = "rect(" + 0 + "," + width + "," + height + "," + width*(el.swipeCounter)/steps + ")"; el.style.left = left - width*el.swipeCounter/steps; break; case 4: el.style.clip = "rect(" + 0 + "," + width*(swipeSteps - el.swipeCounter)/steps + "," + height + "," + 0 + ")"; el.style.left = left + width*el.swipeCounter/steps; break; } el.swipeTimer = window.setTimeout("repeat(" + dir + "," + index + "," + steps + "," + msec + ")", msec); } } function hideSwipe(el) { window.clearTimeout(el.swipeTimer); el.style.visibility = "hidden"; el.style.clip = "rect(-99999, 99999, 99999, -99999)"; el.swipeCounter = 0; } function stoperror(){ return true; } window.onerror=stoperror; function mpopOut() { mpopTimer = setTimeout('mallhide()', 500); } function getReal(el, type, value) { temp = el; while ((temp != null) && (temp.tagName != "BODY")) { if (eval("temp." + type) == value) { el = temp; return el; } temp = temp.parentElement; } return el; } function mMenuRegister(menu) { mmenus[mmenus.length] = menu return (mmenus.length - 1) } function mMenuItem(caption,command,target,isline,statustxt,img,sizex,sizey,pos){ this.caption=caption; this.command=command; this.target=target; this.isline=isline; this.statustxt=statustxt; this.img=img; this.sizex=sizex; this.sizey=sizey; this.pos=pos; } function mMenu(caption,command,target,img,sizex,sizey,pos){ this.items = new Array(); this.caption=caption; this.command=command; this.target=target; this.img=img; this.sizex=sizex; this.sizey=sizey; this.pos=pos; this.id=mMenuRegister(this); } function mMenuAddItem(item) { this.items[this.items.length] = item item.parent = this.id; this.children=true; } mMenu.prototype.addItem = mMenuAddItem; function mtoout(src){ src.style.borderLeftColor=mmenuoutbordercolor; src.style.borderRightColor=mmenuinbordercolor; src.style.borderTopColor=mmenuoutbordercolor; src.style.borderBottomColor=mmenuinbordercolor; src.style.backgroundColor=mmenuoutcolor; src.style.color=mmenuovercolor; } function mtoin(src){ src.style.borderLeftColor=mmenuinbordercolor; src.style.borderRightColor=mmenuoutbordercolor; src.style.borderTopColor=mmenuinbordercolor; src.style.borderBottomColor=mmenuoutbordercolor; src.style.backgroundColor=mmenuincolor; src.style.color=mmenuovercolor; } function mnochange(src){ src.style.borderLeftColor=mmenucolor; src.style.borderRightColor=mmenucolor; src.style.borderTopColor=mmenucolor; src.style.borderBottomColor=mmenucolor; src.style.backgroundColor=''; src.style.color=mfontcolor; } function mallhide(){ for(var nummenu=0;nummenu<mmenus.length;nummenu++){ var themenu=document.all['mMenu'+nummenu] var themenudiv=document.all['mmenudiv'+nummenu] mnochange(themenu); mmenuhide(themenudiv); } } function mmenuhide(menuid){ hideSwipe(menuid); misShow=false; } function mmenushow(menuid,pid){ menuid.style.left=mposflag.offsetLeft+pid.offsetLeft+mmenuadjust;menuid.style.top=mposflag.offsetTop+mmenutable.offsetHeight+mmenuadjustV; swipe(menuid,2,4); if(mmenuitemwidth+parseInt(menuid.style.left)>document.body.clientWidth) menuid.style.left=document.body.clientWidth-mmenuitemwidth; misShow=true; } function mmenu_over(menuid,x){ mtoel = getReal(window.event.toElement, "className", "coolButton"); mfromel = getReal(window.event.fromElement, "className", "coolButton"); if (mtoel == mfromel) return; msrcel = window.event.srcElement; if(x<0){ misShow = false; mallhide(); mtoout(msrcel); }else{ mallhide(); mtoin(msrcel); mmenushow(menuid,eval("mMenu"+x)); } clearTimeout(mpopTimer); } function mmenu_out(menuid){ mtoel = getReal(window.event.toElement, "className", "coolButton"); mfromel = getReal(window.event.fromElement, "className", "coolButton"); if (mtoel == mfromel) return; msrcel = window.event.srcElement; if (misShow){ mtoin(msrcel); }else{ mnochange(msrcel); } mpopOut() } function mmenu_down(menuid,x){ msrcel = getReal(window.event.srcElement, "className", "coolButton"); if(misShow){ mmenuhide(menuid); mtoout(msrcel); } else{ mtoin(msrcel); mmenushow(menuid,eval("mMenu"+x)); misdown=true; } } function mmenu_up(){ misdown=false; } function mmenuitem_over(menuid){ msrcel = getReal(window.event.srcElement, "className", "coolButton"); if(misdown){ mtoin(msrcel); } else{ mtoout(msrcel); } if(mthestatus!=""){ musestatus=true; window.status=mthestatus; } clearTimeout(mpopTimer); } function mmenuitem_out(menuid){ msrcel = getReal(window.event.srcElement, "className", "coolButton"); mnochange(msrcel); if(musestatus)window.status=""; mpopOut() } function mmenuitem_down(menuid){ msrcel = getReal(window.event.srcElement, "className", "coolButton"); mtoin(msrcel) misdown=true; } function mmenuitem_up(menuid){ msrcel = getReal(window.event.srcElement, "className", "coolButton"); mtoout(msrcel) misdown=false; } function mexec2(x){ var cmd; if(mmenus[x].target=="blank"){ cmd = "window.open('"+mmenus[x].command+"')"; }else{ cmd = mmenus[x].target+".location='"+mmenus[x].command+"'"; } eval(cmd); } function mexec(x,i){ var cmd; if(mmenus[x].items[i].target=="blank"){ cmd = "window.open('"+mmenus[x].items[i].command+"')"; }else{ cmd = mmenus[x].items[i].target+".location='"+mmenus[x].items[i].command+"'"; } eval(cmd); } function mbody_click(){ if (misShow){ msrcel = getReal(window.event.srcElement, "className", "coolButton"); for(var x=0;x<=mmenus.length;x++){ if(msrcel.id=="mMenu"+x) return; } mallhide(); } } document.onclick=mbody_click; var mMenuBodyRef; function mwritetodocument(){ var mwb=1; for(var i in document.all){ if (document.all[i].tagName == 'BODY'){ mMenuBodyRef = document.all[i] var stringx='<div id="mposflag" style="position:absolute;"></div><table id=mmenutable border=0 cellpadding=0 cellspacing=2 width='+mmenuwidth+' height='+mmenuheight+' bgcolor='+mmenucolor+ ' onselectstart="event.returnValue=false"'+ ' style="cursor:'+mcursor+';'+mfonts+ ' border-left: '+mwb+'px solid '+mmenuoutbordercolor+';'+ ' border-right: '+mwb+'px solid '+mmenuinbordercolor+'; '+ 'border-top: '+mwb+'px solid '+mmenuoutbordercolor+'; '+ 'border-bottom: '+mwb+'px solid '+mmenuinbordercolor+'; padding:0px"><tr>' for(var x=0;x<mmenus.length;x++){ var thismenu=mmenus[x]; var imgsize; if(thismenu.sizex=="0"&&thismenu.sizey=="0"){ imgsize=""; }else{ imgsize=" width="+thismenu.sizex+" height="+thismenu.sizey; } var ifspace; if(thismenu.caption==""){ ifspace=""; }else{ ifspace=" "; } stringx += "<td class=coolButton id=mMenu"+x+" style='border: "+mitemedge+"px solid "+mmenucolor+ "' width="+mmenuunitwidth+"px onmouseover=mmenu_over(mmenudiv"+x+ ","+x+") onmouseout=mmenu_out(mmenudiv"+x+ ") onmousedown=mmenu_down(mmenudiv"+x+","+x+")"; if(thismenu.command!=""){ stringx += " onmouseup=mexec2("+x+");mmenu_up();"; }else{ stringx += " onmouseup=mmenu_up()"; } if(thismenu.pos=="0"){ stringx += " align=center><img align=absmiddle src="+thismenu.img+imgsize+">"+ifspace+thismenu.caption +"</td>"; }else if(thismenu.pos=="1"){ stringx += " align=center>"+thismenu.caption+ifspace+"<img align=absmiddle src="+thismenu.img+imgsize +"></td>"; }else if(thismenu.pos=="2"){ stringx += " align=center background="+thismenu.img+">"+thismenu.caption+"</td>"; }else{ stringx += " align=center>"+thismenu.caption+"</td>"; } stringx += ""; } stringx+="<td width=*> </td></tr></table>"; for(var x=0;x<mmenus.length;x++){ thismenu=mmenus[x]; if(x<0){ stringx+='<div id=mmenudiv'+x+' style="visiable:none"></div>'; }else{ stringx+='<div id=mmenudiv'+x+ ' style="cursor:'+mcursor+';position:absolute;'+ 'width:'+mmenuitemwidth+'px; z-index:'+(x+100); if(mmenuinbordercolor!=mmenuoutbordercolor&&msubedge=="0"){ stringx+=';border-left: 1px solid '+mmidoutcolor+ ';border-top: 1px solid '+mmidoutcolor;} stringx+=';border-right: 1px solid '+mmenuinbordercolor+ ';border-bottom: 1px solid '+mmenuinbordercolor+';visibility:hidden" onselectstart="event.returnValue=false">\n'+ '<table width="100%" border="0" height="100%" align="center" cellpadding="0" cellspacing="2" '+ 'style="'+mfonts+' border-left: 1px solid '+mmenuoutbordercolor; if(mmenuinbordercolor!=mmenuoutbordercolor&&msubedge=="0"){ stringx+=';border-right: 1px solid '+mmidincolor+ ';border-bottom: 1px solid '+mmidincolor;} stringx+=';border-top: 1px solid '+mmenuoutbordercolor+ ';padding: 4px" bgcolor='+mmenucolor+'>\n' for(var i=0;i<thismenu.items.length;i++){ var thismenuitem=thismenu.items[i]; var imgsize; if(thismenuitem.sizex=="0"&&thismenuitem.sizey=="0"){ imgsize="" }else{ imgsize=" width="+thismenuitem.sizex+" height="+thismenuitem.sizey } var ifspace; if(thismenu.caption==""){ ifspace=""; }else{ ifspace=" "; } if(!thismenuitem.isline){ stringx += "<tr><td class=coolButton style='border: "+mitemedge+"px solid "+mmenucolor+ "' width=100% height=15px onmouseover=\"mthestatus='"+thismenuitem.statustxt+"';mmenuitem_over(mmenudiv"+x+ ");\" onmouseout=mmenuitem_out(mmenudiv"+x+ ") onmousedown=mmenuitem_down(mmenudiv"+x+") onmouseup="; stringx += "mexec("+x+","+i+");mmenuitem_up(mmenudiv"+x+") "; if(thismenuitem.pos=="0"){ stringx += "><img align=absmiddle src="+thismenuitem.img+imgsize+">"+ifspace+thismenuitem.caption +"</td></tr>"; }else if(thismenuitem.pos=="1"){ stringx += ">"+thismenuitem.caption+ifspace+"<img align=absmiddle src="+thismenuitem.img+imgsize +"></td></tr>"; }else if(thismenuitem.pos=="2"){ stringx += "background="+thismenuitem.img+">"+thismenuitem.caption+"</td></tr>"; }else{ stringx += ">"+thismenuitem.caption+"</td></tr>"; } }else{ stringx+='<tr><td height="1" background="hr.gif"><img border="0" src="none.gif" width="1" height="1"></td></tr>\n'; } }stringx+='</table>\n</div>' } } document.write("<div align='left'>"+stringx+"</div>"); break } } } function document_load(){ mwritetodocument(); }mpmenu1=new mMenu('文件','','self','','','',''); mpmenu1.addItem(new mMenuItem('新建','javascript:alert("新建")','self',false,'新建','','','','')); mpmenu1.addItem(new mMenuItem('打开','javascript:alert("打开")','self',false,'打开','','','','')); mpmenu1.addItem(new mMenuItem('保存','javascript:alert("保存")','self',false,'保存','','','','')); mpmenu1.addItem(new mMenuItem(null,null,null,true)); mpmenu1.addItem(new mMenuItem('退出','javascript:alert("退出")','self',false,'退出','','','','')); mpmenu2=new mMenu('编辑','','self','','','',''); mpmenu2.addItem(new mMenuItem('撤销','javascript:alert("撤销")','self',false,'撤销','','','','')); mpmenu2.addItem(new mMenuItem('重做','javascript:alert("重做")','self',false,'重做','','','','')); mpmenu2.addItem(new mMenuItem(null,null,null,true)); mpmenu2.addItem(new mMenuItem('拷贝','javascript:alert("拷贝")','self',false,'拷贝','','','','')); mpmenu2.addItem(new mMenuItem('粘贴','javascript:alert("粘贴")','self',false,'粘贴','','','','')); mpmenu3=new mMenu('收藏','','self','','','',''); mpmenu3.addItem(new mMenuItem('我的主页','http://www.webdm.cn','blank',false,'访问我的主页','','','','')); mpmenu3.addItem(new mMenuItem('Yahoo','http://www.web5.cc','blank',false,'访问Yahoo','','','','')); mpmenu4=new mMenu('帮助','','self','','','',''); mpmenu4.addItem(new mMenuItem('内容','javascript:alert("内容")','self',false,'内容','','','','')); mpmenu4.addItem(new mMenuItem('给我写email','mailto:admin@webdm.cn','self',false,'给我写email','','','','')); mpmenu4.addItem(new mMenuItem(null,null,null,true)); mpmenu4.addItem(new mMenuItem('关于','javascript:alert("关于")','self',false,'关于这个软件','','','','')); </SCRIPT> <SCRIPT>document_load()</SCRIPT> </body> </html> <br> <p><a href="http://www.webdm.cn">网页代码站</a> - 最专业的代码下载网站 - 致力为中国站长提供有质量的代码!</p>
代码来自:http://www.webdm.cn/webcode/46ea9af1-4f98-4d67-aad7-43265c0bae01.html