-来-自-插-件-的-老-虎-机-!

<!DOCTYPE html>
<html>
    <head>
        <meta charset="utf-8" />
        <script type="text/javascript" src="js/jquery-2.1.3.min.js" ></script>
        <script type="text/javascript" src="js/public.js" ></script>
        <script type="text/javascript" src="js/easing.js" ></script>
        <link rel="stylesheet" href="css/style.css" />
        <title></title>
        <style>
            .prev,.next{width:8rem;height:8rem;-webkit-transform-style: preserve-3d;margin:0 auto;}
            .prev{background:url(img/num_yin.png) top center repeat-y;background-size:8rem 80rem;-webkit-transform:perspective(500px) rotateX(45deg) scale(0.8) translateY(-3rem);}
            .next{background:url(img/num_yin.png) top center repeat-y;background-size:8rem 80rem;-webkit-transform:perspective(500px) rotateX(-45deg) scale(0.8) translateY(4rem);}
        </style>
    </head>
    <body>
        <div class="page no01">
            <div class="no02_hint">分享朋友圈,邀请一个好友赠送一次机会,<br />好友充值1元再赠送一次,好友充值多少送多少</div>
            <!-- 老鼠机  start -->
            <div class="tiger clearfix">
                <div class="num">
                    <div class="prev"></div>
                    <div class="anim"></div>
                    <div class="next"></div>
                </div>
                <div class="num">
                    <div class="prev"></div>
                    <div class="anim"></div>
                    <div class="next"></div>
                </div>
                <div class="num">
                    <div class="prev"></div>
                    <div class="anim"></div>
                    <div class="next"></div>
                </div>
            </div>
            <!-- 老鼠机  end -->
            <div class="clearfix opens">
                <button class="flt play_num">X1</button>
                <button class="frt opengame">启动</button>
            </div>
        </div>
    </body>
</html>

<script>
var isBegin = false;
$(function(){
    var u = 80;        //每个数字的高
    var oFoucs = 0;
    var oArrColorN = ["00","11","22","33","44","55","66","77","88","99","12","23","34","45","56","67","78","89","000","111","222","333","444","555","666","777","888","999","012","123","234","345","456","567","678","789","520"]
    $('.opengame').click(function(){
//        if(isBegin) return false;
        isBegin = true;
        $(".anim").css('backgroundPositionY',0);
        $(".prev").css('backgroundPositionY',0);
        $(".next").css('backgroundPositionY',0);
        $(".anim").removeClass("on");
        oFoucs=0;
        var result = 189;        //这里设置点数
        var num_arr = (result+'').split('');
        $(".anim").each(function(index){
            var _num = $(this);
            setTimeout(function(){
                _num.animate({ 
                    backgroundPositionY: ((u*60) - (u*num_arr[index]))/10+"rem"
                },{
                    duration: 6000+index*3000,
                    easing: "easeInOutCirc",
                    complete: function(){
                        oFoucs++;
//                        alert(oFoucs)
                        result = result+'';
                        if(oFoucs==3){
                            for(var i=0;i<oArrColorN.length;i++){
                                if(result.indexOf(oArrColorN[i]) != -1){
                                    var weizhi = result.indexOf(oArrColorN[i]);
                                    var geshu = oArrColorN[i].length;
//                                    $(".anim").eq(weizhi).addClass("on");
                                    for(var o=weizhi;o<oArrColorN[i].length+weizhi;o++){
                                        $(".anim").eq(o).addClass("on");
                                    }
                                }
                            }
                        }
                    }
                });
            }, index * 300);
        });
        
        $(".prev").each(function(index){
            var _num = $(this);
            setTimeout(function(){
                _num.animate({ 
                    backgroundPositionY: ((u*60) - (u*num_arr[index]) + u)/10 +"rem"
                },{
                    duration: 6000+index*3000,
                    easing: "easeInOutCirc",
                    complete: function(){}
                });
            }, index * 300);
        });
        $(".next").each(function(index){
            var _num = $(this);
            setTimeout(function(){
                _num.animate({ 
                    backgroundPositionY: ((u*60) - (u*num_arr[index]) - u)/10 +"rem"
                },{
                    duration: 6000+index*3000,
                    easing: "easeInOutCirc",
                    complete: function(){}
                });
            }, index * 300);
        });
    });    
});
</script>

主要布局css(ps:加上html文件上的代码,因为那是临时添加的):

/*老鼠机*/
.tiger{padding:0 1rem;box-sizing:border-box;}
.tiger .num{width:33.333%;height:100%;float:left;text-align:center;position:relative;}
.anim{position:absolute;left:50%;top:50%;margin-left:-4rem;margin-top:-5rem;width:8rem;height:8rem; background: url(../img/num_yin.png) top center repeat-y;background-size:8rem 80rem;}
.on.anim{ background: url(../img/num_jin.png) top center repeat-y;background-size:8rem 80rem;-webkit-animation:fd 1s ease 1;}
@-webkit-keyframes fd{
    0%,100%{-webkit-transform:scale(1);opacity:1;}
    70%{-webkit-transform:scale(1.5);}
    80%{opacity:1;}
    90%{-webkit-transform:scale(1.8);opacity:0;}
}

 

 

其中主要库是easing.js,这是一个速度变化的库,速度变化~

 

下面是easing.js的代码:

// t: current time, b: begInnIng value, c: change In value, d: duration
jQuery.easing['jswing'] = jQuery.easing['swing'];

jQuery.extend( jQuery.easing,
{
    def: 'easeOutQuad',
    swing: function (x, t, b, c, d) {
        //alert(jQuery.easing.default);
        return jQuery.easing[jQuery.easing.def](x, t, b, c, d);
    },
    easeInQuad: function (x, t, b, c, d) {
        return c*(t/=d)*t + b;
    },
    easeOutQuad: function (x, t, b, c, d) {
        return -c *(t/=d)*(t-2) + b;
    },
    easeInOutQuad: function (x, t, b, c, d) {
        if ((t/=d/2) < 1) return c/2*t*t + b;
        return -c/2 * ((--t)*(t-2) - 1) + b;
    },
    easeInCubic: function (x, t, b, c, d) {
        return c*(t/=d)*t*t + b;
    },
    easeOutCubic: function (x, t, b, c, d) {
        return c*((t=t/d-1)*t*t + 1) + b;
    },
    easeInOutCubic: function (x, t, b, c, d) {
        if ((t/=d/2) < 1) return c/2*t*t*t + b;
        return c/2*((t-=2)*t*t + 2) + b;
    },
    easeInQuart: function (x, t, b, c, d) {
        return c*(t/=d)*t*t*t + b;
    },
    easeOutQuart: function (x, t, b, c, d) {
        return -c * ((t=t/d-1)*t*t*t - 1) + b;
    },
    easeInOutQuart: function (x, t, b, c, d) {
        if ((t/=d/2) < 1) return c/2*t*t*t*t + b;
        return -c/2 * ((t-=2)*t*t*t - 2) + b;
    },
    easeInQuint: function (x, t, b, c, d) {
        return c*(t/=d)*t*t*t*t + b;
    },
    easeOutQuint: function (x, t, b, c, d) {
        return c*((t=t/d-1)*t*t*t*t + 1) + b;
    },
    easeInOutQuint: function (x, t, b, c, d) {
        if ((t/=d/2) < 1) return c/2*t*t*t*t*t + b;
        return c/2*((t-=2)*t*t*t*t + 2) + b;
    },
    easeInSine: function (x, t, b, c, d) {
        return -c * Math.cos(t/d * (Math.PI/2)) + c + b;
    },
    easeOutSine: function (x, t, b, c, d) {
        return c * Math.sin(t/d * (Math.PI/2)) + b;
    },
    easeInOutSine: function (x, t, b, c, d) {
        return -c/2 * (Math.cos(Math.PI*t/d) - 1) + b;
    },
    easeInExpo: function (x, t, b, c, d) {
        return (t==0) ? b : c * Math.pow(2, 10 * (t/d - 1)) + b;
    },
    easeOutExpo: function (x, t, b, c, d) {
        return (t==d) ? b+c : c * (-Math.pow(2, -10 * t/d) + 1) + b;
    },
    easeInOutExpo: function (x, t, b, c, d) {
        if (t==0) return b;
        if (t==d) return b+c;
        if ((t/=d/2) < 1) return c/2 * Math.pow(2, 10 * (t - 1)) + b;
        return c/2 * (-Math.pow(2, -10 * --t) + 2) + b;
    },
    easeInCirc: function (x, t, b, c, d) {
        return -c * (Math.sqrt(1 - (t/=d)*t) - 1) + b;
    },
    easeOutCirc: function (x, t, b, c, d) {
        return c * Math.sqrt(1 - (t=t/d-1)*t) + b;
    },
    easeInOutCirc: function (x, t, b, c, d) {
        if ((t/=d/2) < 1) return -c/2 * (Math.sqrt(1 - t*t) - 1) + b;
        return c/2 * (Math.sqrt(1 - (t-=2)*t) + 1) + b;
    },
    easeInElastic: function (x, t, b, c, d) {
        var s=1.70158;var p=0;var a=c;
        if (t==0) return b;  if ((t/=d)==1) return b+c;  if (!p) p=d*.3;
        if (a < Math.abs(c)) { a=c; var s=p/4; }
        else var s = p/(2*Math.PI) * Math.asin (c/a);
        return -(a*Math.pow(2,10*(t-=1)) * Math.sin( (t*d-s)*(2*Math.PI)/p )) + b;
    },
    easeOutElastic: function (x, t, b, c, d) {
        var s=1.70158;var p=0;var a=c;
        if (t==0) return b;  if ((t/=d)==1) return b+c;  if (!p) p=d*.3;
        if (a < Math.abs(c)) { a=c; var s=p/4; }
        else var s = p/(2*Math.PI) * Math.asin (c/a);
        return a*Math.pow(2,-10*t) * Math.sin( (t*d-s)*(2*Math.PI)/p ) + c + b;
    },
    easeInOutElastic: function (x, t, b, c, d) {
        var s=1.70158;var p=0;var a=c;
        if (t==0) return b;  if ((t/=d/2)==2) return b+c;  if (!p) p=d*(.3*1.5);
        if (a < Math.abs(c)) { a=c; var s=p/4; }
        else var s = p/(2*Math.PI) * Math.asin (c/a);
        if (t < 1) return -.5*(a*Math.pow(2,10*(t-=1)) * Math.sin( (t*d-s)*(2*Math.PI)/p )) + b;
        return a*Math.pow(2,-10*(t-=1)) * Math.sin( (t*d-s)*(2*Math.PI)/p )*.5 + c + b;
    },
    easeInBack: function (x, t, b, c, d, s) {
        if (s == undefined) s = 1.70158;
        return c*(t/=d)*t*((s+1)*t - s) + b;
    },
    easeOutBack: function (x, t, b, c, d, s) {
        if (s == undefined) s = 1.70158;
        return c*((t=t/d-1)*t*((s+1)*t + s) + 1) + b;
    },
    easeInOutBack: function (x, t, b, c, d, s) {
        if (s == undefined) s = 1.70158; 
        if ((t/=d/2) < 1) return c/2*(t*t*(((s*=(1.525))+1)*t - s)) + b;
        return c/2*((t-=2)*t*(((s*=(1.525))+1)*t + s) + 2) + b;
    },
    easeInBounce: function (x, t, b, c, d) {
        return c - jQuery.easing.easeOutBounce (x, d-t, 0, c, d) + b;
    },
    easeOutBounce: function (x, t, b, c, d) {
        if ((t/=d) < (1/2.75)) {
            return c*(7.5625*t*t) + b;
        } else if (t < (2/2.75)) {
            return c*(7.5625*(t-=(1.5/2.75))*t + .75) + b;
        } else if (t < (2.5/2.75)) {
            return c*(7.5625*(t-=(2.25/2.75))*t + .9375) + b;
        } else {
            return c*(7.5625*(t-=(2.625/2.75))*t + .984375) + b;
        }
    },
    easeInOutBounce: function (x, t, b, c, d) {
        if (t < d/2) return jQuery.easing.easeInBounce (x, t*2, 0, c, d) * .5 + b;
        return jQuery.easing.easeOutBounce (x, t*2-d, 0, c, d) * .5 + c*.5 + b;
    }
});

 

 

效果图如下:

 

转载于:https://www.cnblogs.com/sugege/p/6726352.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值