关于如何运用canvas进行局部事件绑定
嘿嘿,脑子有坑的我突然想起用canvas画个导航栏,然后进行局部位置进行事件点击,然而过程略带难度,因此记录下啦。好哒,废话不多说直接上图!
第一步,我要画圆和矩形嘛,肯定有个画布啦:
|
|
PS:值得注意的是:我是把里面的函数单独封装在一个文件里了,接着在另一个文件调用需要的函数,因此在引用的时候需要注意下顺序,先引用封装好的函数,再引用另一个文件。(这个方法是某位大佬告诉宝宝,这样比较有“装逼特效”,哈哈哈!)
第二步,封装函数
|
|
PS:因为脑子有坑的想法,所以画了个矩形
第三步:调用函数
这里,我将每组数据都写好放在数组里,接着在用for循环一下,直接调用,这样就不用重复没必要重复的代码了,嘻嘻
|
|
画面如图:
- 背景是运用CSS3透明的效果做的,详情自己百度吧,嘻嘻!
第四步,重点来啦!绑定事件:
* 因为有四个圆,并且位置不一样,每个圆点击就会跳转不同的新页面,从而实现相当于导航栏的功能。然而canvas只能绑定一个事件,那么问题来了,难道我点击任何一个地方都只能跳转到一个页面吗?当然不能这样,这样的话有什么意义哦。所以,在这里我给画布的点击事件进行了个位置判断。
- 对于event不太熟悉的童鞋,个人建议去看下W3C,然后做个小demo就明白了,在这里我就不多解释了,总之就是能获取位置的。在这里我了for循环,对四个位置都循环了下,这样再利用if(){}else if(){}进行语句判断。123456789101112131415161718192021canvas.onclick=function(e){e = e || event;var x = e.offsetX;y = e.offsetY;for(var i = 0; i < 4; i++ ){if(x >= arrsrc[i].x && x<= arrsrc[i].x+arrsrc[i].width && y >= arrsrc[i].y && y<= arrsrc[i].y+arrsrc[i].width){//在判断if这里,刚开始是想破脑袋,怎么获取相应的位置,后来有位大佬提醒说,先循环4个圆,接着再利用圆的半径进行构建一个方形,在方形的区域内,能进行位置获取~嘿嘿if (i == 0) {window.location.href = "susu1.html";} else if (i == 1) {window.location.href="susu3.html";} else if(i == 2){window.location.href='susu2.html';}else if(i == 3){window.location.href='susu4.html';}else{window.location.href='susu.html';}}}}