用微信小程序做一个抽奖活动


一轮是6个红包,需要在第三轮听下转动,初始一个随机数在13-18之间随机来进行抽奖

//页面的渲染
<view class="container"><!-- 抽奖区域 --><view class="box"><view class="list-content"><block wx:for="{{prizeList}}" wx:key="id"><view class="list"><view class="list_t">//当转动开始后图片跟随当前的下标进行修改<image src="{{drawIndex==item.index?changeImg:listImg}}" mode="aspectFit"></image></view><view class="list_b">{{item.prizeName}}</view></view></block></view></view><button bindtap="startDraw" style="background: #e66013;color: #fff;">抽奖</button><!-- 奖品弹窗 --><view class="award-display" wx:if="{{showModel}}" bindtap="closePopup"><view class="award-image"><image src="{{changeImg}}" mode="aspectFit"></image><view class="luck-text" style="color: #fff;">{{awardName}}</view></view></view>
</view>

页面的js

// 获取应用实例
let timer;
let drawIndex = 0; //抽奖过程下标Component({/*** 组件的初始数据*/data: {// 奖品参数信息prizeList: [{ index: 1, prizeName: '谢谢参与' },{ index: 2, prizeName: '积分 x20' },{ index: 3, prizeName: '积分 x5' },{ index: 6, prizeName: '谢谢参与' },{ index: 5, prizeName: '商务笔记本' },{ index: 4, prizeName: '积分 x2' }],listImg:'https://img-blog.csdnimg.cn/9ec6866452694effb07ac91961cddd91.png',changeImg:'https://img-blog.csdnimg.cn/10c950ac1d6c498fa3ffb8353e4c914c.png',drawIndex: null, //抽奖过程random:null,    //随机数prizeName: null, //抽奖结果下标对应的奖品名称showModel: false,  // 是否显示奖品弹窗,默认false不显示awardName:'',  // 弹窗显示的奖品名time:0      },/*** 组件的方法列表*/methods: {//抽奖操作startDraw() {var that =this;this.againBtn();this.data.drawIndex=0;this.data.time=0;clearInterval(timer);timer = setInterval(()=>{this.changePrize()}, 150);// 随机将品池var random = Math.floor(Math.random() *(5)+13); //在13-18之间取随机数,因为是6个一轮所以第三轮刚好出结果this.setData({random:random})setTimeout(() => {clearInterval(timer);timer = setInterval(() => {that.changePrize()}, 500);}, 1800)},//奖品切换changePrize() {drawIndex++;var time =this.data.time;time++;drawIndex = drawIndex > 6 ? 1 : drawIndex;this.setData({time:time,drawIndex: drawIndex});if (this.data.random == this.data.time) {clearInterval(timer);// 匹配抽到的数据var data= this.data.prizeList.filter(function(item){return item.index == drawIndex; })this.setData({showModel: true,awardName: data[0].prizeName});}},//点击再抽一次按钮againBtn() {drawIndex = 0; //抽奖过程KEYthis.setData({drawIndex: null, // 清空当前商品下标random:null,awardName: '' // 清空奖品的展示名称});},// 关闭弹窗closePopup(){this.setData({showModel: false})}}
})

抽奖的样式

.list{text-align: center;margin-bottom: 100rpx;
}
.list_t>image{width: 200rpx;height: 100rpx;
}
.list-content{display: flex;align-items: center;justify-content: space-between;flex-wrap: wrap;padding: 20rpx;
}
.award-display{position: fixed;left: 0;right: 0;top: 0;bottom: 0;background: rgba(0, 0, 0, .7);
}
.award-image{text-align: center;color: #fff;margin: 100rpx auto;
}
.award-image>image{width: 300rpx;height: 300rpx;margin-bottom: 30rpx;
}

一个简单的抽奖就完成了

微信小程序六宫格抽奖相关推荐

  1. 微信小程序多宫格抽奖

    最近闲来无事,做了一个多宫格抽奖的例子,有什么需要改进或者错误的地方,请留言,谢谢 首先看效果 思路是先让其转动2圈多,然后再进行抽奖,格子运动用的是setTimeout,让其运行的时间间隔不一样,然 ...

  2. [微信小程序专题] 宫格导航设计

    欢迎点击「算法与编程之美」↑关注我们! 本文首发于微信公众号:"算法与编程之美",欢迎关注,及时了解更多此系列文章. 问题 在很多APP软件,都会设置宫格导航,那么是如何设计的呢? ...

  3. 微信小程序 9宫格翻牌动画

    9宫格翻牌需求: 1.进来时平铺9个格子显示 2.点击开始抽奖时洗牌动作 3.洗完牌后呈现9个都是未翻牌的状态 4.点击任意一个牌子,有翻转的动作 5.翻转结束后出现中奖的弹窗 555,当时真的一点一 ...

  4. vue 图片宫格_微信小程序多宫格/九宫格抽奖 基于vue来写

    /*整体布局采用定位实现 gameBox:父盒子,最外层背景图 bg1:灰色灯 bg2:点击开始按钮后,白色灯出现,同时要每个500s同bg1做切换隐藏显示 start:按钮样式 item1-8:通过 ...

  5. 微信小程序实现大转盘抽奖----踩坑之路

    微信小程序实现大转盘抽奖----踩坑之路 需求:现在有一个小程序抽奖页面如下,此类抽奖方式为大转盘 思路:由服务端获取抽奖次数和奖品,根据服务端的中奖概率来决定是否中奖,最后利用小程序动画将转盘转起来 ...

  6. 微信小程序六(数据请求 表单的创建 提交 与接收)

    好了 开始正题了,本节小小研究了下 微信小程序的表单创建与提交 先看看效果 1. 表单页面 <view id="adduser"><form bindsubmit ...

  7. 微信小程序制作一个老虎机抽奖动画

    可以把随机数换成后端传递的数据控制抽奖结果 效果图: 动图有点卡- wxml <view class="content relative"><view class ...

  8. 微信小程序实现单元格编辑功能,并支持计算合计

    最近有个客户想做下单系统,要求像电脑端一样 ,实现在多维的录入功能,客户主要是人事鞋批发的,要求颜色.尺码对应订购数量,可以计算横向和纵向合计,话不多说,直接上代码. 效果如下: 如上图,除了第一行和 ...

  9. 微信小程序合并单元格

    https://blog.csdn.net/weixin_34355715/article/details/87962188

最新文章

  1. 深度解析Google Java 编程风格指南
  2. 使用xmlhttp结合asp,实现网页的异步调用_asp实例
  3. 利用python爬虫(案例7)--X讯招聘的小职位们
  4. matlab 点云特征_基于点云的3D障碍物检测
  5. edger多组差异性分析_简单使用DESeq2/EdgeR做差异分析
  6. ResourceDictionary主题资源替换(二) :编译期间,替换主题资源
  7. 零基础学前端可行吗?要如何学习呢?
  8. Nginx配置——禁止指定user_agent
  9. 混沌工程:Netflix系统稳定性之道
  10. 动态修改log4net设置
  11. ArcGIS操作小技巧(三)之License service不能启动的解决方法
  12. linux内核类型lagency,使用u盘安装linux(manjaro)时Grub报错
  13. 分享卸载multisim软件的工具NI卸载工具
  14. 2021产业互联网白皮书 附下载
  15. 思科ASA防火墙接口区域基本信息
  16. SD敢达服务器源码,SD敢达全机体代码.doc
  17. 深度学习CUDA最新最佳安装教程
  18. java编写singleton程序_java – 在Singleton实现中初始化按需成语与简单静态初始化程序...
  19. 《孤独的青春创造不孤独的人生》
  20. RPG Maker MV 计时器的用法

热门文章

  1. 论文分享:「FED BN」使用LOCAL BATCH NORMALIZATION方法解决Non-iid问题
  2. dnf服务器宕机维护公告,绝地求生停机维护公告
  3. 【离散数学及其应用】2018-2019学年春夏学期期末考试 习题详解
  4. mysql主从同步 添加字段_MySQL主从同步配置
  5. 基于SQLiteDatabase的记事本例子
  6. 顺序二叉树---实现数组的二叉树前序遍历输出
  7. linux 构建ios_为iOS构建本机编辑器
  8. android string.trim,String.Trim 方法 (System) | Microsoft Docs
  9. html浏览器宽度,JavaScript获取浏览器、元素、屏幕的宽高尺寸
  10. 索引创建、删除的sql语句