您的当前位置:首页>全部文章>文章详情

【UniApp】uniapp 实现抽奖幸运大转盘功能

CrazyPanda发表于:2023-12-12 23:37:41浏览:427次TAG:

实现抽奖幸运大转盘功能。

效果图:

资源图片:

1.png

 如果奖品是支持动态的,需要自己重新改一下布局,逻辑不变。

代码:

<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包管理工具安
发表于:2023-12-23 浏览:330 TAG:
【UniApp】uniapp怎么关闭某个页面
在开发Uniapp应用的过程中,常常需要实现关闭某个页面的功能,本文将介绍如何在Uniapp中关闭指定页面。一、通过页面栈管理关闭页面在Uniapp应用中,页面的跳转是通过页面栈管理实现的。页面栈是一个数据结构,用来存储页面之间的跳转关系,每当跳转到一个新页面时,该页面会被添加到页面栈的顶部,当从该页面返回或关闭该页面时,该页面会被从页面栈中弹出。因此
发表于:2023-12-25 浏览:294 TAG:
【UniApp】利用uniapp实现拖拽排序功能
利用uniapp实现拖拽排序功能,需要具体代码示例随着移动端应用的普及和需求的增长,拖拽排序功能变得越来越重要。无论是在社交媒体应用中的朋友圈排序,还是在任务列表中的任务排序,都需要拖拽排序功能来提供用户更好的交互体验。利用uniapp框架,我们可以很方便地实现拖拽排序功能。首先,我们需要创建一个uniapp项目,并创建一个列表页面。在页面中,我们可以展示一个列表,每个列表项都可以通过拖拽来改变自己的顺序。下面是一个简单的代码示例:
发表于:2023-12-09 浏览:393 TAG:
【UniApp】uniapp怎么引入外部css文件
随着前端技术的持续发展,越来越多的开发者开始使用uni-app进行跨平台开发。而其中一个必不可少的功能就是引入外部的CSS文件,以便更好地定制页面的样式。那么,在uni-app中,我们应该如何引入外部的CSS文件呢?本篇文章将为您一一详细介绍。一、在Vue组件中引入外部CSS文件在uni-app中,我们可以使用Vue组件来构建页面。因此,我们可以直接在Vue组件中引入外部的CSS文件。首先,在项目的根目录下创建一个新的CSS文件,例如styles.css。接着,在需要引入CSS的Vue
发表于:2023-12-16 浏览:392 TAG:
【UniApp】uniapp中弹出层如何遮挡住uniapp中自带的tabbar
在 uniapp 中,如果你想要遮挡住自带的 tabbar,你可以使用 uniapp 自带的弹出层组件来实现。具体来说,你可以使用 uniapp 的 popup 组件来实现弹出层的效果。你可以在 popup 组件中包含你想要显示的内容,然后设置 popup 组件的 mask 属性为 true,这样就可以在弹出层中显示一个半透明的蒙层,来遮挡住底部的 tabbar。示例代码如下:&lt;template&gt; &nbsp;&nbsp;&nbsp;&nbsp;&lt;viewclass=&amp;quot
发表于:2023-12-13 浏览:345 TAG:
【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.
发表于:2023-12-21 浏览:356 TAG:
【UniApp】uniapp怎么设置边框样式
Uniapp是一款开源的跨平台移动端开发框架,可以帮助开发者快速实现应用程序的设计和实现。在开发中,设置边框是相当重要的一项工作,可以有效的提高程序的美观度和用户体验度。本文将使用Uniapp框架,介绍如何设置边框,让你的移动应用更加美观和有质感。一、基础设置设置边框可以使用CSS的border样式,常用的参数包括:宽度、线条类型、颜色等。具体使用方法如下:border:&nbsp;[width]&nbsp;[line-style]&nbsp;[color];其中最常用的参数包括宽度和
发表于:2023-12-17 浏览:344 TAG:
【UniApp】UniApp实现支付宝小程序的开发与上线流程解析
UniApp是一款基于Vue.js框架的跨平台开发工具,能够快速实现一次编码,多端发布的效果。作为开发者,我们可以利用UniApp来实现支付宝小程序的开发,同时本文将对支付宝小程序开发与上线流程进行详细解析,并提供相应的代码示例供参考。一、UniApp与支付宝小程序开发环境搭建1.确保已安装好Node.js环境,如未安装,可前往Node.js官网下载并安装最新版本。2.在命令行中执行以下命令,安装全局Vue-cli脚手架工具:npm&nbsp;install&nbsp;-g&nbsp;
发表于:2023-12-26 浏览:364 TAG:
【Uniapp】uniapp如何传递参数
一、通过URL传递参数URL是一种描述文件在计算机网络中位置的方式。在uniapp中,可以通过URL传递参数。在web开发中,可以通过query string来传递参数。在uniapp中有两种方式来进行URL传参:路由跳转和h5页面跳转:1.路由跳转uniapp中提供了一些路由相关的API,其中,uni.navigateTo和uni.redirectTo这两个API可以在跳转时携带参数。在跳转时,可以将参数以对象的形式传递给URL,并以query string(查询字符串)的形式来表示。如下所示
发表于:2024-03-26 浏览:324 TAG:
【UniApp】如何在uniapp中实现图片上传和预览
如何在uniapp中实现图片上传和预览在现代社交网络和电子商务应用中,图片上传和预览功能是非常常见的需求。本文将介绍如何在uniapp中实现图片上传和预览的功能,并给出具体的代码示例。一、图片上传功能的实现在uniapp项目中,首先需要在页面中添加一个图片上传组件,如下所示:&lt;template&gt; &nbsp;&nbsp;&lt;view&gt; &nbsp;&nbsp;&nbsp;&nbsp;&lt;image&nbsp;v-for=&quot;(item,&nbsp;in
发表于:2023-12-11 浏览:421 TAG: