js实现抽奖功能

原生js实现轮转抽奖功能

模拟做天涯明月刀已经告一段落,总结了一些以后也可以拿来使用的小功能--------这次是抽奖功能

抽奖的页面
这是一个抽奖的页面,要实现点击抽奖后每一块奖品出出现高亮。然后一直轮转,速度慢慢减缓,直到停下来。

首先这个高亮使用一张改变透明度灰色图片覆盖到每个奖品上实现的

在这里插入图片描述
就是上图这个效果
实现代码就是,在html中加上一个div

 <div id="swfcontent_hover" class="swfcontent_hover"></div>

再在css中添加样式,使其亮亮的

.swfcontent_hover{
   position: absolute;
   left: 0px;
   top: 0px;
   width: 304px;
   height: 204px;
   display:none;
   background: url("images/sel.png") no-repeat;
   opacity: .6;
}

整个事件的逻辑就是,

1.点击抽奖swfcontent_hover的display需要=“block”,
2.然后根据抽奖界面的宽高进行限定,控制swfcontent_hover的 left 和 top 使其顺时针移动,先是向左移动,每次移动340px(奖品格子的宽度),移动到其left=680的时候就停止,向下移动。
3.向下每次移动250(奖品格子的高度),当移动到top=500px时,再向右运动。。。
以此类推,进行顺时针旋转。

//抽奖模块
var lottery = document.getElementById("swfcontent_start");     ----获取到中间点击抽奖按钮的div
//设置两个变量,用于下面移动的判断
var number = 0;     ----代表left的变量 
var number1 = 0;    ----代表top的变量
lottery.onclick = function () {
    autoplay3();
}
//对于白框left和top的改变
function directionshift() {
    var leap = document.getElementById("swfcontent_hover");
    leap.style.display = "block";
    leap.style.left = number + "px";
    leap.style.top = number1 + "px";

}
//向右和下移动的定时器
var timer1 = null;
var time = 50;
function autoplay3() {
    timer1 = setInterval(function () {
        directionshift();
        //移动的判断
        if (number < 680 && number1 == 0) {               //向左    
            number += 340;
        } else if (number1 < 500 && number != 0) {        //向下
            number1 += 250;
        } else if (number <= 680 && number > 0) {         //向右
            number -= 340;
        } else if (number == 0 && number1 > 0) {          //向上
            number1 -= 250; 
        }
        if (number == 0 && number1 == 0) {        //当回到原点时,让下一圈的速度减慢
            clearInterval(timer1);                //清楚原来的time
            time += 100;                          //每次time延长100
            autoplay3();
            if (time == 450) {                    //直到速度很慢time等于450时,使高亮图片停止移动
                clearInterval(timer1);            //清除定时器
                lottery.onclick = function () {    //如果再次点击,进行判断
                    alert("今天的抽奖次数用完喽");
                    return false;
                }
                alert("恭喜你获得一级寒石*3,请注意查收!");        //当time的时候落到的奖品块

            }
        }
    }, time);
}

其中关于定时器有一个小的知识点,定时器如果想改变每次的time值,必须先清除原来的定时器,然后再改变time时间。例如代码中不能直接让time+=100。

对于这个抽奖功能,就这些内容就可以实现,如果有什么问题,请指正。

  • 0
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
实现转盘抽奖功能,你可以使用Vue来创建一个交互式的转盘组件。以下是一个简单的示例代码,可以帮助你开始: 1. 创建一个Vue组件,例如"LuckyDraw": ```javascript <template> <div> <div class="roulette-wheel"> <div v-for="(item, index) in items" :key="index" class="roulette-item"> {{ item }} </div> </div> <button @click="startSpinning">Start Spinning</button> <div v-if="winner" class="winner"> Congratulations! You won: {{ winner }} </div> </div> </template> <script> export default { data() { return { items: ['Prize 1', 'Prize 2', 'Prize 3', 'Prize 4', 'Prize 5'], // 奖项列表 winner: null // 中奖结果 }; }, methods: { startSpinning() { // 模拟抽奖过程,设置一个随机的中奖结果 const randomIndex = Math.floor(Math.random() * this.items.length); this.winner = this.items[randomIndex]; } } }; </script> <style scoped> .roulette-wheel { display: flex; justify-content: center; align-items: center; height: 300px; } .roulette-item { width: 100px; height: 100px; border: 1px solid #000; display: flex; justify-content: center; align-items: center; } button { margin-top: 20px; } .winner { margin-top: 20px; font-weight: bold; } </style> ``` 2. 在你的Vue应用中使用该组件: ```javascript <template> <div> <lucky-draw></lucky-draw> </div> </template> <script> import LuckyDraw from './LuckyDraw.vue'; export default { components: { LuckyDraw } }; </script> ``` 这样,你就可以使用Vue实现一个简单的转盘抽奖功能。当点击"Start Spinning"按钮时,会随机选取一个奖项作为中奖结果,并显示在页面上。你可以根据自己的需求进行样式和功能上的定制。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值