【canvas是什么牌子】canvas实现刮刮卡效果

时间:2021-07-23  来源:css3教程  阅读:

目前在html5和css3的热潮下,html页面的效果也是层出不穷,下面我们来介绍使用canvas来模仿刮奖刮开效果。

原理

在需要刮出的图片或者文字上方盖上一层灰色或者其他背景的canvas画布,当手指或者鼠标点击画布并移动时,将画布上移动过的轨迹变成透明即可。

分析

demo中在class为content的div上盖上一层灰色的画布,然后通过获取鼠标和手指的坐标计算出在画布位置上的坐标,通过在坐标原点位置画一个半径10px的透明圆形来透过画布,显示出画布下的内容。本demo是用时需要改变的内容为_width,_height,touchTop,touchLeft这几个参数,根据自身画布的位置自行计算即可。由于是长按事件,记得在移动端阻止浏览器默认功能。

效果图:

图(1)初始图

图(2)刮开效果

代码如下:

 

 代码如下

无标题文档

 

快来刮开!!!

 中奖啦~!

 

<script>

var isdown = false,

 cover = document.getElementById("cover"),

 covercanvas = cover.getContext("2d");

 //

 covercanvas.fillStyle="transparent";

 covercanvas.fillRect(0,0,400,400);

 function fillter( canvas ){

 canvas.fillStyle="#ccc";

 canvas.fillRect(0,0,400,400);

 }

 function isDown(e){

 e.preventDefault();

 isdown=true;

 }

 function isUp(e){

 isdown=false;

 }

 function draw( e ){

 e.preventDefault();

 if(isdown){

 if(e.changedTouches){

  e=e.changedTouches[e.changedTouches.length-1];

  }

 var _height= parseInt((window.innerHeight-400)/2),

 _width= parseInt((window.innerWidth-400)/2),

 touchTop=e.clientY - _height,

 touchLeft=e.clientX - _width;

 with(covercanvas){

 beginPath();

 arc(touchLeft, touchTop, 10, 0, Math.PI * 2);

 fill();

 }

 }

 //alert(touchTop);

 }

 fillter(covercanvas);

 covercanvas.globalCompositeOperation = 'destination-out';

 cover.addEventListener('touchstart',isDown);

 cover.addEventListener('touchmove',draw);

 cover.addEventListener('touchend',isUp);

 cover.addEventListener('mousemove',draw);

 cover.addEventListener('mousedown',isDown);

 cover.addEventListener('mouseup',isUp);

</script>

 

【canvas是什么牌子】canvas实现刮刮卡效果

http://m.bbyears.com/css/131489.html

推荐访问:canvas下载
相关阅读 猜你喜欢
本类排行 本类最新