zoukankan      html  css  js  c++  java
  • 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>
  • 相关阅读:
    qt 问题及处理
    windows 依赖查看
    java基础知识
    Linux 相关
    OutLook中添加Exchange失败问题
    开源协议简介
    grail开发环境的搭建
    node+mongodb+WP构建的移动社交应用源码 分享
    INotifyPropertyChanged接口的详细说明
    WP8.1开发:后台任务详解(求推荐)
  • 原文地址:https://www.cnblogs.com/xsffliu/p/8657507.html
Copyright © 2011-2022 走看看