uniapp小程序九宫格抽奖

定义好奖品下标,计时器开始抽奖,请求接口,出现中奖奖品之后,获取中奖商品对应的奖品下标,再次计时器判断当前移动的小标是否为中奖商品的下标,并且是否转到3圈(防止转1圈就停止),如果时就清除两次计时器。

当前代码封装为九宫格的组件;

vue代码: 





scss代码:


.page{
	width: 750rpx;
	height: 100vh;
	position: relative;
}

.bg{
	width: 750rpx;
	height: 100vh;
}

.content{
	width: 750rpx;
	min-height: 100vh;
	height: 1448rpx;
	position: absolute;
	top: 0;
	left: 0;
}


.logo{
	height: 60rpx;
	display: flex;
	justify-content: center;
	margin-top: 90rpx;
	
	image{
		height: 60rpx;
	}
}

.box{
	width: 680rpx;
	margin: 0 auto;
	margin-top: 330rpx;
	
	.awards{
		width: 525rpx;
		height: 525rpx;
		margin: 0 auto;
		display: flex;
		flex-wrap: wrap;
		justify-content: space-between;
		align-content:space-between;
		
		.awardsItem{
			width: 161rpx;
			height: 161rpx;
			background: linear-gradient(132deg, #FFCEA4 0%, #FFE6CB 100%);
			box-shadow: 0rpx 6rpx 0rpx 0rpx #E98F5D;
			border-radius: 15rpx;
			display: flex;
			flex-direction: column;
			align-items: center;
			justify-content: center;
			cursor: pointer;
			
			image{
				width: 132rpx;
				height: 132rpx;
				border-radius: 12rpx;
			}
				
			.play{
				display: flex;
				flex-direction: column;
				align-items: center;
				justify-content: center;
				.go{
					font-size: 68rpx;
					font-family: PingFangSC-Semibold, PingFang SC;
					font-weight: 600;
					color: #A10B14;
				}
				
				.count{
					font-size: 24rpx;
					font-family: PingFangSC-Regular, PingFang SC;
					font-weight: 400;
					color: #A10B14;
				}
			}
			
		}
		.awardsActive{
			background: linear-gradient(132deg, #FFECBB 0%, #FFB100 100%);
			box-shadow: 0rpx 6rpx 0rpx 0rpx #E38800, inset 0rpx 2rpx 6rpx 0rpx rgba(255,255,255,0.65), inset 0rpx -2rpx 6rpx 0rpx rgba(255,255,255,0.3);
		}
	}
	
	.notification{
		height: 40rpx;
		margin-top: 226rpx;
		display: flex;
		justify-content: center;
		align-items: center;
		
		image{
			height: 32rpx;
			margin-right: 16rpx;
		}
		text{
			font-size: 28rpx;
			font-family: PingFangSC-Regular, PingFang SC;
			font-weight: 400;
			color: #FF8D3B;
		}
	}
	
	.btns{
		display: flex;
		align-items: center;
		justify-content: space-between;
		margin-top: 38rpx;
	}
	
	.btn{
		width: 332rpx;
		height: 110rpx;
		image{
			width: 100%;
			height: 100%;
		}
	}
	
}

.win{
	width: 750rpx;
	height: 100vh;
	background: rgba(0, 0, 0, 0.8);
	position: fixed;
	top: 0;
	left: 0;
	z-index: 2;
	display: flex;
	flex-direction: column;
	align-items: center;
	justify-content: center;
}

.win_box{
	width: 662rpx;
	height: 60%;
	padding: 40rpx;
	box-sizing: border-box;
	border-radius: 24rpx;
}

.win_box_bg{
	background: #FFCE2B;
}

.bg3{
	background: #C3E5FE;
}

.iconcolseIcon{
	font-size: 58rpx;
	margin-top: 98rpx;
}

.win_box1{
	width: 630rpx;
	height: 922rpx;
	position: relative;
}

.win_bg{
	width: 630rpx;
	height: 922rpx;
}

.win_content{
	width: 630rpx;
	height: 922rpx;
	position: absolute;
	left: 0;
	top: 0;
	display: flex;
	flex-direction: column;
	align-items: center;
}

.win_tips{
	font-size: 48rpx;
	font-family: SourceHanSansSC-Medium, SourceHanSansSC;
	font-weight: bold;
	margin-top: 290rpx;
}

.win_title{
	font-size: 48rpx;
	font-family: SourceHanSansSC-Medium, SourceHanSansSC;
	font-weight: bold;
	color: #FE6631;
	margin: 170rpx 0;
}

.win_btn{
	width: 280rpx;
	height: 80rpx;
	line-height: 80rpx;
	text-align: center;
	background: #FFE047;
	border-radius: 46rpx;
	font-size: 32rpx;
	font-family: SourceHanSansSC-Medium, SourceHanSansSC;
	font-weight: bold;
	color: #13112C;
}

.win_tit{
	font-size: 48rpx;
	font-family: SourceHanSansSC-Medium, SourceHanSansSC;
	font-weight: bold;
	margin-bottom: 32rpx;
}

.win_box2{
	width: 662rpx;
	height: 900rpx;
	background: #FFFFFF;
	border-radius: 24rpx;
	display: flex;
	flex-direction: column;
}

.items{
	width: 662rpx;
	height: 108rpx;
	background: #C3E5FE;
	border-radius: 24rpx 24rpx 0rpx 0rpx;
	display: flex;
	align-items: center;
	flex-shrink:0
}

.left,.right{
	width: 50%;
	text-align: center;
	font-family: SourceHanSansSC-Medium, SourceHanSansSC;
	font-weight: bold;
}

.i_title{
	font-size: 36rpx;
}

.list{
	height: 792rpx;
	padding-bottom: 20rpx;
	overflow: hidden;
}

.item{
	width: 662rpx;
	height: 88rpx;
	display: flex;
	align-items: center;
	justify-content: space-around;
}

.item:nth-child(2n){
	background-color: #F4F4F4;
}

.r_btn{
	width: 160rpx;
	height: 60rpx;
	line-height: 60rpx;
	text-align: center;
	background: #FFC659;
	border-radius: 46rpx;
	font-family: SourceHanSansSC-Medium, SourceHanSansSC;
	font-weight: bold;
	font-size: 32rpx;
	margin:0 auto;
}

效果:

uniapp小程序九宫格抽奖_第1张图片

你可能感兴趣的:(前端,vue.js,javascript)