用H5实现刮奖样式

效果如下:

![4C2Y`_$MP(PDU4_X[FQE@K.png

话不多说直接上代码:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Document</title>
</head>
<body>
   <div class="msg">
      <button onclick="window.location.reload()">再试一次</button>
   </div>
   <canvas class="canvas"></canvas>
</body>
<script type="text/javascript">
    var bodystyle = document.body.style;  
    bodystyle.mozUserSelect = "none";     
    bodystyle.webkitUserSelect = "none";
    var img = new Image();
    var canvas = document.querySelector('canvas');
    canvas.style.backgrountColor = "transparent";
    canvas.style.position = 'absolute';
    var imgs = ['http://labfile.oss.aliyuncs.com/courses/133/p_0.jpg','http://labfile.oss.aliyuncs.com/courses/133/p_1.jpg'];
    var num = Math.floor(Math.random()*2);
    img.src = imgs[num];
    img.addEventListener('load',function(e){
        var ctx;
        var w = img.width,
            h = img.height;        
        var offsetX = canvas.offsetLeft,
            offsetY = canvas.offsetTop;
        var mouseDown = false;

        function layer(ctx){
            ctx.fillStyle = "gray";
            ctx.fillRect(0,0,w,h)
        }
        function eventDown(e){
            e.preventDefault();
            mouseDown = true;
        }
        function eventUp(e){
            e.preventDefault();
            mouseDown = false;
        }
        function eventMove(e){
            e.preventDefault();
            if(mouseDown){      
                var x =  e.pageX -offsetX;
                var y =  e.pageY - offsetY;
                with(ctx) {
                    beginPath();
                    arc(x,y,10,0,Math.PI *2);
                    fill();
                }
            }
        }

        canvas.width = w;
        canvas.height = h;
        canvas.style.backgroundImage = 'url(' + img.src + ')';
        ctx = canvas.getContext('2d');
        ctx.fillStyle = 'transparent';
        ctx.fillRect(0,0,w,h);
        layer(ctx);
        ctx.globalCompositeOperation = 'destination-out';
        canvas.addEventListener('touchstart',eventDown);
        canvas.addEventListener('touchend',eventUp);
        canvas.addEventListener('touchmove',eventMove);
        canvas.addEventListener('mousedown',eventDown);
        canvas.addEventListener('mouseup',eventUp);
        canvas.addEventListener('mousemove',eventMove);
    },false)

</script>
</html>
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容