摘要:為了加強(qiáng)驗(yàn)證功能,減少的被攻擊。隊(duì)長(zhǎng)要求做一個(gè)支付寶的滑塊驗(yàn)證效果。通過(guò)查找大多數(shù)案例都是端展示效果,在手機(jī)端并不能友好展示。原文鏈接仿支付寶滑塊驗(yàn)證碼效果的前端實(shí)現(xiàn)展示效果圖滑塊效果的前端實(shí)現(xiàn)。
為了加強(qiáng)驗(yàn)證功能,減少APP的被攻擊。隊(duì)長(zhǎng)要求做一個(gè)支付寶的滑塊驗(yàn)證效果。除了它外觀和用戶體驗(yàn)上的優(yōu)秀外,它的安全性并未降低,通過(guò)對(duì)用戶行為的分析保證了安全校驗(yàn)。
通過(guò)查找大多數(shù)案例都是PC端展示效果,在手機(jī)端并不能友好展示。于是參考一位CSND博主的文章進(jìn)行了一些修改。
原文鏈接 CSDN-仿支付寶滑塊驗(yàn)證碼效果的前端實(shí)現(xiàn)
展示效果圖:
滑塊效果的前端實(shí)現(xiàn)。涵蓋的內(nèi)容主要: 滑塊前端樣式(html排版),滑塊的閃光移動(dòng)效果(CSS3 動(dòng)畫),以及滑塊滑動(dòng)腳本的編寫(javascript 按住,拖動(dòng),離開(kāi)事件的編寫。)
備注: 本實(shí)例HTML、CSS并無(wú)改動(dòng),只有 JS 的修改。
HTMl代碼
滑動(dòng)
CSS代碼
#drag{ position: relative; background-color: #e8e8e8; width: 300px; height: 34px; line-height: 34px; text-align: center; } #drag .handler{ position: absolute; top: 0px; left: 0px; width: 40px; height: 32px; border: 1px solid #ccc; cursor: move; } .handler_bg{ background: #fff url("../img/slider.png") no-repeat center; } .handler_ok_bg{ background: #fff url("../img/complet.png") no-repeat center; } #drag .drag_bg{ background-color: #7ac23c; height: 34px; width: 0px; } #drag .drag_text{ position: absolute; top: 0px; width: 300px; color:#9c9c9c; -moz-user-select: none; -webkit-user-select: none; user-select: none; -o-user-select:none; -ms-user-select:none; font-size: 12px; // add }
JS代碼
備注: 本實(shí)例HTML、CSS并無(wú)改動(dòng),只有 JS 的修改。
1、將鼠標(biāo)按下,移動(dòng),松開(kāi)事件 換成 按住開(kāi)始,按住移動(dòng),按住結(jié)束
2、定義手指所放在元素上的位置,來(lái)獲取pageX
3、取消事件綁定 off()
$.fn.drag = function(options) { var x, drag = this, isMove = false, defaults = { }; var options = $.extend(defaults, options); var handler = drag.find(".handler"); var drag_bg = drag.find(".drag_bg"); var text = drag.find(".drag_text"); var maxWidth = drag.width() - handler.width(); //能滑動(dòng)的最大間距 //觸摸屏幕時(shí)候的x軸的位置 handler.on("touchstart",function(e) { e.preventDefault(); isMove = true; var _touch = e.originalEvent.targetTouches[0];// 把元素放在手指所在的位置 x = _touch.pageX - parseInt(handler.css("left"), 10); }) //滑塊在移動(dòng)時(shí),移動(dòng)距離大于0小于最大間距,滑塊x軸位置等于滑塊移動(dòng)距離 .on("touchmove",function(e) { e.preventDefault(); var _touch = e.originalEvent.changedTouches[0]; var _x = _touch.pageX - x;// _x = e.pageX - (e.pageX - parseInt(handler.css("left"), 10)) = x if (isMove) { if (_x > 0 && _x <= maxWidth) { handler.css({"left": _x}); drag_bg.css({"width": _x}); } else if (_x > maxWidth) { //鼠標(biāo)指針移動(dòng)距離達(dá)到最大時(shí)清空事件 dragOk(); } } }) //離開(kāi)觸摸屏幕時(shí),判斷位置 .on("touchend", function(e) { e.preventDefault(); isMove = false; var _touch = e.originalEvent.changedTouches[0]; var _x = _touch.pageX - x; if (_x < maxWidth) { //松開(kāi)滑塊時(shí),如果沒(méi)有達(dá)到最大距離位置,滑塊就返回初始位置 handler.css({"left": 0}); drag_bg.css({"width": 0}); } }); //清空事件 function dragOk() { handler.removeClass("handler_bg").addClass("handler_ok_bg"); text.removeClass("slidetounlock").text("驗(yàn)證通過(guò)").css({"color":"#fff"}); //modify // drag.css({"color": "#fff !important"}); handler.css({"left": maxWidth}); // add drag_bg.css({"width": maxWidth}); // add //注意取消綁定的事件 handler.off("touchstart"); handler.off("touchmove"); handler.off("touchend"); } };
如有問(wèn)題,歡迎大家交流指正。QQ:1357912285
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://m.specialneedsforspecialkids.com/yun/52185.html
摘要:出現(xiàn)的地方就是在上滑塊無(wú)法拖動(dòng),經(jīng)過(guò)檢測(cè)發(fā)現(xiàn)是在上有這個(gè)問(wèn)題。彈窗是通過(guò)定位在頁(yè)面上的。當(dāng)表單激活的時(shí)候,由于手機(jī)自帶的輸入法彈起造成頁(yè)面向上滾動(dòng),會(huì)隱藏頁(yè)面頂部一部分。解決方法通過(guò)的事件改變的值為。記錄一下開(kāi)發(fā)終于到的問(wèn)題。 先說(shuō)下業(yè)務(wù)邏輯:登錄頁(yè)面,滑塊驗(yàn)證,手機(jī)號(hào)碼輸入完成以后,會(huì)有一個(gè)滑塊驗(yàn)證,驗(yàn)證正確則會(huì)收到短信驗(yàn)證碼。這就是這個(gè)登錄頁(yè)面的基本邏輯。 showImg(http...
摘要:出現(xiàn)的地方就是在上滑塊無(wú)法拖動(dòng),經(jīng)過(guò)檢測(cè)發(fā)現(xiàn)是在上有這個(gè)問(wèn)題。彈窗是通過(guò)定位在頁(yè)面上的。當(dāng)表單激活的時(shí)候,由于手機(jī)自帶的輸入法彈起造成頁(yè)面向上滾動(dòng),會(huì)隱藏頁(yè)面頂部一部分。解決方法通過(guò)的事件改變的值為。記錄一下開(kāi)發(fā)終于到的問(wèn)題。 先說(shuō)下業(yè)務(wù)邏輯:登錄頁(yè)面,滑塊驗(yàn)證,手機(jī)號(hào)碼輸入完成以后,會(huì)有一個(gè)滑塊驗(yàn)證,驗(yàn)證正確則會(huì)收到短信驗(yàn)證碼。這就是這個(gè)登錄頁(yè)面的基本邏輯。 showImg(http...
摘要:出現(xiàn)的地方就是在上滑塊無(wú)法拖動(dòng),經(jīng)過(guò)檢測(cè)發(fā)現(xiàn)是在上有這個(gè)問(wèn)題。彈窗是通過(guò)定位在頁(yè)面上的。當(dāng)表單激活的時(shí)候,由于手機(jī)自帶的輸入法彈起造成頁(yè)面向上滾動(dòng),會(huì)隱藏頁(yè)面頂部一部分。解決方法通過(guò)的事件改變的值為。記錄一下開(kāi)發(fā)終于到的問(wèn)題。 先說(shuō)下業(yè)務(wù)邏輯:登錄頁(yè)面,滑塊驗(yàn)證,手機(jī)號(hào)碼輸入完成以后,會(huì)有一個(gè)滑塊驗(yàn)證,驗(yàn)證正確則會(huì)收到短信驗(yàn)證碼。這就是這個(gè)登錄頁(yè)面的基本邏輯。 showImg(http...
摘要:仿滴滴出行項(xiàng)目最近,各大社區(qū)出現(xiàn)很多小伙伴的項(xiàng)目,趁著這股熱潮我也用擼了一個(gè)滴滴出行的項(xiàng)目。可是,后來(lái)在手機(jī)上發(fā)現(xiàn),輸入的時(shí)候居然調(diào)不出軟鍵盤,寫項(xiàng)目的時(shí)候沒(méi)考慮到設(shè)備問(wèn)題,簡(jiǎn)直是大大的失誤。也就是說(shuō)可以在組件內(nèi)部進(jìn)行請(qǐng)求,不需要提交。 Vue2.0 仿滴滴出行項(xiàng)目 最近,各大社區(qū)出現(xiàn)很多小伙伴的vue項(xiàng)目,趁著這股熱潮我也用vue擼了一個(gè)滴滴出行的項(xiàng)目。 效果預(yù)覽 showImg(h...
閱讀 2430·2021-11-23 10:04
閱讀 1501·2021-09-02 15:21
閱讀 897·2019-08-30 15:44
閱讀 1069·2019-08-30 10:48
閱讀 714·2019-08-29 17:21
閱讀 3562·2019-08-29 13:13
閱讀 1989·2019-08-23 17:17
閱讀 1792·2019-08-23 17:04