zoukankan      html  css  js  c++  java
  • JS打造类似QQ的折叠菜单

    代码简介:

    QQ折叠菜单,JavaScript网页版,仿OUTLOOK菜单,相当牛,见识一下。

    代码内容:

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml" >
    <head runat="server">
    <title>JS打造类似QQ的折叠菜单_网页代码站(www.webdm.cn)</title>
    <style>
    .outlook-title
    {
        border:1px outset;    
        background-color:buttonface;
        color:black;
        text-align:center;
        cursor:hand;
        font-size:9pt;
    }
    .outlook-item
    {
        padding:2px;
        font-size:9pt;
    }
    
    a.outlook-item:hover
    {
        color:blue;
    }
    </style>
    
    <script language="JavaScript" type="text/JavaScript">
    <!--
    function MM_reloadPage(init) {  //reloads the window if Nav4 resized
      if (init==true) with (navigator) {if ((appName=="Netscape")&&(parseInt(appVersion)==4)) {
        document.MM_pgW=innerWidth; document.MM_pgH=innerHeight; onresize=MM_reloadPage; }}
      else if (innerWidth!=document.MM_pgW || innerHeight!=document.MM_pgH) location.reload();
    }
    MM_reloadPage(true);
    //-->
    </script>
    
    </head>
    <body>
        <form id="form1" runat="server">
        <div>
     <div id="Layer1">
    <table height="100%" width="100%" border=0 cellpadding=0 cellspacing=0>
        <tr><td width="144"><div id="Div1">
          <table style="WIDTH: 140px; HEIGHT: 100%" cellspacing=0 cellpadding=0 bgcolor=#aca899 border=1 hspace="0" vspace="0">
            <tr>
              <td id=outLookBarShow style="HEIGHT: 100%"  align=middle name="outLookBarShow">
                <div id="o1" style="height:100%;"></div></td>
            </tr>
          </table>
        </div>
            </td>
        <td width="828" height="600"><iframe id="frm" name="frm" width="100%" height="100%" frameborder=0></iframe></td></tr>
    </table>
    </div>
        
        <SCRIPT LANGUAGE="JavaScript">
    <!--
    function CLASS_OUTLOOKBAR(id,name)
    {
        var THIS1 = this;
    
        this.id    = getUnique(id);
        this.name = getUnique(name);
        this.width = "140";
        this.height = "100%";
        this.titles = new Array();
    
        function getUnique(p){
            if(p!=null){
                return p;
            } else {
                return "outlook_" + new Date().getTime() + "_";
            }
        }
    
        this.addTitle = function(name){    
    
            function title(name){
                var THIS2    = this;
                this.name    = name;
                this.items    = new Array();
            
                this.addItem = function(name,target,url,image,align){
    
                    function item(name,target,url,image,align){
                        this.name = name;
                        this.image = image;
                        this.target = target;
                        this.url = url;
                        this.align = align;
                    }
    
                    var        _item = new item(name,target,url,image,align);
                    THIS2.items[THIS2.items.length] = _item;
                    return _item;
                }
            }
    
            var _title = new title(name);
            this.titles[this.titles.length] = _title;
            return _title;
        }
    
        this.step    = 4;
        this.speed    = 10;
        this.selectedIndex = 0;
        this.timer  = 0;
        this.rate    = 100;
        this.run    = false;
        this.wait = new Array();
    
        this.select = function(index){
            if(this.selectedIndex!=index){
                if(this.run==false){
                    this.rate = 100;
                    this.run = true;
                    this.timer = window.setInterval(function(){
                    
                        THIS1.rate-= THIS1.step;                    
                        var oldI = document.getElementById(THIS1.id + THIS1.selectedIndex).nextSibling;
                        var newI = document.getElementById(THIS1.id + index).nextSibling;
    
                        var ooI = oldI.childNodes[0].childNodes[0];
                        var nnI = newI.childNodes[0].childNodes[0];
    
                        oldI.style.display = "";
                        newI.style.display = "";
    
                        if(THIS1.rate<0){
                            window.clearInterval(THIS1.timer);
                            THIS1.timer = 0;
                            ooI.style.overflow="auto";
                            nnI.style.overflow = "auto";
                            oldI.style.display = "none";
                            THIS1.run = false;
                            THIS1.selectedIndex = index;
                            if(THIS1.wait.length>0){
                                THIS1.select(THIS1.wait[0]);
                                THIS1.wait = THIS1.wait.slice(1,-1);
                            }
                        } else {                        
                            ooI.style.overflow = "hidden";
                            nnI.style.overflow = "hidden";
                            oldI.style.height = THIS1.rate +"%";
                            newI.style.height = (100 - THIS1.rate) + "%";
                        }
    
                    },this.speed); 
                }else{
                    this.wait[this.wait.length] = index;
                }
            }
        }
    
        this.setup = function(contain){
            if(contain!=null){        
                var table = document.createElement("table");
                    table.style.width    = "100%";
                    table.style.height    = "100%";
                    table.cellPadding = "0px";
                    table.cellSpacing = "0px";
                    table.style.border = "0px solid red";
                    table.bgColor = "#aca899";
    
                    function getItem(width,height,display,title){
                        var tris = document.createElement("tr");
                        var tdis = document.createElement("td");
                            tdis.style.width = width;
                            tris.style.height = height;
                            tris.style.display = display;
                            tdis.className    = "outlook-item";
                            tdis.style.verticalAlign = "top";    
    
                            if(title!=null&&typeof(title.items)!="undefined"){
                                
                                var vv = document.createElement("div");
                                    vv.style.overflow = "auto";
                                    vv.style.height = "100%";
                                    vv.style.width = "100%";
    
                                for(var i=0;i<title.items.length;i++){
                                    var div = document.createElement("div");
                                        div.style.textAlign = "center";
                                        div.style.height = "24px";                                    
                                        div.style.paddingTop = "4px";
    
                                    if(title.items[i].image!=null){
                                        var img = document.createElement("img");
                                            img.src = title.items[i].image;
                                            div.appendChild(img);
                                        if(typeof(title.items[i].align)!="undefined"&&title.items[i].align==1){
                                            var lbl = document.createElement("label");
                                                lbl.innerHTML = "<br>";
                                                div.appendChild(lbl);
                                        }
                                    }
    
                                    var a    = document.createElement("a");
                                        a.target    = title.items[i].target;
                                        a.innerHTML = title.items[i].name;
                                        a.href        = title.items[i].url;
                                        div.appendChild(a);
                                        vv.appendChild(div);                                                                                
                                }                    
    
                                tdis.appendChild(vv);
                            }
    
                            tris.appendChild(tdis);
                            return tris;
                    }
            
                    for(var i=0;i<this.titles.length;i++){        
                        var tr = document.createElement("tr");
                        var td = document.createElement("td");
    
                            tr.style.height = "25px";
                            td.style.width    = "100%";                        
                            td.className    = "outlook-title";    
    
                            td.innerHTML    = this.titles[i].name;
                            tr.id            = this.id + i;
                                                                            
                            tr.appendChild(td);
                            table.appendChild(tr);
                            
                            if (i==this.selectedIndex){
                                var tris = getItem("100%","100%","",this.titles[i]);
                                    table.appendChild(tris);                                
                            } else {
                                var tri     = getItem("100%","0%","none",this.titles[i]);
                                    table.appendChild(tri);
                            }    
                                                
                    }
    
                    if(typeof(contain.outerHTML)=="undefined"){
                        contain.appendChild(table);
                    } else {        
                        contain.innerHTML = table.outerHTML;
                    }    
                    
                    //bind event
                    for(var i=0;i<this.titles.length;i++){
                        var title = document.getElementById(this.id + i);
                        if(title){
                            function mapping(index){
                                try    {
                                    title.onclick = function(){THIS1.select(index);}
                                    title.oncontextmenu = function(){ return false;}
                                    title.nextSibling.oncontextmenu = function(){return false;}
                                } catch (e){
                                }
                            }
                            mapping(i);
                        }
                    }
            }
        }
    
        this.addItem = function(index,name,target,url,image,align){
            if(index>=0&&index<this.titles.length){
                return this.titles[index].addItem(name,target,url,image,align);
            }
        }
    
        this.setupById = function(id){
            var d = document.getElementById(id);
            if(d){
                this.setup(d);
            }
        }
    }
    
    var o = new CLASS_OUTLOOKBAR();
    
    o.addTitle("用户管理");
        o.addTitle("在线超市");
        o.addTitle("掘宝世界");
        o.addTitle("维修管理");
        o.addTitle("新闻管理");
    o.addTitle("BBS管理");
    
    //用户管理
      o.addItem(0,"更新用户","frm","user.aspx");
    
    //IT在线超市
        o.addItem(1,"上传","frm","http://www.google.com");
        o.addItem(1,"更新","frm","http://baidu.com");
    	
    //二手掘宝世界
     o.addItem(2,"二手交易","frm","http://baidu.com");
    
    //维修管理
    o.addItem(3,"项目添加","frm","#");
    o.addItem(3,"项目更新","frm","http://baidu.com");
    
    //新闻管理
    o.addItem(4,"添加新闻","frm","#");
    o.addItem(4,"更新新闻","frm","http://www.163.com");
    //o1是一个层
     o.setupById("o1");
    //-->
    </SCRIPT>
    </div>
    </form>
    <br />
    <p><a href="http://www.webdm.cn">网页代码站</a> - 最专业的网页代码下载网站 - 致力为中国站长提供有质量的网页代码!</p>
    </body>
    </html>
    
  • 相关阅读:
    Dynamic Performance Tables not accessible Automatic Statistics Disabled for this session
    Log4Net使用指南
    .NET 邮件传送功能实现(smtp.qq.com)
    解决VS2008调试过程中无法启动程序或找不到元素
    20070115 18:38 动态显示用户输入的字数,文本框只能输入数字的代码
    SVN 错误;: Server sent unexpected return value (405 method not allowed)
    WdatePicker日历控件联动效果
    RockMelt – 社交浏览器
    AnkhSVN
    ASP.NET 把DataTable与Lis<T>转成json输出
  • 原文地址:https://www.cnblogs.com/webdm/p/2110424.html
Copyright © 2011-2022 走看看