大转盘插件(zepto)

所属分类:其他-游戏

 12916  84  查看评论 (40)
大转盘插件(zepto) ie兼容10
<div id="box" class="box">
    <div class="outer KinerLottery KinerLotteryContent"><img src="./imgs/lotteryContent.png"></div>
    <!-- 大专盘分为三种状态:活动未开始(no-start)、活动进行中(start)、活动结束(completed),可通过切换class进行切换状态,js会根据这3个class进行匹配状态 -->
    <div class="inner KinerLotteryBtn start"></div>
</div>

js部分

/**
     * 根据转盘旋转角度判断获得什么奖品
     * @param deg
     * @returns {*}
     */
var whichAward = function(deg) {
    if ((deg > 330 && deg <= 360) || (deg > 0 && deg <= 30)) { //10M流量
        return "三网通流量 10M";
    } else if ((deg > 30 && deg <= 90)) { //IPhone 7
        return "iPhone7";
    } else if (deg > 90 && deg <= 150) { //30M流量
        return "三网通流量 30M";
    } else if (deg > 150 && deg <= 210) { //5元话费
        return "话费5元";
    } else if (deg > 210 && deg <= 270) { //IPad mini 4
        return "ipad mini4";
    } else if (deg > 270 && deg <= 330) { //20元话费
        return "话费20元";
    }
}
var KinerLottery = new KinerLottery({
    rotateNum: 8,
    //转盘转动圈数
    body: "#box",
    //大转盘整体的选择符或zepto对象
    direction: 0,
    //0为顺时针转动,1为逆时针转动
    disabledHandler: function(key) {
        switch (key) {
        case "noStart":
            alert("活动尚未开始");
            break;
        case "completed":
            alert("活动已结束");
            break;
        }
    },
    //禁止抽奖时回调
    clickCallback: function() {
        //此处访问接口获取奖品
        function random() {
            return Math.floor(Math.random() * 360);
        }
        this.goKinerLottery(random());
    },
    //点击抽奖按钮,再次回调中实现访问后台获取抽奖结果,拿到抽奖结果后显示抽奖画面
    KinerLotteryHandler: function(deg) {
        alert("恭喜您获得:" + whichAward(deg));
    } //抽奖结束回调
});

css部分:

html {
    font-size : 20px;
}
@media only screen and (min-width: 401px){
    html {
        font-size: 25px !important;
    }
}
@media only screen and (min-width: 428px){
    html {
        font-size: 26.75px !important;
    }
}
@media only screen and (min-width: 481px){
    html {
        font-size: 30px !important;
    }
}
@media only screen and (min-width: 569px){
    html {
        font-size: 35px !important;
    }
}
@media only screen and (min-width: 641px){
    html {
        font-size: 40px !important;
    }
}
html, body {
    padding: 0;
    margin: 0;
    background: #fffeea;
    height: 100%;
}

p,li,b,span,div,strong,h1,h2,h3,h4,h5,h6,a,ul{
    margin: 0;
    padding: 0;
    text-decoration: none;
    list-style: none;
    -webkit-user-select: none;
    -moz-user-select: none;
    -ms-user-select: none;
    user-select: none;
}

.box {
    width: 14rem;
    height: 14rem;
    position: relative;
    margin: 0 auto;
    position: absolute;
    top: 50%;
    left: 50%;
    transform: translate(-50%,-50%);
    -webkit-transform: translate(-50%,-50%);
    -moz-transform: translate(-50%,-50%);
    -ms-transform: translate(-50%,-50%);
    -o-transform: translate(-50%,-50%);
}

.box .outer {
    width: 100%;
    height: 100%;
    position: absolute;
    z-index: 1;
    top: 0;
    left: 0;
    transform: rotate(0deg);
    -webkit-transform: rotate(0deg);
    -moz-transform: rotate(0deg);
    -ms-transform: rotate(0deg);
    -o-transform: rotate(0deg);
}

.box .outer img{
    width: 100%;
}

.box .inner{
    position: relative;
    width: 5rem;
    height: 5rem;
    left: 50%;
    top: 50%;
    -webkit-transform: translate(-50%, -50%);
    -moz-transform: translate(-50%, -50%);
    -ms-transform: translate(-50%, -50%);
    -o-transform: translate(-50%, -50%);
    transform: translate(-50%, -50%);
    z-index: 2;
    background-image: url(../imgs/lotteryBtn.png);
    background-size: auto 5rem;
    background-repeat: no-repeat;
}
.box .inner.start:active{

    -webkit-transform: translate(-50%, -50%) scale(.95);
    -moz-transform: translate(-50%, -50%) scale(.95);
    -ms-transform: translate(-50%, -50%) scale(.95);
    -o-transform: translate(-50%, -50%) scale(.95);
    transform: translate(-50%, -50%) scale(.95);
}

.box .inner.start{
    background-position: 0 0;
}
.box .inner.no-start{
    background-position: -5rem 0;
}
.box .inner.completed{
    background-position: -10rem 0;
}


相关插件-游戏

h5贪吃蛇动画

h5画布,贪吃蛇简单动画
  游戏
 10238  32

js版星际争霸

js版星际争霸
  游戏
 34312  27

mario游戏

js马里奥游戏,代码有注释
  游戏
 2516  5

js圈圈叉叉小游戏

古老的游戏源码,小朋友们不用在纸上画了,可双人,可单机,啊哈哈
  游戏
 5445  37

讨论这个项目(40)回答他人问题或分享插件使用方法奖励jQ币

    cloudZero 0
    2017/10/25 9:57:18

    在安卓自带的浏览器下,奖盘旋转过程中,中间的图片会消失,测试下来感觉像是transition的问题,想请问下是否有解决方案?

    回复
    老司机开车了 0
    2017/9/9 14:53:12

    请问,转盘圆心如何设置位置

    回复
    wait 0
    2017/8/28 13:40:20

    360为什么弹窗提示会延迟好久才会弹出

    回复
    一番K 0
    2017/5/15 18:20:27

    手机端点了没反应 - - 

    回复
    灬 一点 0
    2017/5/12 11:58:31

    请问怎么修改起始角度

    回复
    forever丶回不去的“过去 0
    2017/4/21 9:55:53

    怎么能控制转盘转动的时间

        forever丶回不去的“过去0
        2017/4/21 10:18:59
        解决了
        silence 丶0
        2017/5/8 9:57:30

        怎么解决的

    回复
    OT_TO 0
    2017/1/9 10:01:58

    顺时针时 为什么要用360-抽中角度?有人知道吗?这个会导致抽奖结果不正确的。求解

        OT_TO0
        2017/1/9 10:01:29
        self.opts.KinerLotteryHandler(360 - deg);
    回复
    取个名字真难a 0
    2016/12/27 15:12:33
    作者现在写的功能是页面是通过随机生成角度deg,然后得出奖品的!那么现在后台计算概率并直接返回中奖结果给我,请问我要在前端页面怎么改写呢?
        microsoftvs1
        2016/12/27 21:12:32
        clickCallback: function() {
        	//通过AJAX向后台返回值替代这里就行了。
        	//此处访问接口获取奖品            
        	function random() {
        		return Math.floor(Math.random() * 360);
        	}
        	this.goKinerLottery(random());
        },//点击抽奖按钮,再次回调中实现访问后台获取抽奖结果,拿到抽奖结果后显示抽奖画面
        取个名字真难a0
        2016/12/28 9:12:52
        clickCallback: function() {
        	$.ajax({
        		url: 'rand.php',
        		type: 'get',
        		success: function(data) {
        			alert(data);
        			//这里是PHP直接返回了中奖奖品!但是大转盘旋转后得到的奖品和后台返回的不一样!      
        		}
        	})
        	//此处访问接口获取奖品    
        	function random() {
        		return Math.floor(Math.random() * 90);
        		/*随机生成中奖角度*/
        	}
        	this.goKinerLottery(random());
        },
        //点击抽奖按钮,再次回调中实现访问后台获取抽奖结果,拿到抽奖结果后显示抽奖画面
        取个名字真难a0
        2016/12/28 9:12:09
        clickCallback: function() {
                    $.ajax({
                        url:'rand.php',
                        type:'get',
                        success:function(data){
                            alert(data);//这里是PHP直接返回了中奖奖品!但是大转盘旋转后得到的奖品和后台返回的不一样!
                        }
                    })
                    //此处访问接口获取奖品
                    function random() {
                        return Math.floor(Math.random() *90);/*随机生成中奖角度*/
        
                    }
                    this.goKinerLottery(random());
        
                }, //点击抽奖按钮,再次回调中实现访问后台获取抽奖结果,拿到抽奖结果后显示抽奖画面
        microsoftvs0
        2016/12/28 11:12:44

        我意思是, 

        function random() {
        	return Math.floor(Math.random() * 90);
        	/*随机生成中奖角度*/
        }
        this.goKinerLottery(random());

        改成

        var jg;
        $.ajax({
        	url: 'rand.php',
        	type: 'get',
        	success: function(data) {
        		alert(data);
        		//这里是PHP直接返回的是一个角度!替代random()值             
        		jg = data;
        	}
        }) 
        this.goKinerLottery(jg); //角度对应奖品


    回复
    ctwj 0
    2016/12/1 11:12:17
    ios不支持?
        linshi_test3
        2017/1/3 11:01:59

        kinerLottery.js中

        $('body').on('click', ".KinerLotteryBtn", function() {});

        改成

        $('.KinerLotteryBtn').click(function() {});

        ios就可以了

        @??.com0
        2017/10/26 11:33:46

        我改了,ios还是不支持啊?求解

    回复
    joecc 0
    2016/11/23 15:11:05
    self.opts.KinerLotteryHandler(360 - deg); 源码里面 360 - 指定的角度 这个什么意思 导致我转不到我想要的
        joecc0
        2016/11/23 15:11:22
        知道什么意思了               但是  顺时针转的时候    获得结是 360-rData   
        隙地。0
        2016/11/23 19:11:00
        不支持iOS?
        OT_TO0
        2017/1/9 10:01:50
        知道为什么要用360-角度吗 我现在还不明白
    回复
取消回复