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;
    }
    };

    效果请参考演示



  • 相关阅读:
    LeetCode偶尔一题 —— 617. 合并二叉树
    《剑指offer》 —— 链表中倒数第k个节点
    《剑指offer》 —— 青蛙跳台阶问题
    《剑指offer》—— 二维数组中的查找
    《剑指offer》—— 替换空格
    《剑指offer》—— 合并两个排序的链表
    《剑指offer》—— 礼物的最大价值
    生成Nuget 源代码包来重用你的Asp.net MVC代码
    Pro ASP.Net Core MVC 6th 第四章
    Pro ASP.NET Core MVC 6th 第三章
  • 原文地址:https://www.cnblogs.com/gbin1/p/2328426.html
Copyright © 2011-2022 走看看