分享一个超酷javascript全屏幻灯导航(fullscreen slide navigation)

上一篇 / 下一篇  2012-01-21 11:05:32

在线演示 在线下载

这篇文章介绍了如何使用幻灯方式来进行全屏幕页面导航,包括了16个幻灯,4个一行,一共4行。并且通过了CSS3箭头添加了动画导航效果。而且提供一个迷你的导航条能够帮助用户记录访问过的幻灯页面。希望大家喜欢!

Javascript代码
  1. varnavi={
  2.     // variables
  3.     aPages:[],
  4.     aLinks:[],
  5.     tween:{},
  6.     oParent:null,
  7.     oPages:null,
  8.     bRunning:null,
  9.     sTargPage:null,
  10.     sCurPage:null,
  11.     bHash:null,
  12.     sOldH:null,
  13.     bUpdateH:true,

  14.     // initialization
  15.     init:function(aParams){
  16.         this.oPages=document.getElementById(aParams.pages_id);
  17.         this.oParent=document.getElementById(aParams.parent_id);

  18.         varaAEls=this.oParent.getElementsByTagName('a');
  19.         vari=0;varp=null;
  20.         while(p=aAEls[i++]){
  21.             if(p.className&&p.className.indexOf('go')>=0){
  22.                 varsHref=p.href.split('#')[1];
  23.                 varoDst=document.getElementById(sHref);
  24.                 if(oDst){
  25.                     // fill-in pages array
  26.                     this.aPages[sHref]={
  27.                         oObj:oDst,
  28.                         iXPos:-oDst.offsetLeft,
  29.                         iYPos:-oDst.offsetTop
  30.                     };

  31.                     // fill-in links array
  32.                     this.aLinks.push({a:p,oObj:oDst});

  33.                     p.onclick=function(){
  34.                         navi.goto(this.href.split('#')[1],aParams.duration);
  35.                         returnfalse;
  36.                     }
  37.                 }
  38.             }
  39.         }

  40.         this.resize();

  41.         if('onhashchange'inwindow){
  42.             if(location.hash!==''&&location.hash!=='#'){
  43.                 this.sOldH=location.hash.substring(1);
  44.                 this.goto(this.sOldH,-1);
  45.             }else
  46.                 this.goto('page1',-1);
  47.             this.bHash=true;

  48.             window.onhashchange=function(){
  49.                 if(location.hash.substring(1)!==navi.sOldH){
  50.                     navi.sOldH=location.hash.substring(1);
  51.                     if(navi.sOldH==''){
  52.                         navi.bUpdateH=false;
  53.                     }
  54.                     navi.goto(navi.sOldH,aParams.duration);
  55.                 }
  56.                 returnfalse;
  57.             }
  58.         }
  59.     },

  60.     // on resize
  61.     resize:function(){
  62.         variCurW=this.oParent.offsetWidth;// current sizes
  63.         variCurH=this.oParent.offsetHeight;
  64.         for(variinthis.aPages){// for each page
  65.             varoPage=this.aPages[i];
  66.             variNewX=Math.round(oPage.oObj.offsetLeft*iCurW/oPage.oObj.offsetWidth);// new sizes
  67.             variNewY=Math.round(oPage.oObj.offsetTop*iCurH/oPage.oObj.offsetHeight);
  68.             oPage.oObj.style.left=iNewX+'px';
  69.             oPage.oObj.style.top=iNewY+'px';
  70.             oPage.oObj.style.width=iCurW+'px';
  71.             oPage.oObj.style.height=iCurH+'px';
  72.             oPage.iXPos=-iNewX;
  73.             oPage.iYPos=-iNewY;

  74.             if(this.sCurPage)
  75.                 this.goto(this.sCurPage,-1);
  76.         }
  77.     },

  78.     goto:function(sHref,iDur){
  79.         this.tween.iStart=newDate()*1;
  80.         this.tween.iDur=iDur;
  81.         this.tween.fromX=this.oPages.offsetLeft;
  82.         this.tween.fromY=this.oPages.offsetTop;
  83.         this.tween.iXPos=this.aPages[sHref].iXPos-this.tween.fromX;
  84.         this.tween.iYPos=this.aPages[sHref].iYPos-this.tween.fromY;
  85.         this.sTargPage=sHref;

  86.         if(!this.bRunning)
  87.             this.bRunning=window.setInterval(this.animate,24);
  88.     },

  89.     animate:function(){
  90.         variCurTime=(newDate()*1)-navi.tween.iStart;
  91.         if(iCurTime<navi.tween.iDur){
  92.             variCur=Math.cos(Math.PI*(iCurTime/navi.tween.iDur))-1;
  93.             navi.oPages.style.left=Math.round(-navi.tween.iXPos*.5*iCur+navi.tween.fromX)+'px';
  94.             navi.oPages.style.top=Math.round(-navi.tween.iYPos*.5*iCur+navi.tween.fromY)+'px';
  95.         }else{
  96.             navi.oPages.style.left=Math.round(navi.tween.fromX+navi.tween.iXPos)+'px';
  97.             navi.oPages.style.top=Math.round(navi.tween.fromY+navi.tween.iYPos)+'px';

  98.             window.clearInterval(navi.bRunning);
  99.             navi.bRunning=false;
  100.             navi.sCurPage=navi.sTargPage;

  101.             vari=0;varp=null;
  102.             while(p=navi.aLinks[i++]){
  103.                 if(p.oObj.id==navi.sCurPage){
  104.                     if(p.a.className.indexOf('visited')>=0){
  105.                         p.a.className=p.a.className.replace('visited','active');
  106.                     }elsep.a.className+=' active';
  107.                     p.visited=true;
  108.                 }elseif(p.visited){
  109.                     p.a.className=p.a.className.replace('active','visited');
  110.                 }
  111.             }

  112.             if(navi.bHash){
  113.                 if(navi.bUpdateH){
  114.                     navi.sOldH=navi.sCurPage;
  115.                     window.location.hash=navi.sCurPage;
  116.                 }
  117.                 navi.bUpdateH=true;
  118.             }
  119.         }
  120.     }
  121. }

  122. window.onload=function(){// page onload
  123.     navi.init({parent_id:'container',pages_id:'pages',duration:1000});
  124. }
  125. window.onkeydown=function(event){// keyboard alerts
  126.     switch(event.keyCode){
  127.         case37:// Left key
  128.             variPage=navi.sCurPage.substring(4)*1;
  129.             iPage--;
  130.             if(iPage<1){
  131.                 iPage=1;
  132.             }
  133.             navi.goto('page'+iPage,1000);
  134.             break;
  135.         case39:// Right key
  136.             variPage=navi.sCurPage.substring(4)*1;
  137.             iPage++;
  138.             if(iPage>16){
  139.                 iPage=16;
  140.             }
  141.             navi.goto('page'+iPage,1000);
  142.             break;
  143.     }
  144. };
HTML标签
  1. <!DOCTYPEhtml>
  2. <htmllang="en">
  3.     <head>
  4.         <metacharset="utf-8"/>
  5.         <title>Fullscreen Javascript. Slide navigation|ScriptTutorials</title>
  6.         <linkhref="css/layout.css"type="text/css"rel="stylesheet">
  7.         <scriptsrc="js/main.js"></script>
  8.     </head>
  9.     <body>
  10.         <divclass="container"id="container">
  11.             <divid="pages">
  12.                 <divid="page1">
  13.                     <ahref="#page2"class="go right"></a>
  14.                     <ahref="#page5"class="go bottom"></a>
  15.                 </div>
  16.                 <divid="page2">
  17.                     <ahref="#page1"class="go left"></a>
  18.                     <ahref="#page3"class="go right"></a>
  19.                     <ahref="#page6"class="go bottom"></a>
  20.                 </div>
  21.                 <divid="page3">
  22.                     <ahref="#page2"class="go left"></a>
  23.                     <ahref="#page4"class="go right"></a>
  24.                     <ahref="#page7"class="go bottom"></a>
  25.                 </div>
  26.                 <divid="page4">
  27.                     <ahref="#page3"class="go left"></a>
  28.                     <ahref="#page8"class="go bottom"></a>
  29.                 </div>
  30.                 <divid="page5">
  31.                     <ahref="#page1"class="go top"></a>
  32.                     <ahref="#page6"class="go right"></a>
  33.                     <ahref="#page9"class="go bottom"></a>
  34.                 </div>
  35.                 <divid="page6">
  36.                     <ahref="#page5"class="go left"></a>
  37.                     <ahref="#page2"class="go top"></a>
  38.                     <ahref="#page7"class="go right"></a>
  39.                     <ahref="#page10"class="go bottom"></a>
  40.                 </div>
  41.                 <divid="page7">
  42.                     <ahref="#page6"class="go left"></a>
  43.                     <ahref="#page3"class="go top"></a>
  44.                     <ahref="#page8"class="go right"></a>
  45.                     <ahref="#page11"class="go bottom"></a>
  46.                 </div>
  47.                 <divid="page8">
  48.                     <ahref="#page7"class="go left"></a>
  49.                     <ahref="#page4"class="go top"></a>
  50.                     <ahref="#page12"class="go bottom"></a>
  51.                 </div>
  52.                 <divid="page9">
  53.                     <ahref="#page5"class="go top"></a>
  54.                     <ahref="#page10"class="go right"></a>
  55.                     <ahref="#page13"class="go bottom"></a>
  56.                 </div>
  57.                 <divid="page10">
  58.                     <ahref="#page9"class="go left"></a>
  59.                     <ahref="#page6"class="go top"></a>
  60.                     <ahref="#page11"class="go right"></a>
  61.                     <ahref="#page14"class="go bottom"></a>
  62.                 </div>
  63.                 <divid="page11">
  64.                     <ahref="#page10"class="go left"></a>
  65.                     <ahref="#page7"class="go top"></a>
  66.                     <ahref="#page12"class="go right"></a>
  67.                     <ahref="#page15"class="go bottom"></a>
  68.                 </div>
  69.                 <divid="page12">
  70.                     <ahref="#page11"class="go left"></a>
  71.                     <ahref="#page8"class="go top"></a>
  72.                     <ahref="#page16"class="go bottom"></a>
  73.                 </div>
  74.                 <divid="page13">
  75.                     <ahref="#page9"class="go top"></a>
  76.                     <ahref="#page14"class="go right"></a>
  77.                 </div>
  78.                 <divid="page14">
  79.                     <ahref="#page13"class="go left"></a>
  80.                     <ahref="#page10"class="go top"></a>
  81.                     <ahref="#page15"class="go right"></a>
  82.                 </div>
  83.                 <divid="page15">
  84.                     <ahref="#page14"class="go left"></a>
  85.                     <ahref="#page11"class="go top"></a>
  86.                     <ahref="#page16"class="go right"></a>
  87.                 </div>
  88.                 <divid="page16">
  89.                     <ahref="#page15"class="go left"></a>
  90.                     <ahref="#page12"class="go top"></a>
  91.                 </div>
  92.             </div>
  93.             <divid="nav">
  94.                 <div>Fullscreen Javascript. Slide navigation</div>
  95.                 <divstyle="width:130px">
  96.                     <ahref="#page1"class="go"></a>
  97.                     <ahref="#page2"class="go"></a>
  98.                     <ahref="#page3"class="go"></a>
  99.                     <ahref="#page4"class="go"></a>
  100.                     <ahref="#page5"class="go"></a>
  101.                     <ahref="#page6"class="go"></a>
  102.                     <ahref="#page7"class="go"></a>
  103.                     <ahref="#page8"class="go"></a>
  104.                     <ahref="#page9"class="go"></a>
  105.                     <ahref="#page10"class="go"></a>
  106.                     <ahref="#page11"class="go"></a>
  107.                     <ahref="#page12"class="go"></a>
  108.                     <ahref="#page13"class="go"></a>
  109.                     <ahref="#page14"class="go"></a>
  110.                     <ahref="#page15"class="go"></a>
  111.                     <ahref="#page16"class="go"></a>
  112.                 </div>
  113.              </div>
  114.         </div>
  115.     </body>
  116. </html>

TAG: javascript 导航

 

评分:0

我来说两句

显示全部

:loveliness: :handshake :victory: :funk: :time: :kiss: :call: :hug: :lol :'( :Q :L ;P :$ :P :o :@ :D :( :)

日历

« 2012-05-25  
  12345
6789101112
13141516171819
20212223242526
2728293031  

数据统计

  • 访问量: 5389
  • 日志数: 140
  • 建立时间: 2011-10-08
  • 更新时间: 2012-05-17

RSS订阅

Open Toolbar