• jquery实现抽奖转盘


    用jquery通过配置参数实现抽奖转盘

    1.html代码

    <!DOCTYPE html>
    <html lang="zh-CN">
        <head>
            <meta charset="UTF-8">
            <title>抽奖活动</title>
            <meta name="keyword" content="">
            <meta name="description" content="">
            <meta http-equiv="X-UA-Compatible" content="IE=edge">
            <meta name="renderer" content="webkit">
            <script type="text/javascript" src="js/jquery.js"></script>
            <!-- 业务样式 -->
            <link rel="stylesheet" type="text/css" href="css/index.css">
            <!--[if lt IE 9]>
            <link rel="stylesheet" href="http://static.51offer.com/skin/css/study-abroad-steps/ie.css"/>
            <script src="http://cdn.bootcss.com/html5shiv/3.7.0/html5shiv.min.js"></script>
            <![endif]-->
        </head>
        <body>
            <div class="container">
                <div class="container_wrap">
                    <div class="container_left clearfix" id="zhuanpan">
                        <div class="zhuanpan">
                            <ul class="zhuanpan1">
                                <li class="libao"></li>
                                <li class="mobile_shell"></li>
                                <li class="note"></li>
                                <li class="better"></li>
                                <li class="quan"></li>
                                <li class="tshirt"></li>
                            </ul>
                        </div>
                        <img class="choujiang" src="img/choujiang.png">
                        <img class="have_choujiang" src="img/reward.png">
                    </div>
                </div>
            </div>
            <script type="text/javascript" src="js/index.js"></script>
        </body>
    </html>
    

    2.调用的js

    var config = {
        "rollId": '#rollId', //外层divid
        "rollBtn": ".rollBtn", //点击滚动的按钮--class
        "rollList": ".rollList",
        "pinIndex": 0, //滚动的起点
        "speed": 200, //滚动的速度
        "cycle": 0, //滚动的圈数
        "fastCycle": 5, //快速滚动圈数
        "rollResult": 4 //抽奖的结果
    };
    var Roll = function() {
        var self = this;
        self.config = config;
        self.stopIndex = '';
        self.isRolling = false;
        self.timer = null;
        self.ops = '';
        self.rollId = '';
        self.rollBtn = '';
        self.rollList = '';
        self.rollIndex = 0;
    }
    
    var roll=new Roll();
    
    $(function(){
    	$(".choujiang").on("click",function(){
    		rollFun(4);
    	});
    })
    
    function rollFun(prize_code) {
        roll.init({
            "rollId": '#zhuanpan',
            "rollBtn": ".choujiang",
            "rollList": ".zhuanpan1",
            "pinIndex": 0,
            "rollResult": prize_code
        });
        roll.start();
    }
    
    
    Roll.prototype.init = function(options) {
        var self = this;
        self.ops = $.extend({}, self.config, options);
        self.rollId = $(self.ops.rollId);
        self.rollBtn = self.rollId.find(self.ops.rollBtn);
        self.rollList = self.rollId.find(self.ops.rollList).find('li');
        self.stopIndex = self.ops.rollResult;
    };
    
    // 按钮事件
    Roll.prototype.start = function() {
        this.rollPre();
    };
    Roll.prototype.rollPre = function() {
        var self = this;
        if (!self.isRolling) {
            self.rollList.eq(self.ops.pinIndex).show().siblings().hide();
            rollStart(self); // 开始启动转盘
        }
    };
    // 指向下一个
    function rollGoNext(self) {
        self.rollIndex += 1;
        if (self.rollIndex > self.rollList.length) {
            self.rollIndex = 0;
            self.ops.cycle++;
        }
        self.rollList.eq(self.rollIndex).show().siblings().hide();
    }
    // 停止转动
    function rollStop(self) {
        clearInterval(self.timer);
        (function stopGoNext() {
            if (self.rollIndex !== self.stopIndex) {
                rollGoNext(self);
                setTimeout(function() {
                    stopGoNext();
                }, 300);
            } else {
                self.isRolling = false;
                self.ops.cycle = 0;
                self.rollIndex = 0;
                $(".choujiang").hide();
                $(".have_choujiang").show();
                // self.ev.trigger('succeed', {
                //     rollResult: self.stopIndex
                // });
            }
        })();
    }
    //开始转动
    function rollStart(self) {
        self.isRolling = true;
        self.timer = setInterval(function() {
            rollGoNext(self);
            if (self.rollIndex == 5) {
                clearInterval(self.timer);
                self.ops.speed = 20;
                self.timer = setInterval(function() {
                    rollGoNext(self);
                    if (self.ops.cycle >= 5) {
                        clearInterval(self.timer);
                        self.ops.speed = 200;
                        self.timer = setInterval(function() {
                            if (self.ops.cycle === 6) {
                                rollStop(self);
                            } else {
                                rollGoNext(self);
                            }
                        }, self.ops.speed);
                    }
                }, self.ops.speed);
            }
        }, self.ops.speed);
    }
    

    3.效果图

    源代码:https://files.cnblogs.com/files/gzx618/roll.zip

    junhui.z zjh5433341142@163.com
  • 相关阅读:
    系统操作日志设计代码实现
    SQL SERVER 存储过程复习
    IGrab信息采集系统流程图(初稿)
    收藏几段SQL语句和存储过程
    SQL Server联机丛书:存储过程及其创建
    使用dynamic来简化反射实现,并且提高了性能
    你必须知道的C#的25个基础概念(附演示)
    弹窗插件
    dede 搜索时出现“SphinxClient类找不到”解决
    开启includes模块运行shtml
  • 原文地址:https://www.cnblogs.com/gzx618/p/4816594.html
Copyright © 2020-2023  润新知