当前位置: 首页 > news >正文

在 Vue 3 中实现刮刮乐抽奖

🎉 在 Vue 3 中实现刮刮乐抽奖

当项目中需要做一些活动互动页时,需要实现刮刮乐,请看如下效果:

这里感谢github用户Choicc分享的组件,具体可点击传送门查看

1. 引入组件

将/src/components下ScratchCard.vue复制到自己的项目中,
在需要使用组件的页面中引入

<script setup>
import StratchCard from "./components/StratchCard.vue";
const scratchStart = ()=>{console.log('scratchStart')
}
const scratchEnd = ()=>{console.log('scratchEnd')
}
const scratchAll = ()=>{console.log('scratchAll')
}
</script><template><StratchCardmaskColor="skyblue"fillStyle="red"font="30px 微软雅黑"text="刮一刮文字":radius="5":scratchRadius="20":scratchPercent="80"@scratchStart="scratchStart"@scratchEnd="scratchEnd"@scratchAll="scratchAll"><!-- 自定义奖品内容插槽 --><div class="prize">我的奖品</div></StratchCard>
</template>
<style scoped>
* {margin: 0;padding: 0;
}
.prize {width: 80vw;height: 45vw;display: flex;align-items: center;justify-content: center;background: lightcoral;
}
</style>

⬇️ 对应的参数说明

参数名说明类型默认值备注
maskColor刮奖图层背景颜色String'#cccccc'imageUrl 非空时会被覆盖
text刮奖图层文字String'刮一刮'imageUrl 非空时会被覆盖
fillStyle刮奖图层文字颜色String'#000000'-
font刮奖图层字体String'18px Arial'-
imageUrl刮奖图层使用图片String-会覆盖掉刮奖图层文字
radius刮奖图层圆角Number0-
scratchRadius刮奖半径Number10刮奖时每次可刮的区域半径
scratchPercent刮开占比Number80刮开面积达到该百分比后自动移除刮奖图层

⬇️ events事件如下

事件名说明备注
scratchStart开始刮卡时手指触控或鼠标按下时触发
scratchEnd刮卡结束时手指离开或鼠标抬起时触发
scratchAll刮光全部时刮刮卡被刮完时触发

⬇️ methods

方法名说明备注
reset重置刮刮乐stratchCardRef.value?.reset()

我在基础上加了两个参数disableddefaultRemove

参数名说明类型默认值备注
disabled禁用刮奖Booleanfalse
defaultRemove是否显示图层Booleanfalse

像我上面实现的效果来说,默认是没有蒙层的,需要点击开始洗牌后才会出现蒙层,这个时候需要加上defaultRemove来控制蒙层的显示隐藏,
当开始刮其中一个刮刮乐不能再刮其他的,或者说要刮完某一个才能继续下一个,这个时候需要使用disabled来禁用插件

http://www.xdnf.cn/news/382015.html

相关文章:

  • 进阶 DFS 学习笔记
  • 地学领域中常见的数据类型总结
  • 游戏服务器出现卡顿该怎么处理?
  • 学习黑客5 分钟深入浅出理解Linux Logs [特殊字符]
  • 【C++】string类
  • leetcode0829. 连续整数求和-hard
  • CountDownLatch 并发编程中的同步利器
  • JavaScript 内存管理与垃圾回收机制
  • DB4S:一个开源跨平台的SQLite数据库管理工具
  • BufferAttribute
  • vs查看dmp崩溃信息
  • Python递归函数
  • 【TypeScript】类型别名(Type Alias)与接口类型(Interface)
  • Redisson 看门狗机制
  • Unity3D仿星露谷物语开发41之创建池管理器
  • 记录一次window2012r2安装配置oracle11g的过程-出现的错误以及解决方法
  • 谷歌学术链接
  • OSPF综合应用
  • Nginx高级配置
  • 解锁HBase:大数据存储的神秘之门
  • Linux:线程同步与互斥
  • 《Python星球日记》 第52天:反向传播与优化器
  • MySQL 数据类型全面指南:从理论到实践
  • HCIP笔记
  • Veins同时打开SUMO和OMNeT++的GUI界面
  • 基于Arduino Nano的DIY示波器
  • 2505d,d的借用检查器
  • 基于Spring Boot + Vue的母婴商城系统( 前后端分离)
  • InnoDB结构与表空间文件页的详解
  • 前端性能优化