html中如何制作手势密码,canvas实现手机的手势解锁的步骤详细

本文详细介绍了如何使用canvas在html中制作手势解锁,包括动态初始化DOM、画圆函数、canvas事件操作、手势链接操作实现以及解锁成功与否的判断。通过实例代码展示了整个流程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

本文介绍了canvas手机的手势解锁,分享给大家,顺便给自己留个笔记,废话不多说,具体如下:

按照国际惯例,先放效果图

5db9f9d1efbca98e1f506752c40df327.gif

1、js动态初始化Dom结构

首先在index.html中添加基本样式

body{background:pink;text-align: center;}

加个移动端meta头

引入index.js脚本

index.js

// 匿名函数自执行

(function(){

// canvasLock是全局对象

window.canvasLock=function(obj){

this.width=obj.width;

this.height=obj.height;

}

//动态生成DOM

canvasLock.prototype.initDom=function(){

//创建一个div

var div=document.createElement("div");

var h4="

绘制解锁图案
";

div.innerHTML=h4;

div.setAttribute("style","position:absolute;top:0;left:0;right:0;bottom:0;");

//创建canvas

var canvas=document.createElement("canvas");

canvas.setAttribute("id","canvas");

//cssText 的本质就是设置 HTML 元素的 style 属性值

canvas.style.cssText="background:pink;display:inine-block;margin-top:15px;";

div.appendChild(canvas);

document.body.appendChild(div);

//设置canvas默认宽高

var width=this.width||300;

var height=this.height||300;

canvas.style.width=width+"px";

canvas.style.height=height+"px";

canvas.width=width;

canvas.height=height;

}

//init代表初始化,程序的入口

canvasLock.prototype.init=function(){

//动态生成DOM

this.initDom();

//创建画布

this.canvas=document.getElementById("canvas");

this.ctx=this.canvas.getContext("2d");

}

})();

在index.html中创建实例并初始化

new canvasLock({}).init();

效果图

61887aba2f6f9c549ffb0caeea836a95.png

2、 画圆函数

需要补充一下画布宽度与圆的半径的关系

如果一行3个圆,则有4个间距,间距的宽度与圆的直径相同,相当于7个直径,即14个半径

如果一行4个圆,则有5个间距,间距的宽度与圆的直径相同,相当于9个直径,即18个半径

如果一行n个圆,则有n+1个间距,间距的宽度与圆的直径相同,相当于2n+1个直径,即4n+2个半径

96e3992c9d800a424e09cbc5c475ae2d.png

补充两个方法:

//以给定坐标点为圆心画出单个圆

canvasLock.prototype.drawCircle=function(x,y){

this.ctx.strokeStyle="#abcdef";

this.ctx.lineWidth=2;

this.ctx.beginPath();

this.ctx.arc(x,y,this.r,0,2*Math.PI,true);

this.ctx.closePath();

this.ctx.stroke();

}

//绘制出所有的圆

canvasLock.prototype.createCircle=function(){

var n=this.circleNum;//一行几个圆

var count=0;

this.r=this.canvas.width/(4*n+2);//公式计算出每个圆的半径

this.lastPoint=[];//储存点击过的圆的信息

this.arr=[];//储存所有圆的信息

this.restPoint=[];//储存未被点击的圆的信息

var r=this.r;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值