大转盘插件(zepto)

所属分类:其他-游戏

 46601  397  查看评论 (72)
分享到微信朋友圈
X
大转盘插件(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;
}


相关插件-游戏

js+Html5捕鱼达人

js和HTML5实现网页版捕鱼达人游戏
  游戏
 44437  460

js推箱子小游戏

html5 canvas绘制小人推箱子小游戏,代码注释很全,修改简单。
  游戏
 27419  318

俄罗斯方块

jquery写的俄罗斯方块小游戏 炫酷经典
  游戏
 25085  289

原生js实现2048小游戏(原创)

原生js实现2048小游戏,只用200多行代码实现欢迎学习下载。
  游戏
 26043  305

讨论这个项目(72)回答他人问题或分享插件使用方法奖励jQ币 评论用户自律公约

    努力努力再努力 0
    2019/12/31 17:50:54
    后台返回奖品后,如何控制旋转的角度
        BattleofLexington1
        2019/12/31 22:45:51
        后台是直接给角度就行了。
    回复
    高桥留 0
    2019/10/9 16:17:58
    为什么用vue的写法抽奖结束的回调方法进不去啊! 回复
    北国风 0
    2019/9/18 20:16:17
    因为用zepto,所以丢弃jquery的旋转程序,改完了,安卓没问题,结果发现苹果手机不能用 回复
    。。? 0
    2019/6/28 14:14:03
    无法与后台实现交互啊
    回复
    小幸运。 0
    2018/8/16 20:00:45
    ajax请求 地址为什么总是本地
        小幸运。0
        2018/8/24 11:23:05
        后台接口有问题
        0
        2019/9/29 12:43:59
        你前台只干2个事,拿到后台接口渲染数据,拿到后台中奖接口,显示中奖。就可以了
    回复
    0
    2018/5/31 10:09:38
    ios转不了,改了也转不了
        0
        2018/5/31 11:25:17
        大概是因为我没刷新,其他的iphone都可以,就我的不行。按照楼下的那个办法改,应该是没错的
        小幸运。0
        2018/8/24 11:23:42
        我也遇到iphone 无法点击 为什么
        秋殇。无法忘却的回忆0
        2019/4/25 19:01:26
        我也遇到iphone 无法点击 为什么
    回复
    唔五勿无 0
    2018/5/29 17:26:53
    能修改中奖概率吗
        みさか みこと0
        2019/11/8 11:47:57
        不知道 - -
    回复
    鲸与海 0
    2018/4/25 15:20:45
    没太明白random()和deg什么关系啊,传入角度打印出来没办法控制对应的奖品,求详解
        鲸与海0
        2018/4/27 9:34:32

        顺时针转的话,random()和deg正好是相反的,clickCallback:function(){}添加ajax请求的时候,

        this.goKinerLottery(random());

        要改为

        KinerLottery.goKinerLottery(random());

        才能获取到值

        。。?0
        2019/6/28 18:19:50
        请问能看下你的代码吗
    回复
    浅浅 0
    2018/4/24 11:39:57
    怎么设置每次转动到中间位置
        0
        2019/9/29 12:39:47
        角度定死就可以了
    回复
    し秋ぅ忆り 0
    2018/2/1 17:57:25

    请问怎么排除已经抽中了的礼物呢?让它下次,不在选中它

    回复
😃
  • 😀
  • 😉
  • 😥
  • 😵
  • 😫
  • 😘
  • 😡
  • 👍
  • 🌹
  • 👏
  • 🍺
  • 🍉
  • 🌙
  • 💖
  • 💔
😃
  • 😀
  • 😉
  • 😥
  • 😵
  • 😫
  • 😘
  • 😡
  • 👍
  • 🌹
  • 👏
  • 🍺
  • 🍉
  • 🌙
  • 💖
  • 💔
取消回复