jquery模拟刮刮乐

 

 

<!DOCTYPE html>
<html>
<head lang="en">
    <meta name="viewport" content="width=device-width,user-scalable=no,initial-scale=1,maximum-scale=1" />
    <meta charset="UTF-8">
    <script src="js/jquery-1.9.1.js"></script>
    <title></title>
    <style>
        body{
            background-color: #ffdcaf;
        }
       .gua_bg {
            width: 415px;
            height: 200px;
            padding-top: 12px;
            padding-left: 12px;
            background: url(img/gua_image.png) no-repeat;
            background-size: 100% 100%;
            color: red;
        }
        .gua_bg p {
            position: absolute;
            width: 384px;
            line-height: 173px;
            text-align: center;
            font-size: 30px;
        }
        .gua_bg canvas {
            cursor: hand;
            position: absolute;
        }
    </style>
</head>
<body>
    <div class="gua_bg">
        <p></p>
        <canvas/>
    </div>
    <div class="gua_cont">
        <button class="continue" >继续刮奖</button>
    </div>
    <div class="gua_residue">你还有<b>0</b>次刮奖机会</div>
    <script>
        (function(bodyStyle) {
            localStorage.num=localStorage.num || 3;
            $(".gua_residue b").text(localStorage.num);
            $(".continue").click(function(){
                localStorage.num=localStorage.num-1;
                history.go(0);
            });

            if(localStorage.num>0){
                bodyStyle.mozUserSelect = 'none';
                bodyStyle.webkitUserSelect = 'none';
                var img = new Image();
                var canvas = document.querySelector('canvas');
                canvas.style.backgroundColor='transparent';
                img.addEventListener('load', function(e) {
                    var ctx;
                    var w = 403,  h = 190;
                    var offsetX = canvas.offsetLeft,
                        offsetY = canvas.offsetTop;
                    var mousedown = false;
                    function layer(ctx) {
                        ctx.fillStyle = 'gray';    //画布填充灰色
                        ctx.fillRect(0, 0, w, h);   //绘制“被填充”的矩形  ,坐标(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) {
                            if(e.changedTouches){    //涉及当前(引发)事件的触摸点的列表
                                e=e.changedTouches[e.changedTouches.length-1];
                            }
                            var x = (e.clientX ) - offsetX || 0,    //clientX返回当事件被触发时鼠标指针向对于浏览器页面的水平坐标。
                                y = (e.clientY) - [$(canvas).offset().top-$(document).scrollTop()];  //document.body.scrollLeft获取位于对象左边界和窗口中目前可见内容的最左端之间的距离
                                                                           //offsetX发生事件的地点在事件源元素的坐标系统中的 x 坐标和 y 坐标
                            with(ctx) {
                                beginPath();   //起始一条路径,或重置当前路径
                                arc(x, y, 11, 0, Math.PI * 2);   // arc()用于创建圆或部分圆;  x,y:圆心距边框的距离   11:半径    Math.PI * 2:圆
                                fillStyle="red";
                                fill();   //填充当前绘图(路径)
                                var prize="";
                                switch (parseInt(localStorage.num)){
                                    case 3 : prize="京东卡";  break;
                                    case 2 : prize="优惠券"; break;
                                    case 1 :  prize="现金红包"; break;
                                    default :  break;
                                }
                                $(".gua_bg p").text(prize);

                            }
                        }
                    }
                    canvas.width=w;
                    canvas.height=h;
    //                canvas.style.backgroundImage='url('+img.src+')';
                    ctx=canvas.getContext('2d');   //返回一个用于在画布上绘图的2d环境
                //创建透明目标图(您已经放置在画布上的绘图)
                    ctx.fillStyle='transparent';
                    ctx.fillRect(0, 0, w, h);    //绘制“被填充”的矩形  ,坐标(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);
                });
                img.src = 'img/gua_img.png';
            }
        })(document.body.style);
    </script>

</body>
</html>

 

posted @ 2018-03-27 15:03  心随风飞lss  阅读(980)  评论(0编辑  收藏  举报