·您的位置: 首页 » 资源教程 » 发表文章 » 有趣的仿QQ面板导航菜单

有趣的仿QQ面板导航菜单

类别: JavaScript  评论数:4 总得分:18

  QQ的组切换效果相信大家都很熟悉,现在我们在网页中用Javascript模拟制作一个这样的切换效果,用它作为页面导航菜单可是个不错的主意哦!

  以下是效果演示,其中菜单的组数和内容可以任意定义。



代码及其解释

    先创建一个CSS样式表,置于<HEAD>模块中,分别定义导航菜单的标题和内容的样式:
<style type="text/css">
  .titleStyle{
      background-color:#008800;color:#ffffff;
      border-top:1px solid #FFFFFF;font-size:9pt;cursor:hand;
 
}
  .contentStyle{
      background-color:#eeffee;color:blue;font-size:9pt;
 
}
</style>


    然后在<BODY>模块中加入以下Javascript代码:

<script language="JavaScript">
 <!--
 var layerTop=20; //菜单顶边距
 var layerLeft=30; //菜单左边距
 var layerWidth=140; //菜单总宽度
 var titleHeight=20; //标题栏高度
 var contentHeight=200; //内容区高度
 var stepNo=10; //移动步数,数值越大移动越慢

 var itemNo=0;
  //建立一个名为"itemsLayer"的层,用它限制所有菜单的显示范围:
 document.write('<span id=itemsLayer style="position:absolute;overflow:hidden;border:1px solid #008800;left:'+layerLeft+';top:'+layerTop+';width:'+layerWidth+';">');

 function addItem(itemTitle,itemContent){
   //这个函数准备接受菜单标题和内容的写入
     //新增菜单的顶点刚好在上一菜单的标题栏以下,尺寸由一开始便声明的变量决定

   itemHTML='<div id=item'+itemNo+' itemIndex='+itemNo+' style="position:relative;left:0;top:'+(-contentHeight*itemNo)+';width:'+layerWidth+';">'+
       '<table width=100% cellspacing="0" cellpadding="0">'+
       '<tr><td height='+titleHeight+' onclick=changeItem('+itemNo+') class="titleStyle" align=center>'+itemTitle+'</td></tr>'+
       '<tr><td height='+contentHeight+' class="contentStyle">'+itemContent+'</td></tr> </table></div>';
   document.write(itemHTML);
   itemNo++;
 }

 //这时便可以把菜单标题和内容作为参数调用以上函数了:
  //你可以添加任意多项,格式参照以下几行:


 addItem('欢迎','<BR>  欢迎光临天极网设计在线频道!');
 addItem('网页陶吧','<center><a href="#">网页工具</a> <BR><BR><a href="#">HTML</a> <BR><BR><a href="#">Javascript</a> <BR><BR><a href="#">CSS</a></center>');
 addItem('美工教室','<center><a href="#">Photoshop</a> <BR><BR><a href="#">Imageready</a> <BR><BR><a href="#">Painter</a> <BR><BR><a href="#">更多..</a></center>');
 addItem('精品赏析','<a href="#">带您漫游绝妙的精品世界!</a>');

 document.write('</span>'); //结束"itemsLayer"层
  //下面一式计算"itemsLayer"层的高度:

 document.all.itemsLayer.style.height=itemNo*titleHeight+contentHeight;

 //现在开始编写点击标题时移动相应的层:

  //初始化变量"toItemIndex"和"onItemIndex",它们分别用于记录"应该显示的层"和"现在显示的层":

 var toItemIndex=itemNo-1;
 var onItemIndex=itemNo-1;
 var runtimes=0; //"runtimes"用于记录层移动次数

  //菜单标题被点击时调用这个函数:

 function changeItem(clickItemIndex){
    //判断相应的层应上移还是下移:
   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>

  (该脚本在windows 2000、windows XP及各自带的IE下测试通过)

相关附件:
  • 图片:
-= 资 源 教 程 =-
文 章 搜 索
关键词:
类型:
范围:
相 关 文 章
纯粹空间 softpure.com
Copyright © 2006-2008 暖阳制作 版权所有
QQ: 15242663 (拒绝闲聊)  Email: faisun@sina.com
 纯粹空间 - 韩国酷站|酷站欣赏|教程大全|资源下载|免费博客|美女壁纸|设计素材|技术论坛   Valid XHTML 1.0 Transitional
百度搜索 谷歌搜索 Alexa搜索 | 粤ICP备19116064号-1