最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

JS實現(xiàn)拖動滑塊驗證

 更新時間:2022年03月07日 09:30:59   作者:Cloud%  
這篇文章主要為大家詳細(xì)介紹了JS實現(xiàn)拖動滑塊驗證,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下

使用這種驗證方法的目的:證明當(dāng)前的用戶不是機器人~防止惡意操作。

實現(xiàn)思路:

1、獲取silde滑塊(獲取元素)

2、為元素注冊事件———鼠標(biāo)點擊事件(onmousedown)鼠標(biāo)點擊之后獲得當(dāng)前鼠標(biāo)的X坐標(biāo)。

3、如何獲取到鼠標(biāo)的x坐標(biāo)——使用clientX事件(當(dāng)事件被觸發(fā)時,鼠標(biāo)指針的水平坐標(biāo))。

4、鼠標(biāo)移動事件發(fā)生后根據(jù)從最開始點擊的X值到移動后的X值之差,作為滑塊移動的差值———— 鼠標(biāo)移動事件 (onmousemove);

5、獲取鼠標(biāo)移動之后的X坐標(biāo)

6、獲得初始X坐標(biāo)和移動后X值

7、該變 left的值

8、綠色背景跟著小滑塊走

9、鼠標(biāo)抬起清除鼠標(biāo)移動事件。

注意:哪怕鼠標(biāo)移動的時候超出了最外面的方塊區(qū)域,滑塊也要可以移動。所以不能只在滑塊上設(shè)置移動事件,需要在文檔document上設(shè)置移動事件。

主要用到的事件:

1、鼠標(biāo)點擊事件onmousedown;

2、鼠標(biāo)移動事件onmousemove;

3、獲取鼠標(biāo)指針X坐標(biāo) clientX;

4、鼠標(biāo)按鍵被松開 onmouseup;(有點類似與 click點擊)

注意:

1、作用域——— 一個函數(shù)擁有一個作用域 (局部作用域)

2、怎樣才能實現(xiàn)鼠標(biāo)移動的時候使滑塊也移動:改變滑塊的left值。

3、想要實現(xiàn)滑塊跟隨鼠標(biāo)移動,就要獲得鼠標(biāo)移動的x坐標(biāo)。

實現(xiàn)代碼:

<!DOCTYPE html>
<html lang="en">
<head>
? ? <meta charset="UTF-8">
? ? <title>Document</title>
? ? <style>
? ? *{
? ? ? ? padding:0;
? ? ? ? margin:0;
? ? }
? ? body{
? ? ? ? user-select:none;
? ? ? ? /*禁止用戶選中*/
? ? }
? ? .wrap{
? ? ? ? width:300px;
? ? ? ? height: 40px;
? ? ? ? background-color:#e8e8e8;
? ? ? ? margin:100px auto;
? ? ? ? text-align: center;
? ? ? ? line-height: 40px;
? ? ? ? /*border-radius: 7px;*/
? ? ? ? position:relative;
? ? }
? ? .rect{
? ? ? ? position:relative;
? ? ? ? width:300px;
? ? ? ? height:100%;
? ? }
? ? .rec{
? ? ? ? position:absolute;
? ? ? ? top:0;
? ? ? ? left:0;
? ? ? ? width:0;
? ? ? ? height:100%;
? ? ? ? background: #00b894;
? ? }
? ? .silde{
? ? ? ? position:absolute;
? ? ? ? top:0;
? ? ? ? left:0;
? ? ? ? z-index: 11;
? ? ? ? /*在這里面,當(dāng)設(shè)置長寬為40px時在加上邊框1px就會超出 40px。
? ? ? ? 可以使用怪異盒模型,怪異盒模型會使盒子的寬高包括邊框,操持40px;*/
? ? ? ? box-sizing:border-box;
? ? ? ? width:40px;
? ? ? ? height:40px;
? ? ? ? background: #fff;
? ? ? ? border:1px solid #ccc;
? ? }

? ? </style>
</head>
<body>
? ? <div class='wrap'>
? ? ? ? <div class='rec'>
? ? ? ? ? ? <div class='rect'>滑塊拖拽驗證
? ? ? ? ? ? ? ? <div class='silde'><img src="hkkkk.png" alt=""></div>
? ? ? ? ? ? </div>
? ? ? ? </div>
? ? </div>
? ? <script>
? ? ? ? //獲取事件
? ? ? ? var silde = document.querySelector('.silde');
? ? ? ? var rec = document.querySelector('.rec');
? ? ? ? var rect= document.querySelector('.rect');
? ? ? ? var img= document.querySelector('img');
? ? ? ? var minusX; ?//保存變化的 X坐標(biāo)(全局變量)

? ? ? ? //注冊事件
? ? ? ? silde.onmousedown = function(e) { ? ?//鼠標(biāo)點擊事件,點擊之后執(zhí)行函數(shù),獲得點擊位置的X坐標(biāo)
? ? ? ? ? ? var initX = e.clientX; ? ?//保存初始按下位置的 X坐標(biāo);
? ? ? ? ? ? console.log(11,e); ? ?//用以測試
? ? ? ? ? ? document.onmousemove = function(e) { ? ? ? ?//鼠標(biāo)移動事件
? ? ? ? ? ? ? ? var moveX = e.clientX;
? ? ? ? ? ? ? ? // var minusX = moveX - initX; ? ?//變化的坐標(biāo)(要注意作用域的問題,在這里面定義變量,在這個函數(shù)之外的函數(shù)就沒法使用,所以要將minusX變成全局變量)
? ? ? ? ? ? ? ? minusX = moveX - initX;
? ? ? ? ? ? ? ? ?//這里注意一下,獲得的minusX只是一個差值,沒有單位想讓 滑塊的位置改變還需要加上 單位px
? ? ? ? ? ? ? ? ?//這個時候滑塊會跟隨鼠標(biāo)整個頁面一行的跑,價格條件判段,限制 滑塊移動的區(qū)域不可以超過邊框,保持left<=0。
? ? ? ? ? ? ? ? ?if(minusX < 0) {
? ? ? ? ? ? ? ? ? ? ?// silde.style.left = '0';
? ? ? ? ? ? ? ? ? ? ?minusX = 0;
? ? ? ? ? ? ? ? ?}
? ? ? ? ? ? ? ? ?if(minusX > 260) { //判斷最大值
? ? ? ? ? ? ? ? ? ? ?// silde.style.left = '251';
? ? ? ? ? ? ? ? ? ? ?// 這里面的距離用邊框長度減去 滑塊的長度 300-49
? ? ? ? ? ? ? ? ? ? ?minusX = 260;
? ? ? ? ? ? ? ? ? ? ?console.log('我到頭了');
? ? ? ? ? ? ? ? ?}
? ? ? ? ? ? ? ? ?silde.style.left = minusX + 'px';
? ? ? ? ? ? ? ? ?rec.style.width = minusX + 'px';
? ? ? ? ? ? ? ? ?if(minusX >= 260) {
? ? ? ? ? ? ? ? ? ? ?rect.style.color = 'white';
? ? ? ? ? ? ? ? ? ? ?img.src = 'sure.png';
? ? ? ? ? ? ? ? ? ? ?document.onmousemove = null;
? ? ? ? ? ? ? ? ? ? ?silde.onmousedown = null;
? ? ? ? ? ? ? ? ? ? ?// rect.innerHTML = '驗證成功';
? ? ? ? ? ? ? ? ?}
? ? ? ? ? ? ? ? // console.log(222,e,minusX); ? ?//用以測試
? ? ? ? ? ? }
? ? ? ? }
? ? ? ? document.onmouseup = function () { ? ?//鼠標(biāo)抬起事件
? ? ? ? ? ? document.onmousemove = null; ? ?//不允許鼠標(biāo)移動事件發(fā)生
? ? ? ? ? ? console.log(111);
? ? ? ? ? ? if(minusX < 260) { //如果沒有到頭
? ? ? ? ? ? ? ? img.src = 'hkkkk.png';
? ? ? ? ? ? ? ? silde.style.left = 0; ? ?//設(shè)置一個 left值
? ? ? ? ? ? ? ? rec.style.width = 0; ? ?//綠色背景層設(shè)置寬度
? ? ? ? ? ? }
? ? ? ? }
? ? </script>
</body>
</html>

實現(xiàn)效果:

案例中所用到的小圖標(biāo)可以自行獲取:

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

相關(guān)文章

  • window.onresize 多次觸發(fā)的解決方法

    window.onresize 多次觸發(fā)的解決方法

    用了window.onresize但是發(fā)現(xiàn)每次 onresize 后頁面中狀態(tài)總是不對,下面與大家分享下onresize 事件多次觸發(fā)的解決方法
    2013-11-11
  • JavaScript高仿支付寶倒計時頁面及代碼實現(xiàn)

    JavaScript高仿支付寶倒計時頁面及代碼實現(xiàn)

    在支付寶上我們經(jīng)常會見到支付寶倒計時功能,倒計時應(yīng)用非常廣泛,下文給大家介紹js制作支付寶倒計時功能,但是里面涉及到,倒計時,彈框,以及字體圖的相關(guān)知識,感興趣的朋友一起看看吧
    2016-10-10
  • jquery根據(jù)錨點offset值實現(xiàn)動畫切換

    jquery根據(jù)錨點offset值實現(xiàn)動畫切換

    點擊后僵硬的切換是不是很不爽,下面為大家介紹的是根據(jù)錨點offset值來實現(xiàn)動畫切換,喜歡的朋友不要錯過
    2014-09-09
  • tkinter使用js的canvas實現(xiàn)漸變色

    tkinter使用js的canvas實現(xiàn)漸變色

    這篇文章主要為大家介紹了tkinter使用canvas實現(xiàn)漸變色,具有一定的參考價值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來幫助
    2021-12-12
  • js實現(xiàn)從左向右滑動式輪播圖效果

    js實現(xiàn)從左向右滑動式輪播圖效果

    這篇文章主要為大家詳細(xì)介紹了js實現(xiàn)從左向右滑動式輪播圖效果,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-07-07
  • webix+springmvc session超時跳轉(zhuǎn)登錄頁面

    webix+springmvc session超時跳轉(zhuǎn)登錄頁面

    這篇文章主要介紹了webix+springmvc session超時跳轉(zhuǎn)登錄頁面的相關(guān)資料,非常不錯具有參考借鑒價值,需要的朋友可以參考下
    2016-10-10
  • 深入分析Javascript跨域問題

    深入分析Javascript跨域問題

    JavaScript出于安全方面的考慮,不允許跨域調(diào)用其他頁面的對象。但在安全限制的同時也給注入iframe或是ajax應(yīng)用上帶來了不少麻煩。這里把涉及到跨域的一些問題簡單地整理一下
    2015-04-04
  • js中關(guān)于base64編碼的問題

    js中關(guān)于base64編碼的問題

    這篇文章主要介紹了js中關(guān)于base64編碼的問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2023-02-02
  • 前端i18n?Ally插件使用方法簡單介紹

    前端i18n?Ally插件使用方法簡單介紹

    為了解決VSCode擴展i18nAlly在不同項目中無法正確找到翻譯文件路徑的問題,推薦在項目根目錄下的.vscode目錄中編輯settings.json文件進行配置,需要的朋友可以參考下
    2024-11-11
  • 前端數(shù)據(jù)加密方式的常用6種使用最詳解

    前端數(shù)據(jù)加密方式的常用6種使用最詳解

    在前端開發(fā)中加密技術(shù)是保護數(shù)據(jù)安全的重要手段,本文介紹了六種常用的加密方法,其中包括Base64、MD5、SHA256、SHA1、AES和字符串的escape編碼,每種加密方法都有其特定用途和使用場景,選擇合適的加密方法可以有效提升應(yīng)用的安全性,需要的朋友可以參考下
    2024-10-10

最新評論

内丘县| 武功县| 莱芜市| 长丰县| 翁源县| 乳源| 宝清县| 乌苏市| 沭阳县| 禄丰县| 甘南县| 齐齐哈尔市| 安溪县| 沐川县| 祁阳县| 衡山县| 海林市| 信丰县| 洛阳市| 连江县| 北宁市| 丁青县| 长阳| 宽甸| 宁乡县| 通化县| 达州市| 垦利县| 松桃| 安阳县| 玉田县| 井冈山市| 海兴县| 民县| 大埔区| 横峰县| 宁蒗| 奉节县| 开化县| 广德县| 曲阜市|