jquery实现百度旋转图片变正滑块验证
代码语言:html
所属分类:验证
代码描述:jquery实现百度旋转图片变正滑块验证
下面为部分代码预览,完整代码请点击下载或在bfwstudio webide中打开
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title></title> <script type="text/javascript" src="//repo.bfw.wiki/bfwrepo/js/jquery.1.11.min.js"></script> <script > ;(function(undefined) { "use strict" var _global; //判断是否为 数组 function isArray(o){ return Object.prototype.toString.call(o)=='[object Array]'; } //随机数 function getRandomNumber(a,b) { return Math.round(Math.random()*(b- a) + a) } //获取随机图片 function getRandomImg(imgArr) { return imgArr[getRandomNumber(0,imgArr.length-1)] } //判断 是否处于动画状态 function ifAnimate(ele) { if(ele.is(":animated")){ return true }else{ return false } } //获取元素的left值 function getEleCssLeft($ele) { return parseInt($ele.css('left')); } var RotateVerify = function (ele,opt) { this.$ele = $(ele); //默认参数 this.defaults = { initText:'滑动将图片转正', slideImage:'', slideAreaNum:10, getSucessState:function(){ } } this.settings = $.extend({}, this.defaults, opt); this.init(); } RotateVerify.prototype = { constructor: this, init:function () { this.verifyState = false; this.disLf = 0; this.initDom(); this.initCanvasImg(); this.initMouse(); this._touchstart(); this._touchend(); }, initDom:function () { this.statusBg = this.$ele.find('.statusBg'); this.$slideDragWrap = this.$ele.find('.slideDragWrap'); this.$slideDragBtn = this.$ele.find('.slideDragBtn'); this.rotateCan = this.$ele.find('.rotateCan'); this.cTipsTxt = this.$ele.find('.cTipsTxt'); this.controlBorWrap = this.$ele.find('.controlBorWrap'); this.xPos = this.rotateCan[0].width/2; this.yPos = this.rotateCan[0].height/2; this.aveRot = Math.round((360/(this.$slideDragWrap.width() - this.$slideDragBtn.outerWidth())) * 100 )/100; this.rotateImgCan = this.rotateCan[0].getContext('2d'); this.slideImage = document.createElement('img'); this.setAttrSrc(); }, initCanvasImg:function () { this.randRot = getRandomNumber(30,270); this.sucLenMin = (360 - this.settings.slideAreaNum - this.randRot) * (this.$slideDragWrap.width() - this.$slideDragBtn.width())/360; this.sucLenMax = (360 + this.settings.slideAreaNum - this.randRot) * (this.$slideDragWrap.width() - this.$slideDragBtn.width())/360; this.disLf = 0; this.initImgSrc(); }, initImgSrc:function(){ var _this = this; _this.slideImage.src = _this.slideImage.getAttribute('data-src'); _this.setAttrSrc(); _this.slideImage.onload = function(){ _this.slideImage.style.width = '200px'; _this.slideImage.style.height = '200px'; _this.drawImgCan(); } }, drawImgCan:function(val){ var _this = this; _this.rotateImgCan.beginPath(); _this.rotateImgCan.arc( 100, 100, 100, 0, 360 * Math.PI / 180, false ); _this.rotateImgCan.closePath(); _this.rotateImgCan.clip(); _this.rotateImgCan.save(); _this.rotateImgCan.clearRect(0,0,200,200); _this.rotateImgCan.translate(_this.xPos, _this.yPos); _this.rotateImgCan.rotate(this.randRot * Math.PI / 180 + _this.disLf * _this.aveRot * Math.PI / 180); _this.rotateImgCan.translate(-_this.xPos, -_this.yPos); _this.rotateImgCan.drawImage( _this.slideImage, _this.xPos - 200 / 2, _this.yPos - 200 / 2,200,200); _this.rotateImgCan.restore(); }, initMouse:function () { var _this = this ; var ifThisMousedown = false; _this.$slideDragBtn.on('mousedown',function (e) { if(_this.verifyState){ return false; } if(_this.dragTimerState){ return false; } if(ifAnimate(_this.$slideDragBtn)){ return false; } ifThisMousedown = true; var positionDiv = $(this).offset(); var distenceX = e.pageX - positionDiv.left; var disPageX = e.pageX; _this.$slideDragBtn.addClass('control-btn-active'); _this.controlBorWrap.addClass('control-bor-active'); $(document).mousemove(function (e) { if(!ifThisMousedown){ return false; } .........完整代码请登录后点击上方下载按钮下载查看
网友评论0