1.0.0 • Published 3 years ago

@kafan/vue-scratch-card v1.0.0

Weekly downloads
-
License
ISC
Repository
-
Last release
3 years ago

VueScratchCard 刮刮卡组件

介绍

插入刮刮卡组件

组件支持函数调用和组件调用

注意

本组件未将样式抽离,遂无法自动转换rem,同时,由于本组件未设置全局变量去实时计算刮刮卡的数量动态变更Id,遂提供了 canvasParentId 和 canvasId 两个dom元素Id配置,若你需要添加多个刮刮卡,为防止Id冲突,这俩配置项将对你有用~

组件调用

ScratchCard组件可添加props属性后直接插入使用,可自己在组件上添加自定义类名覆盖样式

import ScratchCard from '@kafan/vue-scratch-card'

// 全局注册
Vue.use(ScratchCard)
// 使用
<template>
    <v-scratchcard class="diyClassName" @scratchStart="start" @scratchEnd="end">
        <!-- <template v-slot:prize>
            <p style="position:absolute;width:100%;height:100%;paddingBottom:10px;color:#333">可选插槽插入自定义内容</p>
        </template> -->
    </v-scratchcard>
</template> 

<script>
export default {
    methods:{
        start(){
            //do something
        },
        end(){
            //do something
        }
    }
}
</script>

props

组件调用时, 支持传入以下 props

参数说明类型默认值备注
prize-name中奖文案String恭喜你,中奖啦-
width刮刮卡宽度String100%-
height刮刮卡高度String200px-
show-scratch-overlay是否显示刮刮卡刮刮涂层Booleantrue-
overlay-color纯色刮刮涂层String#e5e5e5-
font-on-overlay刮刮涂层文字String刮开查看奖品-
font-color涂层文字颜色String#bbb-
font-size涂层字体大小String20px-
overlay-pic图片刮刮涂层String#bbb配置后纯色涂层效果将无效
overlay-pic-repeat图片涂层是否循环渲染Stringrepeat['repeat','repeat-x','repeat-y','no-repeat']
scope涂层自动刮开临界值Number2N分之一
fontem画笔大小Number20-
canvas-parent-id刮刮卡父容器IDStringfgo-scratchcardcanvasparent同一页面多刮刮卡时使用,防止组件id冲突
canvas-id刮刮卡canvas元素IDStringfgo-scratchcard__canvas同一页面多刮刮卡时使用,防止组件id冲突

事件监听

组件调用时, 会触发以下事件,可供监听回调:

事件返回值说明备注
scratchStartresetis:重置函数开始刮卡时手指触控或鼠标按下
scratchEndresetis:重置函数刮卡结束时手指离开或鼠标点击抬起时
scratchAllresetis:重置函数刮光全部时刮刮卡被刮完时

插槽使用

本组件有具名插槽prize供使用,即刮刮涂层下要显示的内容

示例

    <template v-slot:prize>
        <p>可选插槽插入自定义内容</p>
    </template>
## 函数调用

```js

import ScratchCard from '@kafan/vue-scratch-card'

ScratchCard({
    canvasParentId:'ScratchCard_1',
    canvasId:'ScratchCard_1_canvas',
    targetContainer:document.querySelectorAll('.container')[0],
    slotScoped:()=>{
        return {
            //指定插槽名字
            "prize":{
                tag:'p', 
                data:{
                    style: {
                        position:'absolute', 
                        width:'100%', 
                        height:'100%', 
                        color: '#333', 
                        background:'blue',
                        paddingBottom: '10px'
                    }
                }, 
                text:'可选插槽插入自定义内容'
            }
        }
    },
    onScratchStart(){
        console.log('start');
    },
    onScratchEnd(){
        console.log('end');
    }
})

//可赋值到Vue原型上供全局使用
Vue.prototype.$ScratchCard = ScratchCard

options

函数调用时, 支持传入以下 options

参数说明类型默认值备注
prizeName中奖文案String恭喜你,中奖啦-
width刮刮卡宽度String100%-
height刮刮卡高度String200px-
showScratchOverlay是否显示刮刮卡刮刮涂层Booleantrue-
overlayColor纯色刮刮涂层String#e5e5e5-
fontOnOverlay刮刮涂层文字String刮开查看奖品-
fontColor涂层文字颜色String#bbb-
fontSize涂层字体大小String20px-
overlayPic图片刮刮涂层String#bbb配置后纯色涂层效果将无效
overlayPicRepeat图片涂层是否循环渲染Stringrepeat['repeat','repeat-x','repeat-y','no-repeat']
scope涂层自动刮开临界值Number2N分之一
fontem画笔大小Number20-
canvasParentId刮刮卡父容器IDStringfgo-scratchcardcanvasparent同一页面多刮刮卡时使用,防止组件id冲突
canvasId刮刮卡canvas元素IDStringfgo-scratchcard__canvas同一页面多刮刮卡时使用,防止组件id冲突
targetContainer插入的容器Objectdocument.body-
onScratchStart开始刮卡监听函数Function() => {}-
onScratchEnd结束刮卡回调函数Function() => {}-
onScratchAll刮刮卡刮完全部Function() => {}-
slotScoped插槽函数Function() => {}[() => Object{"name":VNode}]

API

函数调用时, 有以下API方法可以调用:

函数参数默认值说明备注
init--重置canvas蒙层-
reset{prizeName 或 slotScoped}{ slotScoped: ()=>{return {}},prizeName:'恭喜你,中奖了' }重置刮刮卡(包括底部中奖数据)选传一个,俩个都传插槽优先级高