一個(gè)簡(jiǎn)單的滑塊拖動(dòng)驗(yàn)證碼實(shí)例

實(shí)現(xiàn)思路:
主要用到的事件:
實(shí)現(xiàn)代碼:
<html lang="en"><head><meta charset="UTF-8"><title>Document</title><style>*{padding:0;margin:0;}body{user-select:none;/*禁止用戶(hù)選中*/}.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è)置長(zhǎng)寬為40px時(shí)在加上邊框1px就會(huì)超出 40px。可以使用怪異盒模型,怪異盒模型會(huì)使盒子的寬高包括邊框,操持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'>滑塊拖拽驗(yàn)證<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)(全局變量)//注冊(cè)事件silde.onmousedown = function(e) { //鼠標(biāo)點(diǎn)擊事件,點(diǎn)擊之后執(zhí)行函數(shù),獲得點(diǎn)擊位置的X坐標(biāo)var initX = e.clientX; //保存初始按下位置的 X坐標(biāo);console.log(11,e); //用以測(cè)試document.onmousemove = function(e) { //鼠標(biāo)移動(dòng)事件var moveX = e.clientX;// var minusX = moveX - initX; //變化的坐標(biāo)(要注意作用域的問(wèn)題,在這里面定義變量,在這個(gè)函數(shù)之外的函數(shù)就沒(méi)法使用,所以要將minusX變成全局變量)minusX = moveX - initX;//這里注意一下,獲得的minusX只是一個(gè)差值,沒(méi)有單位想讓 滑塊的位置改變還需要加上 單位px//這個(gè)時(shí)候滑塊會(huì)跟隨鼠標(biāo)整個(gè)頁(yè)面一行的跑,價(jià)格條件判段,限制 滑塊移動(dòng)的區(qū)域不可以超過(guò)邊框,保持left<=0。if(minusX < 0) {// silde.style.left = '0';minusX = 0;}if(minusX > 260) { //判斷最大值// silde.style.left = '251';// 這里面的距離用邊框長(zhǎng)度減去 滑塊的長(zhǎng)度 300-49minusX = 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 = '驗(yàn)證成功';}// console.log(222,e,minusX); //用以測(cè)試}}document.onmouseup = function () { //鼠標(biāo)抬起事件document.onmousemove = null; //不允許鼠標(biāo)移動(dòng)事件發(fā)生console.log(111);if(minusX < 260) { //如果沒(méi)有到頭img.src = 'hkkkk.png';silde.style.left = 0; //設(shè)置一個(gè) left值rec.style.width = 0; //綠色背景層設(shè)置寬度}}</script></body></html>


案例中所用到的小圖標(biāo)可以自行獲?。?/span>


學(xué)習(xí)更多技能
請(qǐng)點(diǎn)擊下方公眾號(hào)
![]()
評(píng)論
圖片
表情
