jquery擦除效果(刮刮乐)

来源:互联网 发布:win10无法识别有线网络 编辑:程序博客网 时间:2024/05/22 05:29

效果展示如下图:

实现代码

[php] view plain copy
  1. <!DOCTYPE html>    
  2. <html>    
  3. <head>    
  4. <meta charset="UTF-8">    
  5. <title>刮刮卡</title>    
  6. <!-- 新 Bootstrap 核心 CSS 文件 -->    
  7. <link rel="stylesheet" href="//cdn.bootcss.com/bootstrap/3.3.5/css/bootstrap.min.css">    
  8. <!-- 可选的Bootstrap主题文件(一般不用引入) -->    
  9. <link rel="stylesheet" href="//cdn.bootcss.com/bootstrap/3.3.5/css/bootstrap-theme.min.css">    
  10. </head>    
  11. <body>    
  12.     <div class="container">    
  13.         <canvas id="myCanvas_bottom" style="border:1px solid #d3d3d3;position: absolute;">    
  14.         Your browser does not support the HTML5 canvas tag.    
  15.         </canvas>    
  16.         <canvas id="myCanvas_top" style="border:1px solid #d3d3d3;position: absolute;">    
  17.         Your browser does not support the HTML5 canvas tag.    
  18.         </canvas>    
  19.     </div>    
  20.     <script type="text/javascript">    
  21.         var w = 800;    
  22.         var h = 80;    
  23.     
  24.                 var mousedown = false;    
  25.     
  26.         //设置底部canvas样式等    
  27.         var canvas_bottom = document.getElementById('myCanvas_bottom');    
  28.         canvas_bottom.width = w;    
  29.         canvas_bottom.height = h;    
  30.         canvas_bottom_ctx = canvas_bottom.getContext('2d');    
  31.         canvas_bottom_ctx.font = '30px Verdana';    
  32.         canvas_bottom_ctx.textAlign = 'left';    
  33.         var gradient = canvas_bottom_ctx.createLinearGradient(0, 0, canvas_bottom.width, 0);    
  34.         gradient.addColorStop(0, 'magenta');    
  35.         gradient.addColorStop(0.5, 'blue');    
  36.         gradient.addColorStop(1, 'red');    
  37.         canvas_bottom_ctx.strokeStyle = gradient;    
  38.         canvas_bottom_ctx.strokeText('谢谢惠顾,感谢您这次的选择', 10, 50); //可自由设定    
  39.     
  40.         //设置顶部canvas    
  41.         var canvas_top = document.getElementById('myCanvas_top');    
  42.         canvas_top.width = w;    
  43.         canvas_top.height = h;    
  44.         var offsetX = canvas_top.offsetLeft;    
  45.         var offsetY = canvas_top.offsetTop;    
  46.         canvas_top_ctx = canvas_top.getContext('2d');    
  47.         canvas_top_ctx.fillStyle = 'gray';    
  48.         canvas_top_ctx.fillRect(0, 0, w, h);    
  49.     
  50.         canvas_top_ctx.globalCompositeOperation = 'destination-out';    
  51.     
  52.         canvas_top.addEventListener('touchstart', eventDown);    
  53.         canvas_top.addEventListener('touchend', eventUp);    
  54.         canvas_top.addEventListener('touchmove', eventMove);    
  55.         canvas_top.addEventListener('mousedown', eventDown);    
  56.         canvas_top.addEventListener('mouseup', eventUp);    
  57.         canvas_top.addEventListener('mousemove', eventMove);    
  58.     
  59.         function eventDown(e){    
  60.             e.preventDefault();    
  61.             mousedown=true;    
  62.         }    
  63.     
  64.         function eventUp(e){    
  65.             e.preventDefault();    
  66.             mousedown=false;    
  67.         }    
  68.     
  69.         function eventMove(e){    
  70.             e.preventDefault();    
  71.             if(mousedown) {    
  72.                  if(e.changedTouches){    
  73.                      e=e.changedTouches[e.changedTouches.length-1];    
  74.                  }    
  75.                  var x = (e.clientX + document.body.scrollLeft || e.pageX) - offsetX || 0;    
  76.                  var y = (e.clientY + document.body.scrollTop || e.pageY) - offsetY || 0;    
  77.                  with(canvas_top_ctx) {    
  78.                      beginPath()    
  79.                      arc(x, y, 10, 0, Math.PI * 2);    
  80.                      fill();    
  81.                  }    
  82.             }    
  83.         }    
  84.     </script>    
  85. </body>    
  86. </html>