zoukankan      html  css  js  c++  java
  • 鼠标划过快速展开的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;'+
                            ''+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

  • 相关阅读:
    mysql 基础整合大全
    django 完整日志配置
    rest_framework视图基类与五个扩展类
    Nginx + uWSGI 配置django---终极版
    小程序 textarea ios兼容解决
    小程序调取数字键盘,没有小数点解决办法
    消息框-提示框
    h5页面长按保存图片
    解决浏览器自动填充input
    angularJS(2)
  • 原文地址:https://www.cnblogs.com/webdm/p/2051724.html
Copyright © 2011-2022 走看看