koill 发表于 2015-9-13 13:17:08

QQ菜单OUTLOOK风格

1<html>
2<head>
3<meta http-equiv='Content-Type' content='text/html; charset=gb2312'>
4<style type='text/css'>
5.folder1 {}{text-align:center; background: #00A4E1; border: 2px outset; background-image:url(Images/skin/folder_bg.gif); border-color: #00BBFF #0077FF #FFFFFF #00BBFF; cursor: hand; font-size: 9pt}
6.folder2 {}{text-align:center; background: #20C1FF; border: 2px outset; background-image:url(Images/skin/folder_bg.gif); border-color: #00BBFF #0077FF #0077FF #60D3FF; cursor: hand; font-size: 9pt}
7.foldercont{}{background: #D9ECF4; border: 1px outset; border-color: #B0D8FF #0077FF #0077FF #B0D8FF; font-size: 9pt; cursor: default;}
8</style>
9
10<SCRIPT LANGUAGE=javascript>
11onload=function(){
12 var lstr = ""
13 for (var i=0; i<30; i++) lstr+= "haha..<br>";
14 var lofolder = new outlookfolder(null,335,100,15);
15 lofolder.addfolder("菜单1","1..<br>2..");
16 lofolder.addfolder("菜单2",lstr);
17 lofolder.addfolder("菜单3");
18 lofolder.addfolder("菜单4");
19 lofolder.addfolder("菜单5");
20 lofolder.showfolderX(0);
21}
22   //[容器,高,宽,展开速度]
23function outlookfolder(aoP,aih,aiw,ait){
24 if (aih==null) aih=400;
25 if (aiw==null) aiw="100%";
26 if (ait==null) ait=20;
27 var loMain= document.createElement("<span style='overflow:hidden;height:"+aih+";width:"+aiw+"'></span>");
28    var lsUniqueID = loMain.uniqueID;
29 var loSlide = document.createElement("span");
30    loSlide.innerHTML = "<button onmouseout='"+lsUniqueID+".SlideClickStop()' onmousedown='"+lsUniqueID+".SlideClickStart();"+lsUniqueID+".SlideCilckup()' style='position:absolute;display:none;width:10;height:10'></button><button onmouseout='"+lsUniqueID+".SlideClickStop()' onmousedown='"+lsUniqueID+".SlideClickStart();"+lsUniqueID+".SlideCilckdown()' style='position:absolute;display:none;width:10;height:10'></button>";
31 var liContH = aih;
32    if (aoP==null){
33      document.body.appendChild(loMain);
34      document.body.appendChild(loSlide);
35    }else{
36      aoP.appendChild(loMain);
37      aoP.appendChild(loSlide);
38    }
39         //增加一个目录[名字,内容]
40    loMain.addfolder = function(str,cont){
41   var loPar = document.createElement("SPAN");
42   loPar.innerHTML = "<span onclick='"+lsUniqueID+".showme(this)' style='overflow:hidden;width:100%;' class='folder1'></span><span style='position:relative;overflow:hidden;width:100%;height:1' class='foldercont'></span>";
43this.appendChild(loPar);
44loPar.children.innerHTML = (str==null?" ":str);
45loPar.children.innerHTML = (cont==null?" ":cont);
46liContH -= parseInt(loPar.children.offsetHeight);
47    }
48         //打开/关闭第x个目录夹
49 loMain.showfolderX = function(aix){
50loMain.showme(loMain.children.children)
51 }
52      //打开/关闭当前obj所在的目录
53    loMain.showme = function(obj){
54if (loMain.moving) return;
55loMain.moving = true;
56if (obj.bOpen){
57   obj.bOpen = false;
58   loMain.closefolder(obj.parentElement.children);
59   obj.className = 'folder1';
60}else{
61   obj.bOpen = true;
62   loMain.openfolder(obj.parentElement.children);
63   obj.className = 'folder2';
64   var lxfolders = loMain.children;
65   for (var i=0; i<lxfolders.length; i++){
66    var loChild = lxfolders.children;
67    if(loChild.uniqueID!=obj.uniqueID){
68   lxfolders.children.style.height=1;
69   loChild.bOpen = false;
70   loChild.className = 'folder1';
71    }
72   }
73}
74loMain.SlideItemsAction(obj.parentElement.children);
75    }
76         //为目录内容设置Slide
77    var loSlideItem = null;
78 var lbSlideing = false;
79 loMain.SlideCilckdown = function(){//向下滚动
80loSlideItem.scrollTop += 2;
81if (!lbSlideing&&loSlideItem.scrollTop<loSlideItem.scrollHeight) setTimeout(lsUniqueID+'.SlideCilckdown()',1)
82 }
83 loMain.SlideCilckup = function(){//向上滚动
84loSlideItem.scrollTop -= 2;
85if (!lbSlideing&&loSlideItem.scrollTop>0) setTimeout(lsUniqueID+'.SlideCilckup()',1)
86 }
87 loMain.SlideClickStart = function(){ //允许开始滚动
88lbSlideing=false;
89 }
90 loMain.SlideClickStop = function(){//强制停止滚动
91lbSlideing=true;
92 }
93    loMain.SlideItemsAction = function(obj){
94var loUp   = loSlide.children;
95var loDown = loSlide.children;
96if (obj.scrollHeight<=liContH||obj.parentElement.children.bOpen!=true){
97   loUp.style.display="none";
98   loDown.style.display="none";
99}else{
100   loSlideItem = obj;
101   var lxOffset = getTrueOffset(obj);
102   var lileft = lxOffset+obj.offsetWidth-20;
103   var litop= lxOffset+obj.offsetHeight+5;
104   with(loUp.style){
105    display="";
106    left=lileft;
107    top=litop;
108   }
109   with(loDown.style){
110    display="";
111    left=lileft;
112    top=litop+liContH-40;
113   }
114}
115    }
116      //逐渐关闭obj所在的内容显示
117 loMain.closefolder = function(obj,ai){
118if (ai==null) ai=liContH;
119if (ai<ait){ obj.style.height=1; ai=1}
120if (ai>1){
121   obj.style.height = ai;
122   ai -= ait;
123   setTimeout(lsUniqueID+'.closefolder('+obj.uniqueID+','+ai+')',1)
124   return;
125}
126loMain.moving = false;
127 }
128   //逐渐打开obj所在的内容显示
129 loMain.openfolder = function(obj,ai){
130if (ai==null) ai=1;
131if (liContH>ai){
132   obj.style.height = ai;
133   ai += ait;
134   setTimeout(lsUniqueID+'.openfolder('+obj.uniqueID+','+ai+')',1)
135   return;
136}
137loMain.moving = false;
138 }
139 function getTrueOffset(e){
140    var x=0; var y=0;
141    if(!e)return ;
142    while(e){
143      x+=parseInt(e.offsetLeft);
144      y+=parseInt(e.offsetTop);
145      e=e.offsetParent;
146   }
147   return ;
148}
149return loMain;
150}
151</SCRIPT>
152
页: [1]
查看完整版本: QQ菜单OUTLOOK风格