原生js实现刮刮奖的功能

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <style>
        *{
            margin:0;
            padding:0;
        }
        #top{ 
            background:transparent;
        }
        #bottom{
            position:absolute;
            top:0;
            width:500px;
            height:200px;
            z-index:-1;
            background:wheat;
        }
    </style>
</head>
<body>
    <canvas id="bottom" width="500" height="200"></canvas>
    <canvas id="top" width="500" height="200"></canvas>
    <script>
        var obj = {
            findEl: function(name){
               return document.querySelector(name);
            },
            init() {
                let canvasBottom = this.findEl('#bottom');
                let canvasTop = this.findEl("#top");
                let ctx1 = canvasBottom.getContext("2d");
                let ctx2 = canvasTop.getContext("2d");
                let tag = false; //为true时表示鼠标按下,开始清除上面的蒙板,鼠标抬起设置为false,表示操作结束
                ctx2.fillStyle = "red";
                ctx2.fillRect(0,0,canvasBottom.clientWidth,canvasBottom.clientHeight);
                ctx1.font="12px 微软雅黑";
                // 设置画布中文字居中显示,需要设置textAlign为center,还需要将fillText的第二个参数设置为画布容器的一半
                ctx1.textAlign = "center";
                ctx1.fillText("恭喜您🎉,中奖100000000000000元",250,50);
                canvasTop.addEventListener("mousedown",function(e){
                    ctx2.beginPath()
                    tag = true
                })
                canvasTop.addEventListener("mousemove",function(e){
                    if (!tag) {
                      return
                    }
                    ctx2.clearRect(e.offsetX,e.offsetY,100,100)
                })
                canvasTop.addEventListener("mouseup",function(e){
                    ctx2.closePath()
                    tag = false
                })
            }
        }
        obj.init()
        // 实现思路:
        //1.准备两个画布,一个用于放中奖信息,另一个是上面的遮盖蒙板
        //2.将中奖信息的画布放置于蒙板层下
        //3.将蒙板的背景色设置成透明,然后将当前蒙板填充上别的颜色
        //4.监听从鼠标按下到鼠标抬起这个过程从而将蒙板上填充的颜色清除掉
    </script>
</body>
</html>
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值