欢迎来到代码驿站!

vue

当前位置:首页 > 网页前端 > vue

vue实现简单转盘抽奖功能

时间:2022-07-24 10:17:20|栏目:vue|点击:

本文实例为大家分享了vue实现简单转盘抽奖的具体代码,供大家参考,具体内容如下

样式请大家忽略(自己调),主要看JS代码实现,点击按钮后调用start方法,判断是否在转动状态,如果没转动则调用go方法,go方法主要封装了一次性定时器,是个递归函数,调用go函数后即可实现抽奖转盘的效果了,详细代码如下:

注释清晰哦

<template>
  <div class="home">
    <button @click="start">开始</button>
    <div
      class="grid"
      v-for="(item, i) in arr"
      :key="i"
      :class="[bg == i + 1 ? 'active' : null]"
    ></div>
  </div>
</template>

<script>

export default {
  name: "Home",
  data() {
    return {
      // 标记转动的位置
      bg: 1,
      // 循环的奖品数组
      arr: [1, 2, 3, 4, 5],
      // 是否正在转动的标记
      isSport: false,
      // 转动速度减慢
      reduce: 10,
      // 转动间隔时间
      startTime: 30,
      area:''
    };
  },
  methods: {
    start() {
      if (this.isSport == false) {
        this.isSport = true;
      } else {
        // 正在转动时点击按钮无效
        return;
      }
      // 模拟的设定转动的位置
      this.area= parseInt(Math.random()*4+1);
      this.go();
    },
    go() {
      setTimeout(() => {
        // 让转动速度减慢
        this.startTime = this.startTime + this.reduce;
        this.bg = (this.bg % 5) + 1;//这个%时求余的意识哦
        // 如果达到这个条件则停止跳动
        if (this.startTime >= 300 && this.bg == this.area) {
          // 标记是否转动状态
          this.isSport = false;
          // 重置转动间隔时间
          this.startTime = 30;
          return;
        }
        this.go();
      }, this.startTime);
    },
  },
};
</script>
<style scoped>
.grid {
  width: 50px;
  height: 50px;
  background: red;
  margin: 10px;
}
.active {
  background: blue;
}
</style>

上一篇:使用vue-touch报priority错误的解决

栏    目:vue

下一篇:没有了

本文标题:vue实现简单转盘抽奖功能

本文地址:http://www.codeinn.net/misctech/208791.html

推荐教程

广告投放 | 联系我们 | 版权申明

重要申明:本站所有的文章、图片、评论等,均由网友发表或上传并维护或收集自网络,属个人行为,与本站立场无关。

如果侵犯了您的权利,请与我们联系,我们将在24小时内进行处理、任何非本站因素导致的法律后果,本站均不负任何责任。

联系QQ:914707363 | 邮箱:codeinn#126.com(#换成@)

Copyright © 2020 代码驿站 版权所有