WEB开发网:  用JS实现一个简单的仿xp下拉菜单,贴出来,希望对其它人有用,有兴趣的朋友可以对快捷键功能进行扩展,目前留有接口,但未实现。menu.htm(菜单主文件)<html><head&
赞助商链接
中资源
>> 最新文章
>> 赞助商
>> 热门文章
WEB开发网文章阅读

仿xp下拉菜单

作者:未知 文章来源:WEB开发者 更新时间:2007-12-8 15:52:02

  用JS实现一个简单的仿xp下拉菜单,贴出来,希望对其它人有用,有兴趣的朋友可以对快捷键功能进行扩展,目前留有接口,但未实现。

menu.htm(菜单主文件)
<html>
 <head>
  <title>Noteless Valley(lijun.org)程序示例</title>
  <meta name=GENERATOR content=Microsoft Visual Studio.net 7.0>
  <meta name=vs_targetSchema content=http://schemas.microsoft.com/intellisense/ie5>
  <meta http-equiv=Content-Type content=text/html; charset=gb2312>
  <link href=xp_menu.css rel=stylesheet type=text/css>
  <script language=javascript src=xp_menu.js></script>
  <script language=javascript for=document event=onselectstart>
<!--
 return document_onselectstart()
//-->
  </script>
  <script language=javascript for=document event=onclick>
<!--
 return document_onclick()
//-->
  </script>
 </head>
 <body scroll=no language=javascript onresize=return window_onresize() onload=return window_onload()>
  <script language=javascript>
<!--
 //定义一个主菜单对象
 var mnuMain = new menu(mnuMain);    
 mnuMain.bar[0] = new menu_bar(mnuMainNL,,无名谷,,Noteless Valley,,0,mnuNL);
 mnuMain.bar[1] = new menu_bar(mnuMainSiteAdmin,,网站管理,,网站管理,,0,mnuSiteAdmin);
 mnuMain.bar[2] = new menu_bar(mnuMainSystem,,系统管理,,系统管理,,0,mnuSystem);
 mnuMain.bar[3] = new menu_bar(mnuMainShow,,演示菜单,,Menu Show,,0,mnuShow);
 popMainMenu(mnuMain,0,0,100%,27);    //激活主菜单,通过参数确定主菜单的位置
 
 var mnuNL = new menu(mnuNL);
 mnuNL.bar[0] = new menu_bar(mnuHomePage,,首页,,HomePage,,1,http://lijun.org);
 mnuNL.bar[1] = new menu_bar(mnuDesign,,网页设计,,Design,,1,http://lijun.org/article.asp?topic=1);
 mnuNL.bar[2] = new menu_bar(mnuProgram,,网络编程,,Program,,1,http://lijun.org/article.asp?topic=2);
 mnuNL.bar[3] = new menu_bar(mnuOthers,,其它文章,,Others,,1,http://lijun.org/article.asp?topic=3);
 popSubMenu(mnuNL);
 
 var mnuSiteAdmin = new menu(mnuSiteAdmin)
 mnuSiteAdmin.bar[0] = new menu_bar(mnuAddressUpdate,,访问地区更新,,访问地区更新,,1,AddressUpdate.asp);
 popSubMenu(mnuSiteAdmin);
 
 var mnuSystem = new menu(mnuSystem);
 mnuSystem.bar[0] = new menu_bar(mnuSysUser,,用户管理,,用户管理,,1,userAdmin.asp);
 mnuSystem.bar[1] = new menu_bar(mnuSysAuthority,,权限管理,,权限管理,,1,authority.asp);
 mnuSystem.bar[2] = new menu_bar(\-,,,,,,,);
 mnuSystem.bar[3] = new menu_bar(mnuSysPwdChange,,口令修改,,口令修改,,1,chgpwd.asp);
 mnuSystem.bar[4] = new menu_bar(\-,,,,,,,);
 mnuSystem.bar[5] = new menu_bar(mnuSysHelp,,帮助,,帮助,,1,help.asp);
 mnuSystem.bar[6] = new menu_bar(mnuSysAbout,,关于本系统,,关于本系统,,1,about.asp);
 mnuSystem.bar[7] = new menu_bar(\-,,,,,,,);
 mnuSystem.bar[8] = new menu_bar(mnuSysExit,,退出系统,,退出本系统,,1,quit.asp);
 popSubMenu(mnuSystem);
 
 var mnuShow = new menu(mnuShow);
 mnuShow.bar[0] = new menu_bar(mnuShow1,,演示菜单一,,Menu Show 1,,1,menushow1.asp);
 mnuShow.bar[1] = new menu_bar(mnuShow2,,演示菜单二,,Menu Show 2,,0,mnuShow_2);
 mnuShow.bar[2] = new menu_bar(mnuShow3,,演示菜单三,,Menu Show 3,,1,menushow3.asp);
 mnuShow.bar[3] = new menu_bar(\-,,,,,,,);
 mnuShow.bar[4] = new menu_bar(mnuShow4,,演示菜单四,,Menu Show 4,,1,menushow4.asp);
 mnuShow.bar[5] = new menu_bar(mnuShow5,,演示菜单五,,Menu Show 5,,0,mnuShow_2);
 popSubMenu(mnuShow);
 
 var mnuShow_2 = new menu(mnuShow_2);
 mnuShow_2.bar[0] = new menu_bar(mnuShow21,,演示菜单二一,,Menu Show 2.1,,1,menushow21.asp);
 mnuShow_2.bar[1] = new menu_bar(mnuShow22,,演示菜单二二,,Menu Show 2.2,,0,mnuShow_22);
 mnuShow_2.bar[2] = new menu_bar(mnuShow23,,演示菜单二三,,Menu Show 2.3,,1,menushow23.asp);
 mnuShow_2.bar[3] = new menu_bar(mnuShow24,,演示菜单二四,,Menu Show 2.4,,0,mnuShow_22);
 mnuShow_2.bar[4] = new menu_bar(mnuShow25,,演示菜单二五,,Menu Show 2.5,,1,menushow25.asp);
 popSubMenu(mnuShow_2);
 
 var mnuShow_22 = new menu(mnuShow_22);
 mnuShow_22.bar[0] = new menu_bar(mnuShow221,,演示菜单二二一,,Menu Show 2.2.1,,1,menushow221.asp);
 mnuShow_22.bar[1] = new menu_bar(mnuShow222,,演示菜单二二二,,Menu Show 2.2.2,,1,menushow222.asp);
 mnuShow_22.bar[2] = new menu_bar(mnuShow223,,演示菜单二二三,,Menu Show 2.2.3,,1,menushow223.asp);
 popSubMenu(mnuShow_22);
//-->
  </script>
  <table border=0 cellpadding=0 cellspacing=0><tr><td height=27>此部分已经被顶部菜单条覆盖</td></tr></table>
  <p id=lblOutput>信息提示区域</p>
 </body>
</html>

xp_menu.css(样式表)
body {
 FONT-SIZE: 13px;
 MARGIN: 0px;
 SCROLLBAR-SHADOW-COLOR: silver;
 SCROLLBAR-3DLIGHT-COLOR: silver;
 LINE-HEIGHT: 20px;
 FONT-FAMILY: Verdana, 宋体;
 SCROLLBAR-DARKSHADOW-COLOR: silver;
 BACKGROUND-COLOR: #ff99cc;
 border: none;
}

DIV.MainMenuBG
{
 border-right: teal 1px solid;
 font-size: 14px;
 border-left: #ffffff 1px solid;
 cursor: default;
 color: #000000;
 border-bottom: teal 1px solid;
 font-family: Verdana, 宋体;
 position: absolute;
 background-color: #d6d3ce;
}
DIV.MainMenu
{
 border-right: #d6d3ce 1px solid;
 padding-right: 8px;
 border-top: #d6d3ce 1px solid;
 padding-left: 8px;
 padding-bottom: 1px;
 border-left: #d6d3ce 1px solid;
 cursor: default;
 padding-top: 1px;
 border-bottom: #d6d3ce 1px solid;
 position: absolute;
 background-color: #d6d3ce;
}
DIV.MainMenuOver
{
 border-right: #08246b 1px solid;
 padding-right: 8px;
 border-top: #08246b 1px solid;
 padding-left: 8px;
 padding-bottom: 1px;
 border-left: #08246b 1px solid;
 cursor: default;
 padding-top: 1px;
 border-bottom: #08246b 1px solid;
 position: absolute;
 background-color: #b5bed6;
}
DIV.MainMenuClick
{
 border-right: #636563 1px solid;
 padding-right: 8px;
 border-top: #636563 1px solid;
 padding-left: 8px;
 padding-bottom: 1px;
 border-left: #636563 1px solid;
 cursor: default;
 padding-top: 1px;
 border-bottom: #636563 1px solid;
 position: absolute;
 background-color: #dedbd6;
}
DIV.SubMenuBG
{
 border-right: #636563 1px solid;
 border-top: #636563 1px solid;
 font-size: 14px;
 visibility: hidden;
 border-left: #636563 1px solid;
 color: #000000;
 border-bottom: #636563 1px solid;
 font-family: Verdana, 宋体;
 position: absolute;
 background-color: #fffbf7;
}
DIV.SubMenu
{
 cursor: default;
 position: absolute;
}
DIV.SubMenuOver
{
 cursor: default;
 position: absolute;
}
TD.ico
{
 border-top: #dedbd6 1px solid;
 border-left: #dedbd6 1px solid;
 border-bottom: #dedbd6 1px solid;
 background-color: #dedbd6;
}
TD.icoOver
{
 border-top: #08246b 1px solid;
 border-left: #08246b 1px solid;
 border-bottom: #08246b 1px solid;
 background-color: #b5bed6;
 border-right-width: 1px;
 border-right-color: #08246b;
}
TD.text
{
 padding-right: 2px;
 border-top: #fffbf7 1px solid;
 padding-left: 5px;
 border-bottom: #fffbf7 1px solid;
 background-color: #fffbf7;
}
TD.textOver
{
 padding-right: 2px;
 border-top: #08246b 1px solid;
 padding-left: 5px;
 border-bottom: #08246b 1px solid;
 background-color: #b5bed6;
}
TD.skey
{
 padding-right: 2px;
 border-top: #fffbf7 1px solid;
 padding-left: 2px;
 border-bottom: #fffbf7 1px solid;
 background-color: #fffbf7;
}
TD.skeyOver
{
 padding-right: 2px;
 border-top: #08246b 1px solid;
 padding-left: 2px;
 border-bottom: #08246b 1px solid;
 background-color: #b5bed6;
}
TD.sub
{
 border-right: #fffbf7 1px solid;
 border-top: #fffbf7 1px solid;
 border-bottom: #fffbf7 1px solid;
 background-color: #fffbf7;
}
TD.subOver
{
 border-right: #08246b 1px solid;
 border-top: #08246b 1px solid;
 border-bottom: #08246b 1px solid;
 background-color: #b5bed6;
}
DIV.SubMenu TD
{
 font-size: 14px;
 padding-top: 2px;
}

xp_menu.js(.js包含文件)
<!--
// menu source code

//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
//    以下为建立菜单的部分
//_______________________________________

 //菜单条的结构
 function menu_bar(name,ico,text,key,tip,skey,type,cmd) {
  this.name = name;     //名称
  this.ico = ico;      //图标
  this.text = text;     //文字
  this.key = key;      //热键
  this.tip = tip;      //提示
  this.skey = skey;     //快捷键
  this.type = type;     //命令类型,0为弹出下级菜单,1为执行一个命令(跳转到另一个文件)
  this.cmd = cmd;      //下级菜单的名称或命令字符串,根据type的值而定
 }
 
 //菜单的结构
 function menu(name) {
  this.name = name;      //名称
  this.bar = new Array();   //所包含的菜单条数组
 }
 
 //输出一已定义的主菜单,横排的
 function popMainMenu(menu,left,top,width,height) {
  
  var strHTML, posLeft, posTop, i;
  
  strHTML = <div id= + menu.name + style=left: + left + ;top: + top + ;width: + width + ;height: + height + class=MainMenuBG>
  document.write (strHTML);
  
  posLeft = 2;
  posTop = 1;
  for (i=0;i<menu.bar.length;i++) {
   strHTML = <div id= + menu.bar[i].name + nowrap style=left: + posLeft + ;top: + posTop + ; class=MainMenu +
        onmouseover=return menu_onmouseover(this,\ + menu.bar[i].cmd + \) onmouseout=return menu_onmouseout(this) +
        onclick=return menu_onclick(this,\ + menu.bar[i].cmd + \) title= + menu.bar[i].tip + > + menu.bar[i].text;
   if (menu.bar[i].key!=) {
    strHTML += (<u> + menu.bar[i].key + </u>);
   }
   strHTML += </div>;
   document.write (strHTML);
   posLeft += document.all.item(menu.bar[i].name).offsetWidth + 1;
  }
  
  strHTML = </div>;
  document.write (strHTML);
 }
 
 //输出一个已定义的子菜单,竖排的
 function popSubMenu(menu) {
  
  var strHTML, posLeft, posTop, i;
  
  strHTML = <div id= + menu.name + style=left:20;top:30;width:244;height:300; class=SubMenuBG>
  document.write (strHTML);
  
  posLeft = 1;
  posTop = 1;
  
  for (i=0;i<menu.bar.length;i++) {
   if (menu.bar[i].name!=\-) {    //如果名称不是“\-”,表示是一个普通菜单条
    strHTML = <div id= + menu.bar[i].name + style=left: + posLeft + ;top: + posTop + ; class=SubMenu +
         title= + menu.bar[i].tip + +
         onmouseover=return bar_onmouseover(this, + menu.bar[i].type + ,\ + menu.bar[i].cmd + \) +
         onmouseout=return bar_onmouseout(this, + menu.bar[i].type + ,\ + menu.bar[i].cmd + \) +
         onclick=return bar_onclick(this, + menu.bar[i].type + ,\ + menu.bar[i].cmd + \)> +
           <table border=0 cellspacing=0 cellpadding=0 width=240> +
             <tr> +
               <td nowrap align=center width=20 id= + menu.bar[i].name + _ico class=ico>;
    if (menu.bar[i].ico!=) {
     strHTML += <img border=0 width=16 height=16 src= + menu.bar[i].ico + >;
    }else {
   &n

技术交流 永无止境

百度搜索中共有相关主题
[阅读:次] [返回上一页] [打 印]
  • 相关文章
  • 本类热门