本文实例为大家分享了jquery实现网页左侧导航菜单栏的具体代码,供大家参考,具体内容如下

1.首先在<head></head>之间添加

<script type="text/javascript" src="js/menu.js"></script>
<link href="css/menu.css" rel="stylesheet" type="text/css" />

2.然后,在<body></body>之中写入如下代码(根据您的实际情况修改)

<div class="box">
     <h2></h2>
     <ul class="menu">
      <li class="level1"><a href="#none">车辆信息管理</a>
         <ul class="level2">
              <li><a href="CarManagement.aspx" target="CarFrame1">车辆管理</a></li>
              <li><a href="VehicleUsingRecord.aspx" target="CarFrame1">使用记录</a></li>
              <li><a href="MaintenanceRecord.aspx" target="CarFrame1">维护记录</a></li>
          </ul>
           </li>
        <li class="level1"><a href="CarApply.aspx" target="CarFrame1">用车申请</a></li>
        <li class="level1"><a href="UseApplyManagement.aspx" target="CarFrame1">申请审批</a></li>
        <li class="level1"><a href="#">审批结果</a>
          <ul class="level2">
               <li><a href="HasBeenApproved.aspx" target="CarFrame1">已批准的申请</a></li>
               <li><a href="WaitingForApproval.aspx" target="CarFrame1">待批准的申请</a></li>
               <li><a href="NotBeApproved.aspx" target="CarFrame1">未通过的申请</a></li>
               <li><a href="UnderMaintenance.aspx" target="CarFrame1">维护中的车辆</a></li>
           </ul>
               </li>
               <li class="level1"><a href="../Homepage.aspx">返回OA主页</a></li>
               <li class="level1"><a href="../Login.aspx">退出OA系统</a></li>
            </ul>
 </div>

3.最后就是.js和.css文件了

menu.js文件代码如下:

function getElementsByClassName(searchClass, node,tag){  
    if(document.getElementsByClassName){return  document.getElementsByClassName(searchClass)}
    else{        
        node = node || document;        
        tag = tag || "*";        
        var classes = searchClass.split(" "),        
        elements = (tag === "*" && node.all)? node.all : node.getElementsByTagName(tag),        
        patterns = [],         
        returnElements = [],        
        current,         
        match;        
        var i = classes.length;       
        while(--i >= 0){patterns.push(new RegExp("(^|\\s)"   classes[i]   "(\\s|$)"));}        
        var j = elements.length;       
        while(--j >= 0){            
            current = elements[j];           
            match = false;            
            for(var k=0, kl=patterns.length; k<kl; k  ){                
                match = patterns[k].test(current.className);                
                if (!match)  break;           
            } 
            if (match)  returnElements.push(current);        
        }        
        return returnElements;   
    } 
}
 
/*通用加载函数,页面中如果要用到onload函数在窗体一加载时就执行的代码,可以直接添加到这个函数,否则会引起多个onload函数的执行冲突
  带参数的调用方法:addLoadEvent(new Function("refurFrame('单词管理');"));
*/
function addLoadEvent(func){
    var oldοnlοad=window.onload;
    if(typeof window.onload!='function'){
        window.οnlοad=func;    
    }
    else{
        window.οnlοad=function(){
            oldonload();
            func();
        }    
    }
}
 
/*判断是否有className的函数,调用例子为:o.className=o.addClass(o,"normal");*/
function hasClass(element, className) {  
    var reg = new RegExp('(\\s|^)' className '(\\s|$)');     
    return element.className.match(reg); 
} 
/*动态添加className的函数,调用例子为:addClass(document.getElementById("test"), "test");*/
function addClass(element, className) {  
    if (!this.hasClass(element, className)){   
        element.className  = " " className;/*如果有多个样式叠加,则用这种方式,如class="style1 style2"*/
        /*element.className = className; */ 
    } 
}  
/*动态删除className的函数,调用例子为:removeClass(document.getElementById("test"), "test") */
function removeClass(element, className) {     
    if (hasClass(element, className)){ 
        var reg = new RegExp('(\\s|^)' className '(\\s|$)');         
        element.className = element.className.replace(reg,' ');     
    } 
} 
/*获取第一个子节点的函数,兼容FF*/
function getFirstChild(obj){
    var firstDIV;
    for (i=0; i<obj.childNodes.length; i  ){
        if (obj.childNodes[i].nodeType==1){
            firstDIV=obj.childNodes[i];
            return firstDIV;
        }
        else 
            continue;
    }
}
 
addLoadEvent(new Function("hovermenu('level1','level2','hove','cur');"));
//menu代表菜单总的ID名称
//level1代表一级菜单项的父容器,level2代表二级菜单项的父容器,
//后面的三个参数style1,style2,style3分别代表鼠标移入,移出,点击的三态样式名
addLoadEvent(new Function("submenu('level2','hove1','hove1');"));
 
/*滑动显隐菜单列表*/
var temp;
var temp1;
function hovermenu(cssName1,cssName2,style2,style3){ 
    var ArrLinks=getElementsByClassName(cssName1);//一级菜单父容器的数组
    var ArrLevel = new Array();//第一级菜单的数组
    for(var i=0;i<ArrLinks.length;i  ){
        var curobj= getFirstChild(ArrLinks[i]);//获得第一个子对象                    
        ArrLevel.push(curobj);        
    }
    var ArrDivs=getElementsByClassName(cssName2);//二级菜单的父容器数组,要显示的二级菜单容器
    for(var i=0;i<ArrLinks.length;i  ){        
        var obj=getFirstChild(ArrLinks[i]);//获得第一个子对象
        obj.index=i
        obj.οnmοuseοver= function(){overme(this,ArrLevel,style2,temp)};           
        obj.οnmοuseοut=function(){outme(this,ArrLevel,style2,temp)};
        obj.οnclick=function(){clickme(this,ArrLinks,ArrDivs,style2,style3,temp)};
        obj.οnfοcus=function(){this.blur()};//去掉虚线框
    }    
}
//二级菜单绑定事件
function submenu(cssName2,style2,style3){ 
    var ArrLinks=getElementsByClassName(cssName2);//一级菜单父容器的数组
    var ArrLevel = new Array();//第一级菜单的数组
    for(var i=0;i<ArrLinks.length;i  ){
        var sublinks= ArrLinks[i].getElementsByTagName('A');//获得第一个子对象
        for(var m=0;m<sublinks.length;m  ){
            ArrLevel.push(sublinks[m]);
        }           
    }    
    for(var i=0;i<ArrLevel.length;i  ){        
        var obj=ArrLevel[i];
        obj.index=i
        obj.οnmοuseοver= function(){overme(this,ArrLevel,style2,temp1)};           
        obj.οnmοuseοut=function(){outme(this,ArrLevel,style2,temp1)};
        obj.οnclick=function(){subclick(this,ArrLevel,style2,style3,temp1)};
        obj.οnfοcus=function(){this.blur()};//去掉虚线框
    }    
}
function overme(o,links,style2,state){
    if (state!=o.index){        
        addClass(o,style2);                        
    }
}
function outme(o,links,style2,state){
    if (state!=o.index){
        removeClass(o,style2);                        
    };
}
//一级菜单点击事件
function clickme(o,links,divs,style2,style3,state){
    //要判断是否有子菜单项
    var objUl=links[o.index].getElementsByTagName('UL');
    var subNum=objUl.length;//是否有二级菜单,0为无,大于0为有;
    if (state!=o.index){        
        for(var i=0;i<divs.length;i  ){ 
            if(subNum>0){//如果存在二级菜单项,即隐藏它
                divs[i].style.display="none";
                //closeObj(divs[i]);
            }                                            
        }        
        if(subNum>0){//如果存在二级菜单项,显示当前点击的二级菜单
          objUl[0].style.display="block";
          showObj(objUl[0]);
        }        
        temp=o.index;
    }    
    for(var i=0;i<links.length;i  ){
        var curobj= getFirstChild(links[i]);//获得第一个子对象                    
        removeClass(curobj,style3);
        removeClass(curobj,style2);
    }                                
    addClass(o,style3);
}
//二级菜单点击事件
function subclick(o,links,style2,style3,state){
    if (state!=o.index){
        for(var i=0;i<links.length;i  ){
            removeClass(links[i],style2);    
        }
        temp1=o.index;        
        addClass(o,style2);    
    }
}
 
//缓冲显示
var flag=0;
function showObj(obj){
    var allhight;
    allhight=obj.getElementsByTagName("li").length*26;//26为每个菜单项的高度,用来计算二级菜单的总高度。
   obj.style.height="1px";   
   var changeW=function(){              
      var obj_h=parseInt(obj.style.height);
      if(obj_h<=allhight){ 
        obj.style.height=(obj_h Math.ceil((allhight-obj_h)/10)) "px";
      }
      else{ 
      clearInterval(bw1);
      }
   }       
   bw1= setInterval(changeW,40);//时间开关
   if(flag>0){
     clearInterval(bw2);
   }
}
//缓冲关闭
function closeObj(obj){    
   flag  ;       
   var closeDiv=function(){                
      clearInterval(bw1);
      var obj_h=parseInt(obj.style.height);
      if(obj_h>1){ 
             obj.style.height=(obj_h-Math.ceil(obj_h)/100) "px";
      }
      else{
      clearInterval(bw2);
      obj.style.display="none";
      }
   }         
  bw2= setInterval(closeDiv,1);
  //alert(flag)
}

而menu.css代码如下:

/* 全兼容可高亮二级缓冲折叠菜单*/
*{margin:0;padding:0;}
html,body{height:100%;text-align:center;}
a:link,a:visited{ text-decoration:none;}
 
/*菜单个性设置*/
.box{width:195px;height:100%;margin:0 auto;height:100%;background:url(../images/menuboxbg.gif) repeat-y left top;}
.box ul{list-style:none;text-align:left;}
.box h2{width:195px;margin:0 auto;height:33px;background:#FFF url(../images/menuhead.gif) no-repeat left top;text-indent:-9999px;}
 
/*一级菜单*/
.menu li.level1 a{display:block;line-height:31px;height:31px;padding-left:50px; font-size:15px; font-weight:bold;color:#0066FF;background:url(../images/menubg.gif) no-repeat left top;}
/*一级菜单两态样式,供JS调用*/
.menu li.level1 a.hove{background-position:left -31px;}
.menu li.level1 a.cur{background-position:left -62px;}
 
/*二级菜单*/
.menu li ul{padding-left:10px;overflow:hidden;}
.menu li ul.level2{width:180px;display:none;}
.menu li ul.level2 li{height:26px;line-height:26px;}
.menu li ul.level2 li a{display:block;height:26px;line-height:26px;background:#E7E3E7 url(../images/t1.gif) no-repeat 30px center;padding-left:50px;color:#0066FF;border-top:1px #B8C2CB solid;overflow:hidden;}
/*二级菜单两态样式,供JS调用*/
.menu li ul.level2 li a.hove1{background:#F6F6F6 url(../images/t2.gif) no-repeat 30px center;}

好了,完成了以上配置,您就可以实现如文章开始处那样的左侧导航菜单栏了,希望对你有用。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持Devmax。

jquery实现网页左侧导航菜单栏的更多相关文章

  1. jquery点赞功能实现代码 点个赞吧!

    点赞功能很多地方都会出现,如何实现爱心点赞功能,这篇文章主要为大家详细介绍了jquery点赞功能实现代码,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

  2. Html+Css+Jquery实现左侧滑动拉伸导航菜单栏的示例代码

    这篇文章主要介绍了Html+Css+Jquery实现左侧滑动拉伸导航菜单栏的示例代码,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧

  3. 使用layui实现左侧菜单栏及动态操作tab项的方法

    这篇文章主要介绍了使用layui实现左侧菜单栏及动态操作tab项的方法,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下

  4. xcode – 使用Storyboard参考AppDelegate中的主要NSWindow?

    我正在尝试在AppDelegate中为我的应用程序的主窗口设置一个插座,然后在InterfaceBuilder中连接它.我轻松地在AppDelegate中创建插座:但是,在界面构建器中,我无法将引用插座连接到AppDelegate.相反,我只能将它连接到WindowController,我希望这张图片显示:第一个对象是WindowController,第二个对象是FirstResponder,但缺

  5. 在IOS9中的Cordova应用程序使用JQuery / Javascript的window.history问题

    在两个测试用例中唯一改变的是Cordova.js.解决方法我看到这是几个星期前,但我会发布这个,以防其他人遇到它.听起来它可能与iOS9中的哈希更改生成的导航事件有关.如果是这样,可以将其添加到index.html以禁用哈希侦听:

  6. iOS 5上的jQuery事件

    解决方法在Apple开发论坛上由一个人回答:我需要在将元素添加到DOM之后才绑定(),如下所示:

  7. android – Phonegap本地构建 – jquery ajax错误:readystate 0 responsetext status 0 statustext error

    解决方法您是否在索引文件中包含了内容安全元标记?

  8. jQuery中的通配符选择器使用总结

    通配符在控制input标签时相当好用,这里简单进行了jQuery中的通配符选择器使用总结,需要的朋友可以参考下

  9. 设置焦点到输入框和显示Android键盘使用jquery手机在pageshow

    我正在设置焦点到输入框,并显示Android键盘使用jquery手机网页显示.我从Web上尝试过很多选项.但是没有一个在模拟器和移动设备中都能按预期工作.这是代码:查找屏幕截图以供参考请咨询…解决方法对我有用的解决方案

  10. android – 如何在焦点()上以编程方式隐藏jquery mobile中的键盘

    我想在Focus()上隐藏键盘,但是当$(“.ui-input-text”).focus();它会自动打开键盘.我只是想隐藏在特定的屏幕上,我用document.activeElement.blur()测试;但它也没有关注()输入.解决方法提交表单时,iOS键盘可能不会自动关闭.这是一个非常实用的问题,因为不应要求用户手动关闭键盘,否则他们不会期望需要这样做.可以通过调用document.acti

随机推荐

  1. js中‘!.’是什么意思

  2. Vue如何指定不编译的文件夹和favicon.ico

    这篇文章主要介绍了Vue如何指定不编译的文件夹和favicon.ico,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教

  3. 基于JavaScript编写一个图片转PDF转换器

    本文为大家介绍了一个简单的 JavaScript 项目,可以将图片转换为 PDF 文件。你可以从本地选择任何一张图片,只需点击一下即可将其转换为 PDF 文件,感兴趣的可以动手尝试一下

  4. jquery点赞功能实现代码 点个赞吧!

    点赞功能很多地方都会出现,如何实现爱心点赞功能,这篇文章主要为大家详细介绍了jquery点赞功能实现代码,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

  5. AngularJs上传前预览图片的实例代码

    使用AngularJs进行开发,在项目中,经常会遇到上传图片后,需在一旁预览图片内容,怎么实现这样的功能呢?今天小编给大家分享AugularJs上传前预览图片的实现代码,需要的朋友参考下吧

  6. JavaScript面向对象编程入门教程

    这篇文章主要介绍了JavaScript面向对象编程的相关概念,例如类、对象、属性、方法等面向对象的术语,并以实例讲解各种术语的使用,非常好的一篇面向对象入门教程,其它语言也可以参考哦

  7. jQuery中的通配符选择器使用总结

    通配符在控制input标签时相当好用,这里简单进行了jQuery中的通配符选择器使用总结,需要的朋友可以参考下

  8. javascript 动态调整图片尺寸实现代码

    在自己的网站上更新文章时一个比较常见的问题是:文章插图太宽,使整个网页都变形了。如果对每个插图都先进行缩放再插入的话,太麻烦了。

  9. jquery ajaxfileupload异步上传插件

    这篇文章主要为大家详细介绍了jquery ajaxfileupload异步上传插件,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

  10. React学习之受控组件与数据共享实例分析

    这篇文章主要介绍了React学习之受控组件与数据共享,结合实例形式分析了React受控组件与组件间数据共享相关原理与使用技巧,需要的朋友可以参考下

返回
顶部