这周有点迷茫,不知道干吗了,一每天就过去了!我在博客右侧公告栏加了qq交流,各位有好的主题,或者有趣的技术,欢迎交流!今天突发奇想,就写了2个h5 canvas的demo玩玩!html
舍不得买2块钱的刮刮乐,就只能写个相似的功能过过彩票瘾了!前端
<div id="lottery" style="width:300px;height:500px;margin:10px;border-radius:5px;float:left;"> <div style="width:300px;height:100px;line-height:100px;text-align:center;font-size:33px;color:blueviolet;">NICK彩票</div> <div id="txt" style="width:300px;height:200px;font-size:40px;color:peachpuff;display:flex;justify-content:center;align-items:center;flex-direction:column;"> <span>祝</span> <span>君</span> <span>中</span> <span>奖</span> </div> <div id="canvasArea" style="width:300px;height:200px;position:relative;"> <div style="width:300px;height:200px;position:absolute;top:0;left:0;z-index:1;text-align:center;line-height:200px;font-weight:bold;font-size:56px;color:indianred;">一等奖</div> <canvas id="canvas" width="300px" height="200px" style="position:absolute;top:0;left:0;z-index:2;"></canvas> </div> </div>
这段html要注意的地方有2个:canvas
var canvas = document.getElementById("canvas"); var context = canvas.getContext("2d");
context.fillStyle='#A9AB9D'; context.fillRect(10,10,280,180); context.fillStyle='#000'; context.font='50px Arial'; context.fillText('刮奖区',75,115);
以上都是canvas基础api,看w3c就ok了。api
setInterval(function(){ document.getElementById('txt').style.color = document.getElementById('txt').style.color=='peachpuff' ? 'yellow' : 'peachpuff'; },500);
var brush=function(){//刮奖 context.clearRect(event.offsetX,event.offsetY,20,20); };
canvas.onmousedown = function(){ // 鼠标按下时 - 绑定鼠标跟随事件 bindHandler(canvas,'mousemove',brush,false); } canvas.onmouseup = function(){ // 中止刮奖功能 - 解绑鼠标跟随事件 removeHandler(canvas,"mousemove",brush,false); }
这里的事件绑定与解绑我上篇博文有封装,最后完整代码也有!app
刮刮乐happy到底结束!最后附上完整代码,再看看效果吧!ide
<div style="width:300px;height:500px;margin:10px;border-radius:10px;overflow:hidden;float:right;"> <canvas id="canvas2" width="300px" height="500px" style=""></canvas> </div>
var canvas2 = document.getElementById("canvas2"); var context2 = canvas2.getContext("2d");
var draw=function(){ context2.fillRect(event.offsetX,event.offsetY,10,10); };
context2.font='20px Arial'; context2.strokeText('NICK画笔',100,30);//写个头 //1. 为canvas元素onmousedown和onmouseup事件 canvas2.onmousedown = function(){ // 启用画笔功能 - 绑定鼠标跟随事件 bindHandler(canvas2,'mousemove',draw,false); } canvas2.onmouseup = function(){ // 中止画笔功能 - 解绑鼠标跟随事件 removeHandler(canvas2,"mousemove",draw,false); }
画图工具的画笔功能到底结束!函数
附上完整代码:工具
代码写完了,我也想说点其余的:布局
上面js代码中,有很多注释,我将其分为几个区域:插件方法封装区、命名区、功能实现区、刮刮乐区以及画笔区等,我感受这样写加上一些注释,能使代码能加简洁,便于之后的维护!固然这只是我的观点,欢迎各位点击我博客右边公告栏的qq交流交流!字体
最后附上:
上篇博文:事件绑定与解绑!(只是一个简单的封装)
来看看效果,玩玩吧!