利用HTML5的画布Canvas实现刮刮卡效果_javascript技巧

先给大家展示效果:

查看演示   源码下载

你玩过刮刮卡么?一不小心可以中奖的那种。今天我给大家分享一个基于HTML5技术实现的刮刮卡效果,在PC上只需按住鼠标,在手机上你只需按住指头,轻轻刮去图层就可以模拟真实的刮奖效果。

我们利用HTML5的画布Canvas,结合其提供的API,在Canvas元素上绘制一个灰色蒙层,然后通过检测用户鼠标移到和手势来绘制一个透明的图形,这样就能看到Canvas背景下的真实图片,就达到刮刮卡效果。

HTML

我们只需要在页面中加入canvas标签元素,其他的就看javascript的了。注意canvas元素是HTML5才有的元素,运行在支持HTML5的现代浏览器上。

<canvas></canvas> 

Javascript

首先,我们要禁用页面的鼠标选中拖动的事件,就是不运行执行选中操作。

var bodyStyle = document.body.style;
bodyStyle.mozUserSelect = 'none';
bodyStyle.webkitUserSelect = 'none'; 

接着我们定义图片类,获取canvas元素,并设置背景和位置属性。我们在本例中用到两张随机照片,每次刷新随机一张图片作为背景。

var img = new Image();
var canvas = document.querySelector('canvas');
canvas.style.backgroundColor='transparent';
canvas.style.position = 'absolute';
var imgs = ['p_0.jpg','p_1.jpg'];
var num = Math.floor(Math.random()*2);
img.src = imgs[num]; 

然后进入主体,当检测到图片加载完的时候,首先定义一些属性和函数,函数layer()用来绘制一个灰色的正方形,eventDown()定义了按下事件eventUp()定义了松开事件,eventMove()定义了移动事件,其中当按下时,获取坐标位移,并通过arc(x, y, 10, 0, Math.PI * 2)来绘制小圆点。

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) {
    if(e.changedTouches){
     e=e.changedTouches[e.changedTouches.length-1];
    }
    var x = (e.clientX + document.body.scrollLeft || e.pageX) - offsetX || 0,
     y = (e.clientY + document.body.scrollTop || e.pageY) - offsetY || 0;
    with(ctx) {
     beginPath()
     arc(x, y, 10, 0, Math.PI * 2);//绘制圆点
     fill();
    }
  }
 }
 //...
}); 

最后,通过canvas调用以上函数,绘制图形,并且侦听触控及鼠标事件,调用相应的函数,请看代码:

img.addEventListener('load', function(e) {
 //..接上段代码
 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); 

以上内容仅供参考,大家可以结合实际情况,结合后台程序和数据库,完成一个真正的刮刮乐。以上内容是我写的利用HTML5的画布Canvas实现刮刮卡效果,希望大家喜欢。

以上是小编为您精心准备的的内容,在的博客、问答、公众号、人物、课程等栏目也有的相关内容,欢迎继续使用右上角搜索按钮进行搜索html5_canvas刮刮卡
html5刮刮卡效果
canvas 刮刮卡、html5 canvas 刮刮卡、移动端 canvas刮刮卡、canvas 刮刮卡面积、canvas用图片做刮刮卡,以便于您获取更多的相关知识。

时间: 2024-08-30 12:49:40

利用HTML5的画布Canvas实现刮刮卡效果_javascript技巧的相关文章

javascript+HTML5的Canvas实现Lab单车动画效果_javascript技巧

本文实例讲述了javascript+HTML5的Canvas实现Lab单车动画效果.分享给大家供大家参考.具体如下: 这里运用HTML5实现的单车动画,运行一下效果你就明白了,不过不要在IE8下测试,没效果的.请在支持最新HTML3和CSS3的浏览器下测试,祝您好运. 运行效果截图如下: 具体代码如下: <html> <head> <title>Canvas Lab单车动画,HTML5动画</title> </head> <script t

JS利用cookie记忆当前位置的防刷新导航效果_javascript技巧

本文实例讲述了JS利用cookie记忆当前位置的防刷新导航效果.分享给大家供大家参考.具体如下: 这里演示利用cookie记忆当前位置的防刷新导航条,主要向大家展示如何在Js中使用Cookies技术,用好了Cookies,会使你的Js技术更上一层楼.这个菜单就感觉不错,当你鼠标点击之后,重新刷新页面后它仍然是保留在原位置,好像带有记忆功能. 运行效果截图如下: 在线演示地址如下: http://demo.jb51.net/js/2015/js-cookie-nav-pos-menu-demo/

js面向对象实现canvas制作彩虹球喷枪效果_javascript技巧

前段时间在研究canvas,感觉还挺好玩的,就写了一个小demo,效果如下: 第一次尝试用js面向对象的方式来写,经验不足,还请大家多多包涵.  下面开始简单介绍代码:  canvas画布: 复制代码 代码如下: <canvas id='canvas' width='1050' height='500' style='background:#333;overflow: hidden;'></canvas> 彩虹球的随机颜色是通过下面两个方法来实现的,在<js常用方法和一些封装

javascript+canvas实现刮刮卡抽奖效果_javascript技巧

运用canvas做的简单刮刮卡效果,每次刷新可重新测试 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <me

javascript结合Canvas 实现简易的圆形时钟_javascript技巧

之前学习了下html5中的canvas元素,为了练练手就实现了一个简易的时钟.时钟本身并不复杂,也没有使用图片进行美化,不过麻雀虽小五脏俱全,下面就与大家分享一下: 演示效果: html代码: 复制代码 代码如下: <!DOCTYPE html> <html> <head>     <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />

JavaScript实现使用Canvas绘制图形的基本教程_javascript技巧

由于这两年HTML5火的正热,所以研究了一下,最近有个想法也是要用到HTML的相关功能,所以也要好好学习一把. 好好看了一下Canvas的功能,感觉HTML5在客户端交互的功能性越来越强了,今天看了一下Canvas绘图,下边是几个实例,记下以备后用. 1.使用Canvas绘制直线: <!doctype html> <html> <head> <meta charset="UTF-8"> </head> <style ty

JS+Canvas 实现下雨下雪效果_javascript技巧

最近做了一个项目,其中有需求要实现下雨小雪的动画特效,所以在此做了个drop组件,来展现这种canvas常见的下落物体效果.在没给大家介绍正文之前,先给大家展示下效果图: 展示效果图: 下雨 下雪 看起来效果还是不错的,相对于使用创建dom元素来制作多物体位移动画, 使用canvas会更加容易快捷,以及性能会更好 调用代码 <!DOCTYPE html> <html lang="en"> <head> <meta charset="U

利用HTML5中的Canvas绘制一张笑脸的教程

今天,你将            学习一项称为Canvas(画布)的web技术,以及它和文档对象模型(通常被称为DOM)的关联.这项技术非常强大,因为它使web开发人员能够通过使用JavaScript访问和修改HTML元素.          现在你可能想知道为什么我们需要大刀阔斧地使用JavaScript.简而言之,HTML和JavaScript是相互依存的,一些HTML组件,如canvas元素,并不能脱离JavaScript单独使用.毕竟,如果我们不能在上面绘图,那canvas能派什么用处呢

js+html5实现canvas绘制椭圆形图案的方法_javascript技巧

本文实例讲述了js+html5实现canvas绘制椭圆形图案的方法,HTML5 canvas 没有画椭圆的方法,以下代码可以画出椭圆,分享给大家供大家参考,具体实现方法如下: 1.在一个隐式的画布 (将 其 CSS 定义成:display:none; ) 上画园. 2.将隐式画布的影像,以不同的宽高比值,画在另一个显式的画布,以使园变成椭圆. 3.进而,加进动画功能. <html> <head> <meta http-equiv="Content-Type"