【UniApp】uniapp 实现抽奖幸运大转盘功能
CrazyPanda发表于:2023-12-12 23:37:41浏览:427次
实现抽奖幸运大转盘功能。
效果图:
资源图片:
如果奖品是支持动态的,需要自己重新改一下布局,逻辑不变。
代码:
<template> <view class="relative"> <image :src="require('@/static/newPerson/bj.png')" mode="widthFix" class="" style="width: 100%;"></image> <view class="zhuan flexCenter"> <image :src="require('@/static/newPerson/zhuan.png')" mode="aspectFill" class="zhuanBox" :class="{'rotate':isRotate}" :style="{transform:`rotate(${angle}deg)`}" style="width:470rpx;height:470rpx;"></image> <image :src="require('@/static/newPerson/an.png')" mode="widthFix" @click="rotate()" class="an " style="width:218rpx;height:218rpx;"></image> </view> <!-- <view>1. 注册或未参与过此活动的用户</view> <view>2. 红包奖励直接到用户账号,可以用于商城购物</view> <view>3. 参与活动时,需要分享给好友一起参与</view> --> </view> </template> <script> //生成随机数(下面也有一个) function rand(min, max) { return parseInt(Math.random() * (max - min + 1) + min); } export default { data() { return { isRotate:false,//是否旋转 prizeList:['积分','新人红包','精选好券','谢谢参与','积分','新人红包','惊喜礼包','新人红包'],//奖品列表,决定旋转角度 angle:0,//旋转角度 } }, methods: { rotate(){ if(this.isRotate)return; this.angle=0; setTimeout(()=>{ let len=this.prizeList.length; let num=rand(0,len-1); //随机奖品,可以改成后端返回的。 // let num=7; //随机奖品,可以改成后端返回的。 let prize=this.prizeList[num]; // let angle=360/8*num+rand(0,44);//不排除转到中间线 let angle=360/len*num+rand(4,40);//排除转到中间线 this.angle=(8*360+angle);//旋转圈数8 + 奖品角度 console.log('奖品:',prize,num,angle,this.angle,len) this.isRotate=true; setTimeout(()=>{ this.isRotate=false; uni.showToast({ title:prize, icon:'none', duration:3000 }) },5000) },300) } } } </script> <style> .zhuan{ position:absolute; /* top:50%; */ top:46.5%; left:50%; transform: translate(-50%,-50%); } .zhuanBox{ position: absolute; width: 100%; height: 100%; } .an{ position: relative; /* position:absolute; top:50%; left:50%; transform: translate(-50%,-50%); */ transform: rotate(0deg); } .an:active{ transform: scale(0.95); } .rotate{ /* animation: rotate 5s infinite linear; */ /* animation-timing-function: ease-in-out; */ /* animation-timing-function: cubic-bezier(0.42, 0, 0.58, 0.9); */ /* animation-timing-function: cubic-bezier(0.25,0.1,0.25,1); */ transform: rotate(3800deg); transition: transform 5s ease; } @keyframes rotate { 0%{ transform: rotate(0deg); } 100%{ /* transform: rotate(360deg); */ transform: rotate(3800deg); } } </style>
猜你喜欢
- 【UniApp】利用uniapp实现表格导出功能
- 利用uniapp实现表格导出功能随着移动互联网的快速发展,手机已经成为人们日常生活不可或缺的工具之一。而作为开发者,我们也需要不断提供更多的功能和便利性满足用户的需求。其中,表格导出功能是一个常见的需求,用户希望能够将数据导出为Excel或CSV文件,以便于在电脑上进行进一步处理。在uniapp中,通过一些组件和第三方库的运用,我们可以轻松地实现表格导出功能。以下将给出具体的代码示例,帮助开发者快速上手。引入xlsx库在uniapp项目的main.js文件中,可以通过npm包管理工具安
- 【UniApp】uniapp怎么关闭某个页面
- 在开发Uniapp应用的过程中,常常需要实现关闭某个页面的功能,本文将介绍如何在Uniapp中关闭指定页面。一、通过页面栈管理关闭页面在Uniapp应用中,页面的跳转是通过页面栈管理实现的。页面栈是一个数据结构,用来存储页面之间的跳转关系,每当跳转到一个新页面时,该页面会被添加到页面栈的顶部,当从该页面返回或关闭该页面时,该页面会被从页面栈中弹出。因此
- 【UniApp】利用uniapp实现拖拽排序功能
- 利用uniapp实现拖拽排序功能,需要具体代码示例随着移动端应用的普及和需求的增长,拖拽排序功能变得越来越重要。无论是在社交媒体应用中的朋友圈排序,还是在任务列表中的任务排序,都需要拖拽排序功能来提供用户更好的交互体验。利用uniapp框架,我们可以很方便地实现拖拽排序功能。首先,我们需要创建一个uniapp项目,并创建一个列表页面。在页面中,我们可以展示一个列表,每个列表项都可以通过拖拽来改变自己的顺序。下面是一个简单的代码示例:
- 【UniApp】uniapp怎么引入外部css文件
- 随着前端技术的持续发展,越来越多的开发者开始使用uni-app进行跨平台开发。而其中一个必不可少的功能就是引入外部的CSS文件,以便更好地定制页面的样式。那么,在uni-app中,我们应该如何引入外部的CSS文件呢?本篇文章将为您一一详细介绍。一、在Vue组件中引入外部CSS文件在uni-app中,我们可以使用Vue组件来构建页面。因此,我们可以直接在Vue组件中引入外部的CSS文件。首先,在项目的根目录下创建一个新的CSS文件,例如styles.css。接着,在需要引入CSS的Vue
- 【UniApp】uniapp中弹出层如何遮挡住uniapp中自带的tabbar
- 在 uniapp 中,如果你想要遮挡住自带的 tabbar,你可以使用 uniapp 自带的弹出层组件来实现。具体来说,你可以使用 uniapp 的 popup 组件来实现弹出层的效果。你可以在 popup 组件中包含你想要显示的内容,然后设置 popup 组件的 mask 属性为 true,这样就可以在弹出层中显示一个半透明的蒙层,来遮挡住底部的 tabbar。示例代码如下:<template> <viewclass=&quot
- 【UniApp】最新使用uniapp本地打包APP安卓,已排坑
- uniapp打包IOS!!!1. 生成本地打包资源 2. 下载Android Studio和App离线SDK导航路径:https://nativesupport.dcloud.net.cn/AppDocs/usesdk/android下载的Android 离线SDK与本地开发工具版本对应 3. 解压得到的目录如下4. 使用Android Studio打开Android 离线SDK解压目录里面这个文件夹,这个是示例项目,我们只需要更改这个项目的一些配置,其他配置HBuilderX已经配置好了5.
- 【UniApp】uniapp怎么设置边框样式
- Uniapp是一款开源的跨平台移动端开发框架,可以帮助开发者快速实现应用程序的设计和实现。在开发中,设置边框是相当重要的一项工作,可以有效的提高程序的美观度和用户体验度。本文将使用Uniapp框架,介绍如何设置边框,让你的移动应用更加美观和有质感。一、基础设置设置边框可以使用CSS的border样式,常用的参数包括:宽度、线条类型、颜色等。具体使用方法如下:border: [width] [line-style] [color];其中最常用的参数包括宽度和
- 【UniApp】UniApp实现支付宝小程序的开发与上线流程解析
- UniApp是一款基于Vue.js框架的跨平台开发工具,能够快速实现一次编码,多端发布的效果。作为开发者,我们可以利用UniApp来实现支付宝小程序的开发,同时本文将对支付宝小程序开发与上线流程进行详细解析,并提供相应的代码示例供参考。一、UniApp与支付宝小程序开发环境搭建1.确保已安装好Node.js环境,如未安装,可前往Node.js官网下载并安装最新版本。2.在命令行中执行以下命令,安装全局Vue-cli脚手架工具:npm install -g
栏目分类全部>