当前页面: 开发资料首页 → Javascript 专题 → 一个短小精悍使用的对象化QQ菜单
摘要: 一个短小精悍使用的对象化QQ菜单
这是我根据1000script上的QQ菜单自己该的一个对象化菜单,短小精悍,实用性强,我们所做的软件就用的这个。现在贡献出来,和大家共享:
</head>
<body>
<script LANGUAGE=javascript>
var mMenu=new Array()
var headHeight = 22;//每个标题的高度
var bodyHeight = 260;//母体高度
var objcount = 6;//项目的个数,要改变了项目的个数别忘了该这个东西
var step = 6;//移动速度(请确认可以被'bodyHeight-headHeight'整除,当前的设定可选速度为1,2,3,6,23,138)
var moving = false;//是否有移动的项目
var layerTop=50; //菜单顶边距
var layerLeft=50; //菜单左边距
var layerWidth=140; //菜单总宽度
var titleHeight=20; //标题栏高度
var contentHeight=200; //内容区高度
var stepNo=1; //移动步数,数值越大移动越慢
var itemNo=0;
function regsterMenu(menu){
mMenu[mMenu.length]=menu;
return mMenu.length-1;
}
function mainMenu(img,capture,hrefurl){
this.items=new Array();
this.img=img;
this.capture=capture;
this.hrefurl=hrefurl;
this.id=regsterMenu(this);
}
//img 是作为图标的图像位置
//capture 是连接的文字
//href是超连接的地址
function subMenu(img,capture,hrefurl){
this.img=img;
this.capture=capture;
this.hrefurl=hrefurl;
}
function addSub(item){
this.items[this.items.length]=item;
}
mainMenu.prototype.addSub=addSub;
function generateHtml(mmenu){
var menuHTML="";
menuHTML+=""
for(var i=0;i
if(mmenu[i].items.length!=0){
menuHTML+="<tr><td class=contentStyle height=200>
for(var q=0;q
}
menuHTML+="
}
menuHTML+="</table>
}
menuHTML+="
return menuHTML;
}
var mm1=new mainMenu('#','我的收藏夹','#');
mm1.addSub(new subMenu('#','娱乐世界','#'));
mm1.addSub(new subMenu('#','娱乐世界','#'));
mm2=new mainMenu('#','我的收藏夹','#');
mm2.addSub(new subMenu('#','娱乐世界','#'));
mm3=new mainMenu('#','我的收藏夹','#');
mm3.addSub(new subMenu('#','娱乐世界','#'));
mm4=new mainMenu('#','我的收藏夹','#');
mm4.addSub(new subMenu('#','娱乐世界','#'));
mm4.addSub(new subMenu('#','娱乐世界','#'));
document.write (generateHtml(mMenu));
document.all.itemsLayer.style.height =mMenu.length*titleHeight+contentHeight;
//************************************************************
var toItemIndex=mMenu.length-1;
var onItemIndex=mMenu.length-1;
var runtimes=0; //"runtimes"用于记录层移动次数
//菜单标题被点击时调用这个函数:
function changeItem(clickItemIndex){
//myid.innerText=" "+itemsLayer.outerHTML+" "
//判断相应的层应上移还是下移:
toItemIndex=clickItemIndex;
if(toItemIndex-onItemIndex>0) moveUp();
else moveDown();
//一定的时间间隔后继续移动,直到移了设定的步数stepNo:
runtimes++;
if(runtimes>=stepNo){
onItemIndex=toItemIndex;
runtimes=0;}
else
setTimeout("changeItem(toItemIndex)",10);
}
//相应菜单上移:
function moveUp(){
//判断应一起上移的菜单,并让它(们)每次移动contentHeight/stepNo的距离:
for(i=onItemIndex+1;i<=toItemIndex;i++)
eval('document.all.item'+i+'.style.top=parseInt(document.all.item'+i+'.style.top)-contentHeight/stepNo;');
}
//相应菜单下移:
function moveDown(){
for(i=onItemIndex;i>toItemIndex;i--)
eval('document.all.item'+i+'.style.top=parseInt(document.all.item'+i+'.style.top)+contentHeight/stepNo;');
}
//changeItem(0); //把第一个菜单作为默认显示
//************************************************************
//
</script>
//本程序版权归 zhjzh_zjz .代码可以随便传播。