longyong402609921  

// JScript 文件
/*本文件封装了创建滑动菜单的两个类,用户只需按leftMenu中的格式书写菜单并引用此文件和menu.css然后调用Menus类init()即可实现功能,龙勇于2008-8-11*/
//创建menu类parentMenu为主菜单subMenu为子菜单
function Menu(menu,subMenu)
{
   this.down=true;//判断子菜单是否处于隐藏状态true为隐藏
   this.parentMenu=document.getElementById(menu);
   this.subMenu=document.getElementById(subMenu);
   this.subMenuHeight=this.getHeight();//子菜单实际高度
   this.subMenuMiniHeight=1;//子菜单缩放的最小高度
   //alert(this.subMenuHeight);
   this.speed=6;//子菜单收缩速度
}
Menu.selectedMenu=null;
Menu.prototype.init=function()//初始化子菜单的所有事件
{
   this.subMenu.style.display='none';
//   this.createClickEvent();
   this.createLiEvent();
  // this.slide(this.down,58);
}
Menu.prototype.createClickEvent=function()
{
   var oThis=this;
//   this.parentMenu.onclick=function()
//   {
//      
   oThis.subMenu.style.display='block';
   oThis.slide(oThis.down);
 //  }
}
Menu.prototype.getHeight=function()
{
  var lis=this.subMenu.getElementsByTagName('li');
  var height=0;
  for(var i=0;i<lis.length;i++)
  {
     height+=lis[i].offsetHeight;
  }
  return height;
}
Menu.prototype.slide=function(down)//滑动
{
   //alert(this.subMenu.tagName);
   var oThis=this;
   if(down)
   {
       (oThis.parentMenu.getElementsByTagName('img'))[0].src='../images/reduce.gif';
       oThis.subMenu.style.height='1px';
       var slideId=setInterval(function(){
       oThis.subMenu.style.height=parseInt(oThis.subMenu.style.height)+parseInt(oThis.speed)+'px';
       if(parseInt(oThis.subMenu.style.height) >= oThis.subMenuHeight)
       {
           oThis.subMenu.style.height=oThis.subMenuHeight+'px';
           clearInterval(slideId);
           oThis.down=false;  
       }
       else
       {
         
       }},20);
   }
   else
   {
      (oThis.parentMenu.getElementsByTagName('img'))[0].src='../images/add.gif';
       var slideId=setInterval(function(){
       var height=parseInt(oThis.subMenu.style.height)-parseInt(oThis.speed);
       //alert(height);
       if(height<=0)
         height=1;
       oThis.subMenu.style.height=height+'px';
       if(parseInt(oThis.subMenu.style.height) <= parseInt(oThis.subMenuMiniHeight))
       {
           oThis.subMenu.style.height='0px';
           clearInterval(slideId);
           oThis.down=true;  
           oThis.doWhenAnotherMenuAccur();
       }
       else
       {
         
       }},20);
   }
}
Menu.prototype.createLiEvent=function()//创建Li元素事件
{
   var oThis=this;
   var lis=oThis.subMenu.getElementsByTagName('a');
   for(var i=0;i<lis.length;i++)
   {
//      lis[i].onmouseover=function()
//      {
//         this.style.background='white';
//      }
//      lis[i].onmouseout=function()
//      {
//         this.style.background='#0099FF';
//      }
      lis[i].onclick=function()
      {
        for(var j=0;j<lis.length;j++)
        {
           // var index=lis[j].className.indexOf('click');
//            if(index>=0)
//            {
//               lis[j].className.replace('click','');
//               break;
//            }
              if(lis[j].style.background=='#2586d7')
              {
                 //alert(j);
                 lis[j].style.background='white';
                 break;
              }
        }
//        this.className+='click';
//        alert(this.className);
          this.style.background='#2586d7';
      }
   }
}
Menu.prototype.doWhenAnotherMenuAccur=function()
{
   //alert(this.subMenu.tagName);
   if(!this.down)
      this.slide(this.down);
  // alert('do');
   var lis=this.subMenu.getElementsByTagName('a');
   for(var i=0;i<lis.length;i++)
     if(lis[i].style.background=='#2586d7')
     {
        lis[i].style.background='white';
        break;
     }
}
//单个menu类结束
//Menus类
function Menus()
{
   this.menus=[];
   this.commonMenus=[];
}
Menus.prototype.init=function()
{
  this.createMenus();
  for(var i=0;i<this.menus.length;i++)
     this.menus[i].init();
  //alert('init');
  this.createClickEvent();
}
Menus.prototype.createMenus=function()
{
   var divs=document.getElementsByTagName('div');
   var mainDivs=[];
   var j=0;
   var k=0;
   for(var i=0;i<divs.length;i++)
   {
      if(divs[i].className=='menu'&& (divs[i].getElementsByTagName('div')).length!=0)
         mainDivs[j++]=divs[i];
      else if(divs[i].className=='menu')
         this.commonMenus[k++]=divs[i];
   }
   for(i=0;i<mainDivs.length;i++)
   {
      //alert(mainDivs[i].tagName);
      var parentMenuId=(mainDivs[i].getElementsByTagName('div'))[0].id;
      //alert(parentMenuId);
      var subMenuId=(mainDivs[i].getElementsByTagName('ul'))[0].id;
      this.menus[i]=new Menu(parentMenuId,subMenuId);
   }
}
Menus.prototype.createClickEvent=function()
{
   var oThis=this;
   var evt;
   for(var i=0;i<oThis.menus.length;i++)
      oThis.menus[i].parentMenu.onclick=function()
      {
          for(var j=0;j<oThis.menus.length;j++)
            if(this!=oThis.menus[j].parentMenu)
               (oThis.menus[j]).doWhenAnotherMenuAccur();
            else
            {
               (oThis.menus[j]).doWhenAnotherMenuAccur();
               evt=oThis.menus[j];
            }
          for(j=0;j<oThis.commonMenus.length;j++)
            if(((oThis.commonMenus[j].getElementsByTagName('a'))[0]).style.background=='white')
            {
               ((oThis.commonMenus[j].getElementsByTagName('a'))[0]).style.background='#DBE9F8';
               break;
            }
        evt.createClickEvent();
      }
   for(i=0;i<oThis.commonMenus.length;i++)
      if((As=oThis.commonMenus[i].getElementsByTagName('a')).length!=0)
         As[0].onclick=function()
         {
            for(var j=0;j<oThis.menus.length;j++)
                (oThis.menus[j]).doWhenAnotherMenuAccur();
            for(j=0;j<oThis.commonMenus.length;j++)
                if(((oThis.commonMenus[j].getElementsByTagName('a'))[0]).style.background=='white')
                {
                   ((oThis.commonMenus[j].getElementsByTagName('a'))[0]).style.background='#DBE9F8';
                   break;
                }  
            this.style.background='white';      
         }
}

//.css文件内容

html,body
{
 margin:0px;
 padding:0px;
 width:100%;
 height:100%;
}
ul
{
 margin:0px;
 padding:0px;
 display:block;
}
.parentMenu
{
 background-color:#DBE9F8;
 border:1px solid #BAC8E0;
 text-align:center;
 display:block;
 width:159px;
 height:20px;
 font-size:14px;
 padding-top:4px;
 cursor:pointer;
 position:relative;
 color:Blue;
}
.parentMenu img
{
 height:20px;
 width:20px;
 position:absolute;
 top:2px;
 left:4px;
}
.commonMenu
{
}
.commonMenu a
{
    background-color:#DBE9F8;
 border:1px solid #BAC8E0;
 text-align:center;
 display:block;
 width:159px;
 height:20px;
 font-size:14px;
 padding-top:4px;
 cursor:pointer;
 color:Blue;
}
.subMenu li
{
 padding:0px;
 margin:0px;   
}
.subMenu a
{
 background: white;
 border:1px solid #BAC8E0;
 border-bottom:0px;
 display:block;
 width:159px;
 height:18px;
 font-size:12px;
 margin-top:0px;
 padding-top:4px;
 text-align:center;
 cursor:pointer;
 color:Blue;
}
.subMenu a:visited,.commonMenu a:visited
{
 color:blue;
}
.subMenu a:hover,.commonMenu a:hover
{
 color:red;
 background: #5ba3e0;
}
.subMenu a:active,.commonMenu a:active
{
 color:black;
}
.subMenu
{
 text-decoration:none;
 list-style:none;
 overflow:hidden;
}
.menu
{
 margin-top:2px;
}
.click
{
 background:white;
}
#mainMenu
{
 position:relative;
 width:162px;
 margin-left:10px;
 
}
//menu specification

<div class="menu" >
    <span id="chuLiGongJu_parentMenu" class="commonMenu"><a href="../ToolSelect/toolselect.aspx" target="iRight">处理工具查询</a></span>
    </div>
    <div class="menu" >
    <div id="zhuanJia_parentMenu" class="parentMenu">
    <img src="../images/add.gif" />
        <span >参考方案</span>
    </div>
    <ul id="zhuanJia_subMenu" class="subMenu">
    <li><a href="../professer/professer.aspx" target="iRight">方案查询</a></li>
    <li><a href="#">3D展示</a></li>
    </ul>
    </div>
    <div class="menu" >
    <span id="yuFangCuoShi_parentMenu" class="commonMenu"><a href="#">预防措施</a></span>
    </div>

posted on 2008-08-19 12:37  longyan  阅读(250)  评论(0)    收藏  举报