美文网首页程序猿Java Webdemo
20行js代码制作网页刮刮乐

20行js代码制作网页刮刮乐

作者: 牛油果大虾 | 来源:发表于2016-05-19 20:18 被阅读1597次

分享一段用canvas和JS制作刮刮乐的代码,JS部分去掉注释不到20行代码
效果如下

盖伦.jpg test.gif
HTML部分
<body>
        ![](img/gailun.jpg)
        <canvas id="canvas" width="400" height="300"></canvas>
    </body>

没什么要特别注意的
为了效果加了些CSS样式

CSS部分
<style type="text/css">
        *{
            margin: 0;
            padding: 0;
        }
            img{
                width: 400px;
                height: 300px;
                left: 200px;
                position: absolute;
                z-index: -1;
            }
            canvas{
                margin-left:200px;
            }
        </style>
注意

1.为了清除浏览器自带效果加了

*{
            margin: 0;
            padding: 0;
        }

2.img需要在灰布下面,加了z-index;
3.图片绝对定位


js部分
分析下逻辑

1.鼠标按下移动相应区域刮开
2.鼠标抬起改变鼠标位置不接着刮开

js代码
    <script type="text/javascript">
        var canvas = document.getElementById("canvas");
        var  context =  canvas.getContext('2d');
            //画蒙布
        context.beginPath();
        context.fillStyle= 'grey'
        context.fillRect(0,0,400,300);
        //鼠标按下开刮
        canvas.onmousedown=function(){
            canvas.onmousemove = function(){
                //获取鼠标坐标
                var x = event.clientX;
                var y  = event.clientY;
                //destination-out           显示原来的不在后来区域的部分
                context.globalCompositeOperation = "destination-out";
                context.beginPath();
                context.arc(x-200,y,30,0,Math.PI*2);
                context.fill();     
            }
        }
        //鼠标抬起不刮开
        canvas.onmouseup=function(){
            canvas.onmousemove = function(){    
            }
        }   
        </script>

需要注意的是

1.图片和画布左移了200px,所以圆的起点坐标相对于获取位置减了200px;
2.globalCompositeOperation是画布的一个功能作用是设置或返回如何将一个源(新的)图像绘制到目标(已有)的图像上,还有其余10种写法

如果本文对您有帮助,劳烦到github star一下,,,好吧亲!
github地址

相关文章

  • 20行js代码制作网页刮刮乐

    分享一段用canvas和JS制作刮刮乐的代码,JS部分去掉注释不到20行代码效果如下 HTML部分 没什么要特别注...

  • js 刮刮乐

    网上无意间搜到了一个js刮刮乐效果,觉得很有趣,所以找来分析一下代码和效果,并根据自己理解精简了部分代码,分析不到...

  • 刮刮乐

  • 刮刮乐

    2007年3月3日,特别的日子。 为啥特别? 第一次坐飞机,青岛飞西安,提前4个小时就到机场了,在网上研究过攻略,...

  • 刮刮乐

    2014年11月3日 刮刮乐 今天杏子又在济南火车站候车了,这次她是故地重游,明显轻松了许多。 ...

  • 刮刮乐

    设置刮开后,显示的文字Label UILabel *label = [[UILabel alloc]initWit...

  • 刮刮乐

    刮刮乐这个东西真的是越刮越快乐,尤其是他给我准备的30张,现在有些喜欢30这个数字了,哈哈哈哈哈! 他给我准备...

  • 刮刮乐

    最近幻想中奖挣大钱的两个人于今晚走进彩票店刮起了刮刮乐,五块钱一张,最后刮了六张,付了十块钱,而我依然是好运绝缘体...

  • iOS开发 刮刮乐效果的实现

    引言 我们平时在使用支付宝的时候, 会看到类似彩票刮刮乐的效果。如何实现的呢?下面就直接上代码了... 刮刮乐效果...

  • 刮刮乐热潮

    近日中国福利彩票在县城体育馆做一个瓜瓜乐的活动,大体内容就是五块钱一张的刮刮乐有机会赢取三十万大奖。而更吸引人的是...

网友评论

本文标题:20行js代码制作网页刮刮乐

本文链接:https://www.haomeiwen.com/subject/dqpgrttx.html