• fakeLoader.js-针对WebApp中的 “假”预加载


    在做移动端网站的时候,前端有时候需要一些过渡效果,当然我们肯定首先想到肯定是用css3做一个过渡动画,nice,那我给大家一个好用的jQuery插件吧,让你三行代码实现这种过渡动画效果。

    1.由于该插件js代码并不多,我贴出来一看究竟:

      fakeLoader.js : 

      

    (function(b) {
    b.fn.fakeLoader = function(m) {
    var f = b.extend({
    timeToHide: 1200,
    pos: "fixed",
    top: "0px",
    left: "0px",
    "100%",
    height: "100%",
    zIndex: "999",
    bgColor: "#2ecc71",
    spinner: "spinner7",
    imagePath: ""
    }, m);
    var l = '<div class="fl spinner1"><div class="double-bounce1"></div><div class="double-bounce2"></div></div>';
    var k = '<div class="fl spinner2"><div class="spinner-container container1"><div class="circle1"></div><div class="circle2"></div><div class="circle3"></div><div class="circle4"></div></div><div class="spinner-container container2"><div class="circle1"></div><div class="circle2"></div><div class="circle3"></div><div class="circle4"></div></div><div class="spinner-container container3"><div class="circle1"></div><div class="circle2"></div><div class="circle3"></div><div class="circle4"></div></div></div>';
    var j = '<div class="fl spinner3"><div class="dot1"></div><div class="dot2"></div></div>';
    var i = '<div class="fl spinner4"></div>';
    var h = '<div class="fl spinner5"><div class="cube1"></div><div class="cube2"></div></div>';
    var g = '<div class="fl spinner6"><div class="rect1"></div><div class="rect2"></div><div class="rect3"></div><div class="rect4"></div><div class="rect5"></div></div>';
    var e = '<div class="fl spinner7"><div class="circ1"></div><div class="circ2"></div><div class="circ3"></div><div class="circ4"></div></div>';
    var d = b(this);
    var c = {
    position: f.pos,
    f.width,
    height: f.height,
    top: f.top,
    left: f.left
    };
    d.css(c);
    d.each(function() {
    var n = f.spinner;
    switch (n) {
    case "spinner1":
    d.html(l);
    break;
    case "spinner2":
    d.html(k);
    break;
    case "spinner3":
    d.html(j);
    break;
    case "spinner4":
    d.html(i);
    break;
    case "spinner5":
    d.html(h);
    break;
    case "spinner6":
    d.html(g);
    break;
    case "spinner7":
    d.html(e);
    break;
    default:
    d.html(l)
    }
    if (f.imagePath != "") {
    d.html('<div class="fl"><img src="' + f.imagePath + '"></div>');
    a()
    }
    });
    setTimeout(function() {
    b(d).fadeOut()
    }, f.timeToHide);
    return this.css({
    backgroundColor: f.bgColor,
    zIndex: f.zIndex
    })
    };

    function a() {
    var c = b(window).width();
    var e = b(window).height();
    var d = b(".fl").outerWidth();
    var f = b(".fl").outerHeight();
    b(".fl").css({
    position: "absolute",
    left: (c / 2) - (d / 2),
    top: (e / 2) - (f / 2)
    })
    }
    b(window).load(function() {
    a();
    b(window).resize(function() {
    a()
    })
    })
    }(jQuery));

    这里我将插件的7种预定义动画都特别加粗标注.

    接下来在来悄悄CSS代码 : 

      fakeLoader.css : 

    .spinner1 {
    40px;
    height: 40px;
    position: relative;
    }


    .double-bounce1, .double-bounce2 {
    100%;
    height: 100%;
    border-radius: 50%;
    background-color: #fff;
    opacity: 0.6;
    position: absolute;
    top: 0;
    left: 0;

    -webkit-animation: bounce 2.0s infinite ease-in-out;
    animation: bounce 2.0s infinite ease-in-out;
    }

    .double-bounce2 {
    -webkit-animation-delay: -1.0s;
    animation-delay: -1.0s;
    }

    @-webkit-keyframes bounce {
    0%, 100% { -webkit-transform: scale(0.0) }
    50% { -webkit-transform: scale(1.0) }
    }

    @keyframes bounce {
    0%, 100% {
    transform: scale(0.0);
    -webkit-transform: scale(0.0);
    } 50% {
    transform: scale(1.0);
    -webkit-transform: scale(1.0);
    }
    }

    .spinner2 {
    40px;
    height: 40px;
    position: relative;
    }


    .container1 > div, .container2 > div, .container3 > div {
    6px;
    height: 6px;
    background-color: #fff;

    border-radius: 100%;
    position: absolute;
    -webkit-animation: bouncedelay 1.2s infinite ease-in-out;
    animation: bouncedelay 1.2s infinite ease-in-out;
    /* Prevent first frame from flickering when animation starts */
    -webkit-animation-fill-mode: both;
    animation-fill-mode: both;
    }

    .spinner2 .spinner-container {
    position: absolute;
    100%;
    height: 100%;
    }

    .container2 {
    -webkit-transform: rotateZ(45deg);
    transform: rotateZ(45deg);
    }

    .container3 {
    -webkit-transform: rotateZ(90deg);
    transform: rotateZ(90deg);
    }

    .circle1 { top: 0; left: 0; }
    .circle2 { top: 0; right: 0; }
    .circle3 { right: 0; bottom: 0; }
    .circle4 { left: 0; bottom: 0; }

    .container2 .circle1 {
    -webkit-animation-delay: -1.1s;
    animation-delay: -1.1s;
    }

    .container3 .circle1 {
    -webkit-animation-delay: -1.0s;
    animation-delay: -1.0s;
    }

    .container1 .circle2 {
    -webkit-animation-delay: -0.9s;
    animation-delay: -0.9s;
    }

    .container2 .circle2 {
    -webkit-animation-delay: -0.8s;
    animation-delay: -0.8s;
    }

    .container3 .circle2 {
    -webkit-animation-delay: -0.7s;
    animation-delay: -0.7s;
    }

    .container1 .circle3 {
    -webkit-animation-delay: -0.6s;
    animation-delay: -0.6s;
    }

    .container2 .circle3 {
    -webkit-animation-delay: -0.5s;
    animation-delay: -0.5s;
    }

    .container3 .circle3 {
    -webkit-animation-delay: -0.4s;
    animation-delay: -0.4s;
    }

    .container1 .circle4 {
    -webkit-animation-delay: -0.3s;
    animation-delay: -0.3s;
    }

    .container2 .circle4 {
    -webkit-animation-delay: -0.2s;
    animation-delay: -0.2s;
    }

    .container3 .circle4 {
    -webkit-animation-delay: -0.1s;
    animation-delay: -0.1s;
    }

    @-webkit-keyframes bouncedelay {
    0%, 80%, 100% { -webkit-transform: scale(0.0) }
    40% { -webkit-transform: scale(1.0) }
    }

    @keyframes bouncedelay {
    0%, 80%, 100% {
    transform: scale(0.0);
    -webkit-transform: scale(0.0);
    } 40% {
    transform: scale(1.0);
    -webkit-transform: scale(1.0);
    }
    }

    .spinner3 {
    40px;
    height: 40px;
    position: relative;
    -webkit-animation: rotate 2.0s infinite linear;
    animation: rotate 2.0s infinite linear;
    }

    .dot1, .dot2 {
    60%;
    height: 60%;
    display: inline-block;
    position: absolute;
    top: 0;
    background-color: #fff;
    border-radius: 100%;

    -webkit-animation: bounce 2.0s infinite ease-in-out;
    animation: bounce 2.0s infinite ease-in-out;
    }

    .dot2 {
    top: auto;
    bottom: 0px;
    -webkit-animation-delay: -1.0s;
    animation-delay: -1.0s;
    }

    @-webkit-keyframes rotate { 100% { -webkit-transform: rotate(360deg) }}
    @keyframes rotate { 100% { transform: rotate(360deg); -webkit-transform: rotate(360deg) }}

    @-webkit-keyframes bounce {
    0%, 100% { -webkit-transform: scale(0.0) }
    50% { -webkit-transform: scale(1.0) }
    }

    @keyframes bounce {
    0%, 100% {
    transform: scale(0.0);
    -webkit-transform: scale(0.0);
    } 50% {
    transform: scale(1.0);
    -webkit-transform: scale(1.0);
    }
    }

    .spinner4 {
    30px;
    height: 30px;
    background-color: #fff;
    -webkit-animation: rotateplane 1.2s infinite ease-in-out;
    animation: rotateplane 1.2s infinite ease-in-out;
    }

    @-webkit-keyframes rotateplane {
    0% { -webkit-transform: perspective(120px) }
    50% { -webkit-transform: perspective(120px) rotateY(180deg) }
    100% { -webkit-transform: perspective(120px) rotateY(180deg) rotateX(180deg) }
    }

    @keyframes rotateplane {
    0% {
    transform: perspective(120px) rotateX(0deg) rotateY(0deg);
    -webkit-transform: perspective(120px) rotateX(0deg) rotateY(0deg)
    } 50% {
    transform: perspective(120px) rotateX(-180.1deg) rotateY(0deg);
    -webkit-transform: perspective(120px) rotateX(-180.1deg) rotateY(0deg)
    } 100% {
    transform: perspective(120px) rotateX(-180deg) rotateY(-179.9deg);
    -webkit-transform: perspective(120px) rotateX(-180deg) rotateY(-179.9deg);
    }
    }

    .spinner5 {
    32px;
    height: 32px;
    position: relative;
    }

    .cube1, .cube2 {
    background-color: #fff;
    10px;
    height: 10px;
    position: absolute;
    top: 0;
    left: 0;

    -webkit-animation: cubemove 1.8s infinite ease-in-out;
    animation: cubemove 1.8s infinite ease-in-out;
    }

    .cube2 {
    -webkit-animation-delay: -0.9s;
    animation-delay: -0.9s;
    }

    @-webkit-keyframes cubemove {
    25% { -webkit-transform: translateX(42px) rotate(-90deg) scale(0.5) }
    50% { -webkit-transform: translateX(42px) translateY(42px) rotate(-180deg) }
    75% { -webkit-transform: translateX(0px) translateY(42px) rotate(-270deg) scale(0.5) }
    100% { -webkit-transform: rotate(-360deg) }
    }

    @keyframes cubemove {
    25% {
    transform: translateX(42px) rotate(-90deg) scale(0.5);
    -webkit-transform: translateX(42px) rotate(-90deg) scale(0.5);
    } 50% {
    transform: translateX(42px) translateY(42px) rotate(-179deg);
    -webkit-transform: translateX(42px) translateY(42px) rotate(-179deg);
    } 50.1% {
    transform: translateX(42px) translateY(42px) rotate(-180deg);
    -webkit-transform: translateX(42px) translateY(42px) rotate(-180deg);
    } 75% {
    transform: translateX(0px) translateY(42px) rotate(-270deg) scale(0.5);
    -webkit-transform: translateX(0px) translateY(42px) rotate(-270deg) scale(0.5);
    } 100% {
    transform: rotate(-360deg);
    -webkit-transform: rotate(-360deg);
    }
    }

    .spinner6 {
    50px;
    height: 30px;
    text-align: center;
    }

    .spinner6 > div {
    background-color: #fff;
    height: 100%;
    6px;
    margin-left:2px;
    display: inline-block;

    -webkit-animation: stretchdelay 1.2s infinite ease-in-out;
    animation: stretchdelay 1.2s infinite ease-in-out;
    }

    .spinner6 .rect2 {
    -webkit-animation-delay: -1.1s;
    animation-delay: -1.1s;
    }

    .spinner6 .rect3 {
    -webkit-animation-delay: -1.0s;
    animation-delay: -1.0s;
    }

    .spinner6 .rect4 {
    -webkit-animation-delay: -0.9s;
    animation-delay: -0.9s;
    }

    .spinner6 .rect5 {
    -webkit-animation-delay: -0.8s;
    animation-delay: -0.8s;
    }

    @-webkit-keyframes stretchdelay {
    0%, 40%, 100% { -webkit-transform: scaleY(0.4) }
    20% { -webkit-transform: scaleY(1.0) }
    }

    @keyframes stretchdelay {
    0%, 40%, 100% {
    transform: scaleY(0.4);
    -webkit-transform: scaleY(0.4);
    } 20% {
    transform: scaleY(1.0);
    -webkit-transform: scaleY(1.0);
    }
    }
    .spinner7 {
    90px;
    height: 30px;
    text-align: center;
    }

    .spinner7 > div {
    background-color: #fff;
    height: 15px;
    15px;
    margin-left:3px;
    border-radius: 50%;
    display: inline-block;

    -webkit-animation: stretchdelay 0.7s infinite ease-in-out;
    animation: stretchdelay 0.7s infinite ease-in-out;
    }

    .spinner7 .circ2 {
    -webkit-animation-delay: -0.6s;
    animation-delay: -0.6s;
    }

    .spinner7 .circ3 {
    -webkit-animation-delay: -0.5s;
    animation-delay: -0.5s;
    }

    .spinner7 .circ4 {
    -webkit-animation-delay: -0.4s;
    animation-delay: -0.4s;
    }

    .spinner7 .circ5 {
    -webkit-animation-delay: -0.3s;
    animation-delay: -0.3s;
    }

    @-webkit-keyframes stretchdelay {
    0%, 40%, 100% { -webkit-transform: translateY(-10px) }
    20% { -webkit-transform: translateY(-20px) }
    }

    @keyframes stretchdelay {
    0%, 40%, 100% {
    transform: translateY(-10px);
    -webkit-transform: translateY(-10px);
    } 20% {
    transform: translateY(-20px);
    -webkit-transform: translateY(-20px);
    }
    }

    下面让我们来使用一下该插件,试试它的简单方便 : 

    <!-- fakeLoader BEGIN -->

    <link rel="stylesheet" type="text/css" href="fakeLoader.css">
    <script type="text/javascript" src="fakeLoader.min.js"></script>
    <div id="fakeLoader"></div>
    <script type="text/javascript">
      $('div#fakeLoader').fakeLoader({
        timeToHide : 3000, //假加载的延时时长
        bgColor : '#2fd0b5', //背景颜色
        spinner : 'spinner3' //使用哪种预设动画,这里使用的是spinner3
      });
    </script>

    <!-- fakeLoader END -->

    当然别忘记在它之前引入jQuery文件哦,我一般使用 jQuery版本1.8.3 ;

    分享给大家,希望大家能为移动WebApp添砖加瓦吧。

  • 相关阅读:
    nginx2
    nginx1
    将Tomcat设置为自动启动的服务最快捷方法
    keepalived VS zookeeper
    Linux CentOS 7 下 Apache Tomcat 7 安装与配置
    使用curl 命令模拟POST/GET请求
    netty3---传统IO,NIO,nettyIO
    个人或小型企业站该如何选择服务器?
    如果你不懂备案,那我简单点跟你说
    SAE Java相关问题小结
  • 原文地址:https://www.cnblogs.com/jiangxiaobo/p/5200322.html
Copyright © 2020-2023  润新知