美文网首页
JQ实现转盘抽奖的两种方式

JQ实现转盘抽奖的两种方式

作者: MaguaSize | 来源:发表于2016-10-19 15:08 被阅读0次

<p>  做这个转盘抽奖效果所用到的图片在文章的最下面提供给大家,转盘抽奖是各大电商网站上常见一种效果,去度娘上搜索了一下,大多数都是使用插件完成的,并不能满足我的要求所以在JQ 的基础上自己写了一个版本.</p>

<pre>
<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <title>抽奖</title>
    <script type="text/javascript" src="js/jquery-2.2.3.min.js">
    </script>
    <!-- 这里是css部分 -->
    <style>
        #bg {
            width: 650px;
            height: 600px;
            margin: 0 auto;
            background: url(img/turntable-bg.jpg) no-repeat;
            position: relative;
        }
        
        img:nth-of-type(1) {
            position: absolute;
            z-index: 10;
            top: 155px;
            left: 247px;
        }
        
        img:nth-of-type(2) {
            position: absolute;
            z-index: 5;
            top: 60px;
            left: 116px;
        }
    </style>
</head>

<body>
    <!-- 这里是HTML结构部分 -->
    <div id="bg">
        <img src="img/pointer.png" alt="pointer" id="img1">
        <img src="img/turntable.png" alt="turntable" id="img2">
    </div>
    <!-- 这里是jq部分 -->
    <script>
        // 拿到两个img标签
        var oPointer = $("#img1");
        var oTurntable = $("#img2");
        // 旋转过每个奖项大约的角度
        var cat = 51.4;
        var num = 0;
        // 点击按钮后旋转没结束不允许第二次旋转
        var offOn = true;
        var temp = 0;
        document.title = "";
        // 点击方法
        oPointer.click(function() {
            if(offOn) {

                offOn = !offOn;
                ratating();
            }
        });

        function ratating() {

// var timer = null;
var rdm = 0;
// 随机计算出旋转的角度
rdm = Math.floor(Math.random() * (3600 - 3603 + 1) + 3603);
// 旋转
oTurntable.css({
transition: "all 4s",
transform: "rotate(" + (rdm + temp) + "deg)"
});
// 旋转后判断对应角度的奖项
setTimeout(function() {
offOn = !offOn;

                num = (rdm + temp) % 360;
                temp += rdm;
                if(num <= cat * 1) {
                    alert("4999元");

                } else if(num <= cat * 2) {
                    alert("条50元");

                } else if(num <= cat * 3) {
                    alert("10元");

                } else if(num <= cat * 4) {
                    alert("5元");

                } else if(num <= cat * 5) {
                    alert("免息服务");

                } else if(num <= cat * 6) {
                    alert("提交白金");

                } else if(num <= cat * 7) {
                    alert("未中奖");

                }
            }, 4000);

        }
    </script>
</body>

</html>
</pre>
<p>  上面的这种方式是点击以后旋转到随机到的度数后自动停止,有时候我们的需求并不是这样,需要点击开始然后再次点击再结束旋转.这种方式看下面代码.</p>
<pre>
<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <title>抽奖</title>
    <script type="text/javascript" src="js/jquery-2.2.3.min.js">
    </script>
    <!-- 这里是css部分 -->
    <style>
        #bg {
            width: 650px;
            height: 600px;
            margin: 0 auto;
            background: url(img/turntable-bg.jpg) no-repeat;
            position: relative;
        }
        
        img:nth-of-type(1) {
            position: absolute;
            z-index: 10;
            top: 155px;
            left: 247px;
        }
        
        img:nth-of-type(2) {
            position: absolute;
            z-index: 5;
            top: 60px;
            left: 116px;
        }
    </style>
</head>

<body>
    <!-- 这里是HTML结构部分 -->
    <div id="bg">
        <img src="img/pointer.png" alt="pointer" id="img1">
        <img src="img/turntable.png" alt="turntable" id="img2">
    </div>
    <!-- 这里是jq部分 -->
    <script>
        var oPointer = $("#img1");
        var oTurntable = $("#img2");
        var cat = 51.4;

        var offOn = true;
        var num = 0;
        var time = null;
        var begin = 0;
        var speed = 0;
        var compare = true;
        
        oPointer.click(function() {
            if (compare) {
                
                if(offOn) {
                speed = 20;
                time = setInterval(function() {
                    begin += speed;
                    oTurntable.css({
                        transform: "rotate(" + (begin) + "deg)"
                    });
                }, 16);

            } else {
                compare = false;
                setTimeout(function() {
                    clearInterval(time);
                    time = setInterval(function() {
                        if(speed <= 0) {
                            compare = true;
                            clearInterval(time);
                            result(begin);
                            
                        }
                        begin += speed;
                        var spe = Math.random()*(0.4-0.2+0.1)+0.2;

// console.log(spe);
speed -= spe;
oTurntable.css({
transform: "rotate(" + (begin) + "deg)"
});
}, 16);
}, 500);

            }
            offOn = !offOn;
            }
        });

        function result(ac) {
            num = ac % 360;
            if(num <= cat * 1) {
                alert("4999元");

            } else if(num <= cat * 2) {
                alert("条50元");

            } else if(num <= cat * 3) {
                alert("10元");

            } else if(num <= cat * 4) {
                alert("5元");

            } else if(num <= cat * 5) {
                alert("免息服务");

            } else if(num <= cat * 6) {
                alert("提交白金");

            } else if(num <= cat * 7) {
                alert("未中奖");

            }
        }
    </script>
</body>

</html>
</pre>

turntable.png turntable-bg.jpg turntable.png

相关文章

  • JQ实现转盘抽奖的两种方式

    做这个转盘抽奖效果所用到的图片在文章的最下面提供给大家,转盘抽奖是各大电商网站上常见一种效果,去度娘上搜索了一下,...

  • vue适配3到8个大转盘抽奖

    vue实现适配奖品不固定的大转盘抽奖,里面的实现代码就是vue+js,不需要jq,原理就是根据接口传过来的奖品数量...

  • 微信小程序幸运大转盘制作教程

    幸运大转盘抽奖方式是我见过最常用的抽奖方式了,这种方式简单,直接,让人看着兴奋。那么,幸运大转盘微信小程序怎么制作...

  • Android超简单实现九宫格抽奖

    目录 前言 如果有小伙伴想实现转盘抽奖效果的话请看我的另一篇文章《Android超简单实现自定义抽奖转盘效果》 效...

  • iOS动画--转盘动画

    很多项目中都有抽奖这类的模块,一般web页面,这里提供两种抽奖转盘实现,使用原生代码。 1、九宫格类隔断奖盘...

  • JS实现抽奖转盘

    超级简单的原理:点击转盘指针后随机得到一个数(每个数字对应一个奖项),并确定每个奖项在轮盘上的大概角度,然后调用 ...

  • canvas实现转盘抽奖

    用canvas写了一个简单的转盘抽奖插件, 给大家参考下下。。。 做的时候的想法是,通过传进来的标签以及属性,直接...

  • 小程序实现大转盘,九宫格抽奖,带跑马灯效果

    基本实现功能 1,小程序仿天猫超市大转盘 2,九宫格转盘抽奖 3,积分抽奖 4,抽到的积分随机生成 5,抽奖结果可...

  • Scratch—转盘抽奖

    【知识延伸】 传统抽奖分为抽奖盒抽取、转盘抽奖等 【要求】 今天我们按照平时转盘抽奖、利用Scratch做一个转盘...

  • css 如何“画”一个抽奖转盘

    主要描述的是如何运用 css 绘制一个抽奖转盘,并运用原生 js 实现转盘抽奖效果。 先来张效果图: 布局 一般来...

网友评论

      本文标题:JQ实现转盘抽奖的两种方式

      本文链接:https://www.haomeiwen.com/subject/fyqxuttx.html