vue组件实现移动端九宫格转盘抽奖


Posted in Javascript onOctober 16, 2020

本文实例为大家分享了vue组件实现移动端九宫格转盘抽奖的具体代码,供大家参考,具体内容如下

vue-lucky-draw

移动端九宫格转盘抽奖vue组件,中奖的奖品数据由接口决定。

效果图

vue组件实现移动端九宫格转盘抽奖

抽奖

因为中奖的结果是后台返回的,所以要考虑转盘的最终停下来的位置必须是在对应后台返回结果的奖品的位置,也就是要模拟出这个中奖的过程(所以所谓的抽奖都是骗人的,嘿嘿)。先要写出移动的背景框对应的各个位置的css,然后动态切换class来使其呈现出转动效果。明白了过程就好写了。

中间的按钮用的是css3的animation,我这个奖品是合在了一张图上,你也可以分开成8张小图,那样需要写更多的样式。

// 抽奖
 handleStart() {
 if (this.isRuningLucky) {
  return Toast("正在抽奖中...");
 }
 if (isNaN(Number(this.initSpeed))) {
  return false;
 }
 this.speed = this.initSpeed;
 // 开始抽奖
 this.isRuningLucky = true;
 this.time = Date.now();
 this.drawAward();
 Toast("开始抽奖");
 },
 drawAward() {
 // 请求接口,模拟一个抽奖数据(假设请求时间为2s)
 setTimeout(() => {
  this.award = {
  id: "4"
  };
  console.log("返回的抽奖结果是", this.award);
 }, 2000);
 this.move();
 },
 move() {
 let timer = setTimeout(() => {
  this.current++;
  if (this.current > 7) {
  this.current = 0;
  }
  // 若抽中的奖品id存在,则开始减速转动
  if (this.award.id && (Date.now() - this.time) / 1000 > 2) {
  console.log("奖品出来了");
  this.speed += this.diff; // 转动减速
  
  // 若转动时间超过4秒,并且奖品id等于小格子的奖品id,则停下来
  if (
   (Date.now() - this.time) / 1000 > 4 &&
   this.award.id == this.awards[this.current].id
  ) {
   clearTimeout(timer);

   setTimeout(() => {
   this.isRuningLucky = false;
   // 这里写停下来要执行的操作(弹出奖品框)
   Toast(
    "您抽中的奖品是" + this.awards[this.current].name + ",奖品id是" + this.awards[this.current].id
   );
   }, 400);
   return;
  }

  // 若抽中的奖品不存在,则加速转动
  } else {
  if (this.speed >= 50) {
   this.speed -= this.diff; // 转动加速
  }
  }

  this.move();
 }, this.speed);
 },

号码滚动

使用无序列表将号码列表(正常是从接口获取)循环出来,通过设置定时以及控制transition的属性,来达到无缝连接的效果。如果样式(li高度)改变的话,需要对定时器时间进行调节(控制下一个显示的时间)。

// 中奖名单滚动
 scroll() {
 this.animate = true;
 let timer = setTimeout(() => {
  this.list.push(this.list[0]);
  this.list.shift();
  this.animate = false;
 }, 500);
 }

功能代码请移步到我的GitHub
可以clone项目 npm i , npm run dev,喜欢的话点个星吧_~

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
javascript右下角弹层及自动隐藏(自己编写)
Nov 20 Javascript
JS(JQuery)操作Array的相关方法介绍
Feb 11 Javascript
JQuery CheckBox(复选框)操作方法汇总
Apr 15 Javascript
jQuery验证表单格式的使用方法
Jan 10 Javascript
Angularjs使用指令做表单校验的方法
Mar 31 Javascript
微信小程序获取用户openId的实现方法
May 23 Javascript
Vue加载组件、动态加载组件的几种方式
Aug 31 Javascript
vue 使用外部JS与调用原生API操作示例
Dec 02 Javascript
js实现文字头像的生成代码
Mar 07 Javascript
详解关于Vue单元测试的几个坑
Apr 26 Javascript
Vue实现移动端拖拽交换位置
Jul 29 Javascript
vue实现移动端div拖动效果
Mar 03 Vue.js
Vue3.0的优化总结
Oct 16 #Javascript
JavaScript通如何过RGraph实现动态仪表盘
Oct 15 #Javascript
利用js实现简易红绿灯
Oct 15 #Javascript
关于Node.js中频繁修改代码重启服务器的问题
Oct 15 #Javascript
JS如何操作DOM基于表格动态展示数据
Oct 15 #Javascript
Node 使用express-http-proxy 做api网关的实现
Oct 15 #Javascript
springboot+vue+对接支付宝接口+二维码扫描支付功能(沙箱环境)
Oct 15 #Javascript
You might like
PHP的类 功能齐全的发送邮件类
2006/10/09 PHP
jQuery 瀑布流 浮动布局(一)(延迟AJAX加载图片)
2012/05/23 Javascript
jQuery表格行上移下移和置顶的实现方法
2015/10/08 Javascript
详解javascript遍历方式
2015/11/11 Javascript
创建自己的jquery表格插件
2015/11/25 Javascript
jQuery简单实现中间浮窗效果
2016/09/04 Javascript
React-Native做一个文本输入框组件的实现代码
2017/08/10 Javascript
详解使用React进行组件库开发
2018/02/06 Javascript
详解webpack运行Babel教程
2018/06/13 Javascript
初学node.js中实现删除用户路由
2019/05/27 Javascript
vue 使用axios 数据请求第三方插件的使用教程详解
2019/07/05 Javascript
解决layer.confirm选择完之后消息框不消失的问题
2019/09/16 Javascript
vue之a-table中实现清空选中的数据
2019/11/07 Javascript
JavaScript实现简单的计算器
2020/01/16 Javascript
JS pushlet XMLAdapter适配器用法案例解析
2020/10/16 Javascript
JavaScript枚举选择jquery插件代码实例
2020/11/17 jQuery
python训练数据时打乱训练数据与标签的两种方法小结
2018/11/08 Python
使用APScheduler3.0.1 实现定时任务的方法
2019/07/22 Python
python 判断三个数字中的最大值实例代码
2019/07/24 Python
python3的数据类型及数据类型转换实例详解
2019/08/20 Python
python的等深分箱实例
2019/11/22 Python
Python MySQLdb 执行sql语句时的参数传递方式
2020/03/04 Python
CSS3的新特性介绍
2008/10/31 HTML / CSS
世界闻名的衬衫制造商:Savile Row Company
2018/07/30 全球购物
主键(Primary Key)约束和唯一性(UNIQUE)约束的区别
2013/05/29 面试题
房地产销售大学生自我评价分享
2013/11/11 职场文书
致800米运动员广播稿
2014/02/16 职场文书
银行优秀员工事迹材料
2014/05/29 职场文书
小学综合实践活动总结
2014/07/07 职场文书
2014幼儿园保育员工作总结
2014/11/10 职场文书
个人先进事迹材料范文
2014/12/29 职场文书
2016中秋节晚会开场白
2015/11/26 职场文书
公司年会主持词范文!
2019/05/07 职场文书
react中props 的使用及进行限制的方法
2021/04/28 Javascript
JavaScript高级程序设计之基本引用类型
2021/11/17 Javascript
Tomcat安装使用及部署Web项目的3种方法汇总
2022/08/14 Servers