国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > JavaScript > 正文

jQuery實現手勢解鎖密碼特效

2019-11-19 15:48:33
字體:
來源:轉載
供稿:網友

本文實例為大家分享了jQuery實現手勢解鎖密碼的具體代碼,供大家參考,具體內容如下

效果預覽圖:

驗證成功:(可以進行頁面挑戰等...)

驗證失敗:

 HTML:

<div id="gesturepwd" style="position: absolute;width:440px;height:440px;left:50%;top:50%;
margin-left:-220px;margin-top:-220px"></div>

首次渲染:

$("#gesturepwd").GesturePasswd({  margin:"0px auto",  backgroundColor:"#252736", //背景色  color:"#FFFFFF", //主要的控件顏色  roundRadii:42, //大圓點的半徑  pointRadii:6, //大圓點被選中時顯示的圓心的半徑  space:60, //大圓點之間的間隙  width:440, //整個組件的寬度  height:440, //整個組件的高度  lineColor:"#00aec7", //用戶劃出線條的顏色  zindex :100 //整個組件的css z-index屬性 })

密碼判斷代碼:(這里的密碼“34569”意思為頁面上從上到下,從左到右的9個原點中的5個點)

$("#gesturepwd").on("hasPasswd",function(e,passwd){  var result;  if(passwd == "34569"){//密碼設置處   result=true;  } else {   alert("密碼錯誤!");   result=false;  }  if(result == true){   $("#gesturepwd").trigger("passwdRight");   setTimeout(function(){   //密碼驗證正確后的其他操作,打開新的頁面等。。。    //alert("密碼正確!")    //window.location.href="../統計圖/index.html";    alert("驗證通過!");   },500); //延遲半秒以照顧視覺效果  }  else{   $("#gesturepwd").trigger("passwdWrong");   //密碼驗證錯誤后的其他操作。。。  } })

核心腳本調用展示(這里有興趣的話可以仔細研究下...):

;(function ($) { var GesturePasswd= function (element, options) {  this.$element = $(element);  this.options = options;  var that=this;  this.pr=options.pointRadii;  this.rr=options.roundRadii;  this.o=options.space;  this.color=options.color;  //全局樣式  this.$element.css({   "position":"relation",   "width":this.options.width,   "height":this.options.height,   "background-color":options.backgroundColor,   "overflow":"hidden",   "cursor":"default"  });  //選擇器規范  if(! $(element).attr("id"))   $(element).attr("id",(Math.random()*65535).toString());  this.id="#"+$(element).attr("id");  var Point = function (x,y){   this.x =x;this.y=y  };  this.result="";  this.pList=[];  this.sList=[];  this.tP=new Point(0,0);  this.$element.append('<canvas class="main-c" width="'+options.width+'" height="'+options.height+'" >');  //this.$element.append('<canvas class="main-p" width="'+options.width+'" height="'+options.height+'" >');  this.$c= $(this.id+" .main-c")[0];  this.$ctx=this.$c.getContext('2d');  this.initDraw=function(){   this.$ctx.strokeStyle=this.color;   this.$ctx.lineWidth=2;   for(var j=0; j<3;j++ ){    for(var i =0;i<3;i++){     this.$ctx.moveTo(this.o/2+this.rr*2+i*(this.o+2*this.rr),this.o/2+this.rr+j*(this.o+2*this.rr));     this.$ctx.arc(this.o/2+this.rr+i*(this.o+2*this.rr),this.o/2+this.rr+j*(this.o+2*this.rr),this.rr,0,2*Math.PI);     var tem=new Point(this.o/2+this.rr+i*(this.o+2*this.rr),this.o/2+this.rr+j*(this.o+2*this.rr));     if (that.pList.length < 9)      this.pList.push(tem);    }   }   this.$ctx.stroke();   this.initImg=this.$ctx.getImageData(0,0,this.options.width,this.options.height);  };  this.initDraw();  //this.$ctx.stroke();  this.isIn=function(x,y){   for (var p in that.pList){    //console.log(that.pList[p][x]);    // console.log(( Math.pow((x-that.pList[p][x]),2)+Math.pow((y-that.pList[p][y]),2)));    if(( Math.pow((x-that.pList[p]["x"]),2)+Math.pow((y-that.pList[p]["y"]),2) ) < Math.pow(this.rr,2)){     return that.pList[p];    }   }   return 0;  };  this.pointDraw =function(c){   if (arguments.length>0){    that.$ctx.strokeStyle=c;    that.$ctx.fillStyle=c;   }   for (var p in that.sList){    that.$ctx.moveTo(that.sList[p]["x"]+that.pr,that.sList[p]["y"]);    that.$ctx.arc(that.sList[p]["x"],that.sList[p]["y"],that.pr,0,2*Math.PI);    that.$ctx.fill();   }  };  this.lineDraw=function (c){   if (arguments.length>0){    that.$ctx.strokeStyle=c;    that.$ctx.fillStyle=c;   }   if(that.sList.length > 0){    for( var p in that.sList){     if(p == 0){      console.log(that.sList[p]["x"],that.sList[p]["y"]);      that.$ctx.moveTo(that.sList[p]["x"],that.sList[p]["y"]);      continue;     }     that.$ctx.lineTo(that.sList[p]["x"],that.sList[p]["y"]);     console.log(that.sList[p]["x"],that.sList[p]["y"]);    }   }  };  this.allDraw =function(c){   if (arguments.length>0){    this.pointDraw(c);    this.lineDraw(c);    that.$ctx.stroke();   }   else {    this.pointDraw();    this.lineDraw();   }  };  this.draw=function(x,y){   that.$ctx.clearRect(0,0,that.options.width,that.options.height);   that.$ctx.beginPath();   //that.initDraw();   that.$ctx.putImageData(this.initImg,0,0);   that.$ctx.lineWidth=4;   that.pointDraw(that.options.lineColor);   that.lineDraw(that.options.lineColor);   that.$ctx.lineTo(x,y);   that.$ctx.stroke();  };  this.pointInList=function(poi,list){   for (var p in list){    if( poi["x"] == list[p]["x"] && poi["y"] == list[p]["y"]){     return ++p;    }   }   return false;  };  this.touched=false;  $(this.id).on ("mousedown touchstart",{that:that},function(e){   e.data.that.touched=true;  });  $(this.id).on ("mouseup touchend",{that:that},function(e){   e.data.that.touched=false;   that.$ctx.clearRect(0,0,that.options.width,that.options.height);   that.$ctx.beginPath();   that.$ctx.putImageData(e.data.that.initImg,0,0);   that.allDraw(that.options.lineColor);   // that.$ctx.stroke();   for(var p in that.sList){    if(e.data.that.pointInList(that.sList[p], e.data.that.pList)){     e.data.that.result= e.data.that.result+(e.data.that.pointInList(that.sList[p], e.data.that.pList)).toString();    }   }   $(element).trigger("hasPasswd",that.result);  });  //  $(this.id).on('touchmove mousemove',{that:that}, function(e) {   if(e.data.that.touched){    var x= e.pageX || e.originalEvent.targetTouches[0].pageX ;    var y = e.pageY || e.originalEvent.targetTouches[0].pageY;    x=x-that.$element.offset().left;    y=y-that.$element.offset().top;    var p = e.data.that.isIn(x, y);    console.log(x)    if(p != 0 ){     if ( !e.data.that.pointInList(p,e.data.that.sList)){      e.data.that.sList.push(p);     }    }    console.log( e.data.that.sList);    e.data.that.draw(x, y);   }  });  $(this.id).on('passwdWrong',{that:that}, function(e) {   that.$ctx.clearRect(0,0,that.options.width,that.options.height);   that.$ctx.beginPath();   that.$ctx.putImageData(that.initImg,0,0);   that.allDraw("#cc1c21");   that.result="";   that.pList=[];   that.sList=[];   setTimeout(function(){    that.$ctx.clearRect(0,0,that.options.width,that.options.height);    that.$ctx.beginPath();    that.initDraw()   },500)  });  $(this.id).on('passwdRight',{that:that}, function(e) {   that.$ctx.clearRect(0,0,that.options.width,that.options.height);   that.$ctx.beginPath();   that.$ctx.putImageData(that.initImg,0,0);   that.allDraw("#00a254");   that.result="";   that.pList=[];   that.sList=[];   setTimeout(function(){    that.$ctx.clearRect(0,0,that.options.width,that.options.height);    that.$ctx.beginPath();    that.initDraw()   },500)  }); }; GesturePasswd.DEFAULTS = {  zindex :100,  roundRadii:25,  pointRadii:6,  space:30,  width:240,  height:240,  lineColor:"#00aec7",  backgroundColor:"#252736",  color:"#FFFFFF" };//代碼整理:懶人之家 www.lanrenzhijia.com function Plugin(option,arg) {  return this.each(function () {   var $this = $(this);   var options = $.extend({}, GesturePasswd.DEFAULTS, typeof option == 'object' && option);   var data = $this.data('GesturePasswd');   var action = typeof option == 'string' ? option : NaN;   if (!data) $this.data('danmu', (data = new GesturePasswd(this, options)));   if (action) data[action](arg);  }) } $.fn.GesturePasswd    = Plugin; $.fn.GesturePasswd.Constructor = GesturePasswd;})(jQuery);

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持武林網。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 高邑县| 石城县| 乌兰县| 襄樊市| 雷州市| 南部县| 福安市| 沙坪坝区| 冀州市| 原平市| 咸宁市| 大姚县| 左贡县| 临沧市| 马边| 镇康县| 淮南市| 高州市| 化德县| 尉犁县| 邵阳市| 满洲里市| 兴安盟| 汶上县| 喀喇| 苏州市| 温宿县| 舞钢市| 丰原市| 福清市| 鹤山市| 祥云县| 德格县| 涿州市| 邓州市| 德兴市| 贡山| 夏津县| 昌平区| 霍城县| 新乡县|