Vue实现移动端刮刮奖

1,289 阅读2分钟

一起养成写作习惯!这是我参与「掘金日新计划 · 4 月更文挑战」的第三天,点击查看活动详情


前言

由于笔者项目的需要,必须要开发一个刮刮奖抽奖系统,但苦恼于如何实现。首先,在网上查询时看到了canvas标签的方法,但比较晦涩难懂。后来,在网上寻找到了一个vue的刮刮奖组件,相对比较好用,笔者在此教大家来安装使用。

原理

在介绍这个组件之前,先来简单描述一下刮刮奖实现的原理是什么。首先,我们先将其分为遮罩层和奖品层。原理就是像用橡皮擦擦掉遮罩层,把奖品层展示在下面。

实现

首先,引入组件

1、使用npm下载安装插件

npm install lzy-scratch-card --save

2、在需要使用的页面引入组件

//在需要的组件局部引入
import scratchCard from 'lzy-scratch-card'components: {
    scratchCard
},

3.组件中使用

<template>
  <scratch-card
            elementId="scratch"
            width="246px"
            height="102px"
            :moveRadius="15"
            :ratio="0.7"
            :startCallback="startCallback"
            :clearCallback="clearCallbackUp"
            :coverImg="require('../assets/overlay.png')"
            coverColor="#ff0000"
            :result="result"
            style="
              position: absolute;
              top: 51%;
              left: 50%;
              transform: translate(-50%, -50%);
            "
          >
          </scratch-card>
</template>
​
<script>
import scratchCard from "lzy-scratch-card";
export default {
   name:"guaguajiang",
   components:{
       scratchCard
   },
   data () {
       return {
           prize,
           result:
        `<div style=" background-color: #FFE2B7;width: 246px;height: 102px; border-radius: 5px;text-align: center;"><div style="font-size: 17px;color:#FE3555;font-weight: Bold;padding-top: 24px;">—— 恭喜获得 ——</div><div style="  font-size: 14px;color: #333333;line-height: 21px;margin-top: 14px;">${prize}<span style="color:#FE3555">扫码领5代金券</span></div></div>`, 
           //遮罩层下面的页面(html)注:以html标签字符串的样式写
       }
   },
   methods: {
     //开始刮时的回调函数
    startCallback() {},
     //刮刮乐刮层全部清除后的回调函数
    clearCallback() {},
   }
}
</script>

4.实现效果(奖品层也可以是图片)

puk28-a28s1.gif

5.参数及其方法说明

参数说明类型默认值
elementId组件最外层DOM的id属性,区分单个页面多次使用刮刮乐StringelementId
width组件宽度String254px
height组件高度String134px
moveRadius刮卡范围Number15
ratio要求刮掉的面积占比,达到这个占比后,将会自动把其余区域清除Number0.8
coverColor刮刮乐遮罩颜色String#fff
coverImg刮刮乐遮罩图片string(网络图片,设置这个后,coverColor就不起作用了)-
result中奖的结果string(最好用html,用的时候更好控制结果显示-
方法说明类型
startCallback开始刮时的回调函数function
clearCallback刮刮乐刮层全部清除后的回调函数function

总结

以上就是通过组件实现刮刮奖的方式,但通过组件终究没有理解其实现的原理,下期笔者将尝试用传统方式(canvas)来实现