抽奖小程序

年底了为了备战年会抽奖,特此写了抽奖的小程序,主要思路:点击抽奖,程序已经选中界面中的某一项,在选中此项之前要做类似于转盘的操作,在转动几圈后逐渐把焦点放到终点处。因此会用到定时器,要做到缓冲由快到慢,要不停地把定时器间隔时间拉长,从而实现了慢慢接近目标的效果。这个程序中用到了随机数设置转几圈,随机选中哪一个元素的算法,大家以后可以在自己的程序中应用。

<!DOCTYPE html>
<html>

        <head>
                <meta charset="utf-8">
                <title>抽奖</title>
                <style type="text/css">
                        * {
                                margin: 0;
                                padding: 0;
                                box-sizing: border-box;
                        }
                        ul {
                                width: 630px;
                                list-style: none;
                                margin: 10px auto;
                        }
                        li {
                                text-align: center;
                                width: 200px;
                                height: 200px;
                                line-height: 200px;
                                margin: 0 10px 10px 0;
                                border: 1px solid red;
                                float: left;
                        }
                        li.active {
                                font-size: 50px;
                                color: #FFFF00;
                                background: red;
                                opacity: 0.5;
                        }
                        #div1 {
                                width: 100px;
                                height: 30px;
                                position: fixed;
                                right: 0;
                                top: 50%;
                        }
                        #btn1 {
                                font-size: 20px;
                                padding: 0 20px;
                                height: 40px;
                        }
                </style>
        </head>

        <body>
                <ul>
                        <li class="jiang">一等奖</li>
                        <li>无</li>
                        <li class="jiang">二等奖</li>
                        <li>无</li>
                        <li class="jiang">三等奖</li>
                        <li>无</li>
                        <li class="jiang">四等奖</li>
                        <li>无</li>
                        <li class="jiang">五等奖</li>
                </ul>
                <div id="div1">
                        <input type="button" id="btn1" value="抽奖" />
                </div>
                <script src="../js/jquery-1.11.1.min.js" type="text/javascript" charset="utf-8"></script>
                <script type="text/javascript">
                         //定时器
                        var timer = null;
                                
                        $('#btn1').click(function() {
                                //按顺序为每一个li追加active样式
                                //速度由快到慢,最终确定是否中奖,如果$('.active')元素有jiang样式,则说明中奖,否则没中奖
                                //获得某个整数范围内随机选择一个值。值=Math.floor(Math.random()*可能值的个数+第一个可能的值)
                                //num指终止li索引
                                //circle指转的圈数1-3圈

                                var $li = $('li'),
                                        l = $li.length,
                                        i = $('.active').length==0?0:$('.active').index(),
                                        spaceTime = 50,
                                        circle = Math.floor(Math.random() * 3 + 1),
                                        num = Math.floor(Math.random() * l + 0);

                                if (timer) {
                                        clearTimeout(timer);
                                }

                                timer = setTimeout(addCls, spaceTime);

                                function addCls() {
                                        var end = circle * l + num,
                                                speed = Math.ceil((end - i) / 5);

                                        if (i == end) {
                                                clearTimeout(timer);
                                                
                                                if($('.active').hasClass('jiang')){
                                                        alert('恭喜你获得'+$('.active').text());
                                                }else{
                                                        alert('别灰心,还有机会!');
                                                }
                                        } else {
                                                spaceTime=(10-speed)*60;
                                                timer = setTimeout(addCls, spaceTime);
                                                
                                                $li.eq(i % l).addClass('active').siblings().removeClass('active');
                                                i++;                                                
                                        }
                                        
                                        console.log('end='+end+',i='+i);
                                }
                        });
                </script>
        </body>

</html>


  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值