欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

js插件實(shí)現(xiàn)圖片滑動(dòng)驗(yàn)證碼

 更新時(shí)間:2020年09月29日 15:52:35   作者:飛奔的貓  
這篇文章主要為大家詳細(xì)介紹了js插件實(shí)現(xiàn)圖片滑動(dòng)驗(yàn)證碼,滑動(dòng)模塊,實(shí)現(xiàn)驗(yàn)證功能,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下

圖片滑動(dòng)驗(yàn)證碼,邏輯是根據(jù)鼠標(biāo)滑動(dòng)軌跡,坐標(biāo)位置,計(jì)算拖動(dòng)速度等等來判斷是否人為操作,當(dāng)然下面的代碼只是實(shí)現(xiàn)前端部分,只記錄了拖動(dòng)的坐標(biāo)。

先上代碼吧,做個(gè)備份記錄

jquery.lgymove.js

/** 
 * Created by lgy on 2017/10/21. 
 * 圖片驗(yàn)證碼 
 */ 
(function ($) { 
 $.fn.imgcode = function (options) { 
 //初始化參數(shù) 
 var defaults = { 
  callback:"" //回調(diào)函數(shù) 
 }; 
 var opts = $.extend(defaults, options); 
 return this.each(function () { 
  var $this = $(this);//獲取當(dāng)前對(duì)象 
  var html = '<div class="code-k-div">' + 
  '<div class="code_bg"></div>' + 
  '<div class="code-con">' + 
  '<div class="code-img">' + 
  '<div class="code-img-con">' + 
  '<div class="code-mask"><img src="../img/front(1).png"></div>' + 
  '<img src="../img/back(1).png"></div>' + 
  '<div class="code-push"><i class="icon-login-bg icon-w-25 icon-push">刷新</i><span class="code-tip"></span></div>' + 
  '</div>' + 
  '<div class="code-btn">' + 
  '<div class="code-btn-img code-btn-m"></div>' + 
  '<span>按住滑塊,拖動(dòng)完成上方拼圖</span>' + 
  '</div></div></div>'; 
  $this.html(html); 
 
  //定義拖動(dòng)參數(shù) 
  var $divMove = $(this).find(".code-btn-img"); //拖動(dòng)按鈕 
  var $divWrap = $(this).find(".code-btn");//鼠標(biāo)可拖拽區(qū)域 
  var mX = 0, mY = 0;//定義鼠標(biāo)X軸Y軸 
  var dX = 0, dY = 0;//定義滑動(dòng)區(qū)域左、上位置 
  var isDown = false;//mousedown標(biāo)記 
  if(document.attachEvent) {//ie的事件監(jiān)聽,拖拽div時(shí)禁止選中內(nèi)容,firefox與chrome已在css中設(shè)置過-moz-user-select: none; -webkit-user-select: none; 
  $divMove[0].attachEvent('onselectstart', function() { 
   return false; 
  }); 
  } 
  //按鈕拖動(dòng)事件 
  $divMove.on({ 
  mousedown: function (e) { 
   //清除提示信息 
   $this.find(".code-tip").html(""); 
   var event = e || window.event; 
   mX = event.pageX; 
   dX = $divWrap.offset().left; 
   dY = $divWrap.offset().top; 
   isDown = true;//鼠標(biāo)拖拽啟 
   $(this).addClass("active"); 
   //修改按鈕陰影 
   $divMove.css({"box-shadow":"0 0 8px #666"}); 
  } 
  }); 
  //鼠標(biāo)點(diǎn)擊松手事件 
  $(document).mouseup(function (e) { 
  var lastX = $this.find(".code-mask").offset().left - dX - 1; 
  isDown = false;//鼠標(biāo)拖拽啟 
  $divMove.removeClass("active"); 
  //還原按鈕陰影 
  $divMove.css({"box-shadow":"0 0 3px #ccc"}); 
  checkcode(lastX); 
  }); 
  //滑動(dòng)事件 
  $divWrap.mousemove(function (event) { 
  var event = event || window.event; 
  var x = event.pageX;//鼠標(biāo)滑動(dòng)時(shí)的X軸 
  if (isDown) { 
   if(x>(dX+30) && x<dX+$(this).width()-20){ 
   $divMove.css({"left": (x - dX - 20) + "px"});//div動(dòng)態(tài)位置賦值 
   $this.find(".code-mask").css({"left": (x - dX-30) + "px"}); 
   } 
  } 
  }); 
  //驗(yàn)證數(shù)據(jù) 
  function checkcode(code){ 
  var iscur=false; 
  //模擬ajax 
  setTimeout(function(){ 
   if(iscur){ 
   checkcoderesult(1,"驗(yàn)證通過"); 
   $this.find(".code-k-div").hide(); 
   opts.callback({code:1000,msg:"驗(yàn)證通過",msgcode:"23dfdf123"}); 
   }else{ 
   $divMove.addClass("error"); 
   checkcoderesult(0,"驗(yàn)證不通過"); 
   opts.callback({code:1001,msg:"驗(yàn)證不通過"}); 
   setTimeout(function() { 
    $divMove.removeClass("error"); 
    $this.find(".code-mask").animate({"left":"0px"},200); 
    $divMove.animate({"left": "10px"},200); 
   },400); 
   } 
  },500) 
  } 
  //驗(yàn)證結(jié)果 
  function checkcoderesult(i,txt){ 
  if(i==0){ 
   $this.find(".code-tip").addClass("code-tip-red"); 
  }else{ 
   $this.find(".code-tip").addClass("code-tip-green"); 
  } 
  $this.find(".code-tip").html(txt); 
  } 
 }) 
 } 
})(jQuery); 

css部分:

.code_bg{ 
 position: fixed; 
 top:0; 
 left: 0; 
 right:0; 
 bottom:0; 
 background-color: rgba(0,0,0,.5); 
 z-index: 99; 
} 
.icon-login-bg{ 
 background-image: url(../img/icon/loginicon.png); 
 background-repeat: no-repeat; 
} 
.code-con{ 
 position: absolute; 
 top:100px; 
 width: 320px; 
 left: 50%; 
 margin-left: -160px; 
 background-color: #fff; 
 z-index: 100; 
 -moz-user-select: none; 
 -webkit-user-select: none; 
} 
.code-img{ 
 margin: 5px 5px; 
 padding: 5px 5px; 
 background-color: #f5f6f7; 
} 
.code-img img{ 
 display: block; 
} 
.icon-w-25{ 
 display: inline-block; 
 width: 25px; 
 height: 25px; 
 text-indent: -9999px; 
} 
.icon-push{ 
 cursor: pointer; 
 background-position: -149px -95px; 
} 
.code-push{ 
 height: 25px; 
} 
.code-btn{ 
 position: relative; 
 height: 30px; 
 text-align: center; 
 color: #999; 
 margin: 10px 10px; 
 box-sizing: border-box; 
 background-color: #f5f6f7; 
 border-radius: 15px; 
 border: 1px solid #e1e1e1; 
} 
.code-btn-m{ 
 position: absolute; 
 width: 40px; 
 height: 40px; 
 border-radius: 50%; 
 background-color: #f5f6f7; 
 border: 1px solid #e1e1e1; 
 z-index: 5; 
 top:-8px; 
 left: 10px; 
 box-shadow: 0 0 3px #ccc; 
 cursor: pointer; 
 background-position: -63px 10px; 
} 
.code-btn-img{ 
 background-image:url(../img/icon/codejt.png); 
 background-repeat: no-repeat; 
} 
.code-btn-img.active{ 
 background-position: -134px 10px; 
} 
.code-btn-img.error{ 
 background-position: 8px 10px; 
} 
.code-img-con{ 
 position: relative; 
} 
.code-mask{ 
 position: absolute; 
 top:0; 
 left: 0; 
 z-index: 10; 
} 
.code-tip{ 
 padding-left: 10px; 
 font-size: 12px; 
 color: #999; 
} 
.code-tip-red{ 
 color: red; 
} 
.code-tip-green{ 
 color: green; 
} 

html部分:

<div id="imgscode"></div> 
<script> 
$("#imgscode").imgcode(); 
</script> 

效果圖:

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • 理解JavaScript表單的基礎(chǔ)知識(shí)

    理解JavaScript表單的基礎(chǔ)知識(shí)

    這篇文章主要帶領(lǐng)大家理解JavaScript表單的基礎(chǔ)知識(shí),對(duì)javascript表單腳本進(jìn)行深入學(xué)習(xí),感興趣的小伙伴們可以參考一下
    2016-01-01
  • TypeScript語法詳解之類型操作的補(bǔ)充

    TypeScript語法詳解之類型操作的補(bǔ)充

    TypeScript最大的一個(gè)特點(diǎn)就是變量是強(qiáng)類型的,也就是說在聲明變量的時(shí)候我們必須給他一個(gè)類型,下面這篇文章主要給大家介紹了關(guān)于TypeScript語法詳解之類型操作的補(bǔ)充,需要的朋友可以參考下
    2022-08-08
  • js中常見切割截取字符串的幾種方法小結(jié)

    js中常見切割截取字符串的幾種方法小結(jié)

    前端開發(fā)中,字符串處理是比較常見的,下面這篇文章主要給大家介紹了關(guān)于js中常見切割截取字符串的幾種方法,文中通過實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2022-09-09
  • js控制input框只讀實(shí)現(xiàn)示例

    js控制input框只讀實(shí)現(xiàn)示例

    控制input框只讀可以防止用戶對(duì)數(shù)據(jù)的更改,在某些情況下還是比較實(shí)用的,下面使用js來完成這個(gè)只讀實(shí)現(xiàn)
    2014-01-01
  • 微信小程序 彈窗自定義實(shí)例代碼

    微信小程序 彈窗自定義實(shí)例代碼

    這篇文章主要介紹了微信小程序 彈窗自定義實(shí)例代碼的相關(guān)資料,有時(shí)候做開發(fā)項(xiàng)目的時(shí)候需要根據(jù)客戶需求更改原系統(tǒng)的組件,這里就對(duì)小程序中彈窗進(jìn)行更改,需要的朋友可以參考下
    2017-03-03
  • ES6入門教程之變量的解構(gòu)賦值詳解

    ES6入門教程之變量的解構(gòu)賦值詳解

    這篇文章主要給大家介紹了關(guān)于ES6入門教程之變量的解構(gòu)賦值的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家學(xué)習(xí)或者使用ES6具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-04-04
  • JavaScript實(shí)現(xiàn)創(chuàng)建自定義對(duì)象的常用方式總結(jié)

    JavaScript實(shí)現(xiàn)創(chuàng)建自定義對(duì)象的常用方式總結(jié)

    這篇文章主要介紹了JavaScript實(shí)現(xiàn)創(chuàng)建自定義對(duì)象的常用方式,結(jié)合實(shí)例形式總結(jié)分析了JavaScript工廠模式、構(gòu)造函數(shù)模式、原型模式、組合模式等常用的自定義對(duì)象創(chuàng)建模式操作與使用技巧,需要的朋友可以參考下
    2018-07-07
  • uniapp 對(duì)于scroll-view滑動(dòng)和頁(yè)面滑動(dòng)的聯(lián)動(dòng)處理方法

    uniapp 對(duì)于scroll-view滑動(dòng)和頁(yè)面滑動(dòng)的聯(lián)動(dòng)處理方法

    這篇文章主要介紹了uniapp 對(duì)于scroll-view滑動(dòng)和頁(yè)面滑動(dòng)的聯(lián)動(dòng)處理方法,本文通過示例代碼給大家介紹的非常詳細(xì),感興趣的朋友一起看看吧
    2024-08-08
  • element-ui?對(duì)話框dialog使用echarts報(bào)錯(cuò)'dom沒有獲取到'的問題

    element-ui?對(duì)話框dialog使用echarts報(bào)錯(cuò)'dom沒有獲取到'的問題

    這篇文章主要介紹了element-ui?對(duì)話框dialog里使用echarts,報(bào)錯(cuò)'dom沒有獲取到'的問題,在這個(gè)事件里邊進(jìn)行echarts的初始化,執(zhí)行數(shù)據(jù),本文結(jié)合實(shí)例代碼給大家詳細(xì)講解,需要的朋友可以參考下
    2022-11-11
  • 關(guān)于刪除時(shí)的提示處理(確定刪除嗎)

    關(guān)于刪除時(shí)的提示處理(確定刪除嗎)

    在刪除時(shí)為了提醒用戶刪除數(shù)據(jù)的不可恢復(fù)一般都會(huì)有提示處理的,通常會(huì)使用js做到這一點(diǎn),下面有個(gè)不錯(cuò)的示例,感興趣的朋友可以參考下
    2013-11-11

最新評(píng)論