zoukankan      html  css  js  c++  java
  • 分享一个超酷javascript全屏幻灯导航(fullscreen slide navigation)

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

    在线演示  在线下载

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

    HTML标签

    <!DOCTYPE html>
    <html lang="en">
    <head>
    <meta charset="utf-8" />
    <title>Fullscreen Javascript Slide navigation demo</title>
    <link href="css/layout.css" type="text/css" rel="stylesheet">
    <script src="js/main.js"></script>
    </head>
    <body>
    <div class="container" id="container">
    <div id="pages">
    <div id="page1">
    <a href="#page2" class="go right"></a>
    <a href="#page5" class="go bottom"></a>
    </div>
    <div id="page2">
    <a href="#page1" class="go left"></a>
    <a href="#page3" class="go right"></a>
    <a href="#page6" class="go bottom"></a>
    </div>
    <div id="page3">
    <a href="#page2" class="go left"></a>
    <a href="#page4" class="go right"></a>
    <a href="#page7" class="go bottom"></a>
    </div>
    <div id="page4">
    <a href="#page3" class="go left"></a>
    <a href="#page8" class="go bottom"></a>
    </div>
    <div id="page5">
    <a href="#page1" class="go top"></a>
    <a href="#page6" class="go right"></a>
    <a href="#page9" class="go bottom"></a>
    </div>
    <div id="page6">
    <a href="#page5" class="go left"></a>
    <a href="#page2" class="go top"></a>
    <a href="#page7" class="go right"></a>
    <a href="#page10" class="go bottom"></a>
    </div>
    <div id="page7">
    <a href="#page6" class="go left"></a>
    <a href="#page3" class="go top"></a>
    <a href="#page8" class="go right"></a>
    <a href="#page11" class="go bottom"></a>
    </div>
    <div id="page8">
    <a href="#page7" class="go left"></a>
    <a href="#page4" class="go top"></a>
    <a href="#page12" class="go bottom"></a>
    </div>
    <div id="page9">
    <a href="#page5" class="go top"></a>
    <a href="#page10" class="go right"></a>
    <a href="#page13" class="go bottom"></a>
    </div>
    <div id="page10">
    <a href="#page9" class="go left"></a>
    <a href="#page6" class="go top"></a>
    <a href="#page11" class="go right"></a>
    <a href="#page14" class="go bottom"></a>
    </div>
    <div id="page11">
    <a href="#page10" class="go left"></a>
    <a href="#page7" class="go top"></a>
    <a href="#page12" class="go right"></a>
    <a href="#page15" class="go bottom"></a>
    </div>
    <div id="page12">
    <a href="#page11" class="go left"></a>
    <a href="#page8" class="go top"></a>
    <a href="#page16" class="go bottom"></a>
    </div>
    <div id="page13">
    <a href="#page9" class="go top"></a>
    <a href="#page14" class="go right"></a>
    </div>
    <div id="page14">
    <a href="#page13" class="go left"></a>
    <a href="#page10" class="go top"></a>
    <a href="#page15" class="go right"></a>
    </div>
    <div id="page15">
    <a href="#page14" class="go left"></a>
    <a href="#page11" class="go top"></a>
    <a href="#page16" class="go right"></a>
    </div>
    <div id="page16">
    <a href="#page15" class="go left"></a>
    <a href="#page12" class="go top"></a>
    </div>
    </div>
    <div id="nav">
    <div>Fullscreen Javascript Slide navigation</div>
    <div style="130px">
    <a href="#page1" class="go"></a>
    <a href="#page2" class="go"></a>
    <a href="#page3" class="go"></a>
    <a href="#page4" class="go"></a>
    <a href="#page5" class="go"></a>
    <a href="#page6" class="go"></a>
    <a href="#page7" class="go"></a>
    <a href="#page8" class="go"></a>
    <a href="#page9" class="go"></a>
    <a href="#page10" class="go"></a>
    <a href="#page11" class="go"></a>
    <a href="#page12" class="go"></a>
    <a href="#page13" class="go"></a>
    <a href="#page14" class="go"></a>
    <a href="#page15" class="go"></a>
    <a href="#page16" class="go"></a>
    </div>
    </div>
    </div>
    </body>
    </html>

    Javascript代码

    var navi = {
    // variables
    aPages : [],
    aLinks : [],
    tween : {},
    oParent : null,
    oPages : null,
    bRunning : null,
    sTargPage : null,
    sCurPage : null,
    bHash : null,
    sOldH : null,
    bUpdateH : true,

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

    var aAEls = this.oParent.getElementsByTagName('a');
    var i = 0; var p = null;
    while (p = aAEls[i++]) {
    if (p.className && p.className.indexOf('go') >= 0) {
    var sHref = p.href.split('#')[1];
    var oDst = document.getElementById(sHref);
    if (oDst) {
    // fill-in pages array
    this.aPages[sHref] = {
    oObj: oDst,
    iXPos: -oDst.offsetLeft,
    iYPos: -oDst.offsetTop
    };

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

    p.onclick = function () {
    navi.goto(this.href.split('#')[1], aParams.duration);
    return false;
    }
    }
    }
    }

    this.resize();

    if ('onhashchange' in window) {
    if (location.hash !== '' && location.hash !== '#') {
    this.sOldH = location.hash.substring(1);
    this.goto(this.sOldH, -1);
    } else
    this.goto('page1', -1);
    this.bHash = true;

    window.onhashchange = function() {
    if (location.hash.substring(1) !== navi.sOldH) {
    navi.sOldH = location.hash.substring(1);
    if (navi.sOldH == '') {
    navi.bUpdateH = false;
    }
    navi.goto(navi.sOldH, aParams.duration);
    }
    return false;
    }
    }
    },

    // on resize
    resize : function () {
    var iCurW = this.oParent.offsetWidth; // current sizes
    var iCurH = this.oParent.offsetHeight;
    for (var i in this.aPages) { // for each page
    var oPage = this.aPages[i];
    var iNewX = Math.round(oPage.oObj.offsetLeft * iCurW / oPage.oObj.offsetWidth); // new sizes
    var iNewY = Math.round(oPage.oObj.offsetTop * iCurH / oPage.oObj.offsetHeight);
    oPage.oObj.style.left = iNewX + 'px';
    oPage.oObj.style.top = iNewY + 'px';
    oPage.oObj.style.width = iCurW + 'px';
    oPage.oObj.style.height = iCurH + 'px';
    oPage.iXPos = -iNewX;
    oPage.iYPos = -iNewY;

    if (this.sCurPage)
    this.goto(this.sCurPage, -1);
    }
    },

    goto : function (sHref, iDur) {
    this.tween.iStart = new Date() * 1;
    this.tween.iDur = iDur;
    this.tween.fromX = this.oPages.offsetLeft;
    this.tween.fromY = this.oPages.offsetTop;
    this.tween.iXPos = this.aPages[sHref].iXPos - this.tween.fromX;
    this.tween.iYPos = this.aPages[sHref].iYPos - this.tween.fromY;
    this.sTargPage = sHref;

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

    animate : function () {
    var iCurTime = (new Date() * 1) - navi.tween.iStart;
    if (iCurTime < navi.tween.iDur) {
    var iCur = Math.cos(Math.PI * (iCurTime / navi.tween.iDur)) - 1;
    navi.oPages.style.left = Math.round(-navi.tween.iXPos * .5 * iCur + navi.tween.fromX) + 'px';
    navi.oPages.style.top = Math.round(-navi.tween.iYPos * .5 * iCur + navi.tween.fromY) + 'px';
    } else {
    navi.oPages.style.left = Math.round(navi.tween.fromX + navi.tween.iXPos) + 'px';
    navi.oPages.style.top = Math.round(navi.tween.fromY + navi.tween.iYPos) + 'px';

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

    var i = 0; var p = null;
    while (p = navi.aLinks[i++]) {
    if (p.oObj.id == navi.sCurPage) {
    if (p.a.className.indexOf('visited') >= 0 ) {
    p.a.className = p.a.className.replace('visited', 'active');
    } else p.a.className += ' active';
    p.visited = true;
    } else if (p.visited) {
    p.a.className = p.a.className.replace('active', 'visited');
    }
    }

    if (navi.bHash) {
    if (navi.bUpdateH) {
    navi.sOldH = navi.sCurPage;
    window.location.hash = navi.sCurPage;
    }
    navi.bUpdateH = true;
    }
    }
    }
    }

    window.onload = function() { // page onload
    navi.init({parent_id: 'container', pages_id: 'pages', duration: 1000});
    }
    window.onkeydown = function(event){ // keyboard alerts
    switch (event.keyCode) {
    case 37: // Left key
    var iPage = navi.sCurPage.substring(4) * 1;
    iPage--;
    if (iPage < 1) {
    iPage = 1;
    }
    navi.goto('page' + iPage, 1000);
    break;
    case 39: // Right key
    var iPage = navi.sCurPage.substring(4) * 1;
    iPage++;
    if (iPage > 16) {
    iPage = 16;
    }
    navi.goto('page' + iPage, 1000);
    break;
    }
    };

    效果请参考演示



  • 相关阅读:
    使用servicename连接Oracle数据库
    使用SID连接Oracle数据库
    使用xlrd模块
    【Project Euler 8】Largest product in a series
    Git使用帮助
    【Project Euler 1】Multiples of 3 and 5
    VSCode使用新体验
    导出牛顿引力形式为平方反比的两种方式
    NOIP2018游记
    即将退役声明
  • 原文地址:https://www.cnblogs.com/gbin1/p/2328426.html
Copyright © 2011-2022 走看看