javascript实现支付宝滑块验证码效果


Posted in Javascript onJuly 24, 2020

支付宝的滑块验证效果,又刷新了大家对于验证码的认知,这种滑块效果,改善了用户体验。除了它外观和用户体验上的优秀外,其实它的安全性也并未降低,后端对用户行为的分析依然保证了安全校验。

下面我们在此介绍一下,滑块效果的前端实现。

涵盖的内容主要: 滑块前端样式(html排版),滑块的闪光移动效果(CSS3 动画),以及滑块滑动脚本的编写(javascript 移动,点击,拖拽事件的编写。)

备注: 本实例基于网上Demo 增添 CSS效果 和 修复 JS BUG 等问题。大家直接粘贴代码到对应的文件,便可直接运行。

运行结果

首先给出几张效果图。

javascript实现支付宝滑块验证码效果

javascript实现支付宝滑块验证码效果

javascript实现支付宝滑块验证码效果

滑块前端HTML

<!DOCTYPE html>
<html lang="en">
<head>
 <meta charset="UTF-8">
 <title>滑动</title>
 <link rel="stylesheet" href="css/drag.css" >
 <script src="js/jquery-1.7.1.min.js"></script>
 <script src="js/drag.js"></script>
 <style type="text/css">
 .slidetounlock{
 font-size: 12px;
 background:-webkit-gradient(linear,left top,right top,color-stop(0,#4d4d4d),color-stop(.4,#4d4d4d),color-stop(.5,#fff),color-stop(.6,#4d4d4d),color-stop(1,#4d4d4d));
 -webkit-background-clip:text;
 -webkit-text-fill-color:transparent;
 -webkit-animation:slidetounlock 3s infinite;
 -webkit-text-size-adjust:none
 }
 @-webkit-keyframes slidetounlock{0%{background-position:-200px 0} 100%{background-position:200px 0}}

 </style>
</head>
<body>
<div id="wrapper" style="position: relative;top: 300px;left:300px;">
 <div id="drag">
 <div class="drag_bg"></div>
 <div class="drag_text slidetounlock" onselectstart="return false;" unselectable="on">
 请按住滑块,拖动到最右边
 </div>
 <div class="handler handler_bg"></div>
 </div>
</div>

 <!--<a href="#" class="img"><img src="img/Lighthouse.jpg"/></a>-->
<script>
 $('#drag').drag();
</script>
</body>
</html>

HTML 滑块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

/**
 * Created by shuai_wy on 2017/3/14.
 */
$.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(); //能滑动的最大间距

 //鼠标按下时候的x轴的位置
 handler.mousedown(function(e) {
 isMove = true;
 x = e.pageX - parseInt(handler.css('left'), 10);
 });

 //鼠标指针在上下文移动时,移动距离大于0小于最大间距,滑块x轴位置等于鼠标移动距离
 $(document).mousemove(function(e) {
 var _x = e.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) { //鼠标指针移动距离达到最大时清空事件
 dragOk();
 }
 }
 }).mouseup(function(e) {
 isMove = false;
 var _x = e.pageX - x;
 if (_x < maxWidth) { //鼠标松开时,如果没有达到最大距离位置,滑块就返回初始位置
 handler.css({'left': 0});
 drag_bg.css({'width': 0});
 }
 });

 //清空事件
 function dragOk() {
 handler.removeClass('handler_bg').addClass('handler_ok_bg');
 text.removeClass('slidetounlock').text('验证通过').css({'color':'#fff'}); //modify
 // drag.css({'color': '#fff !important'});

 handler.css({'left': maxWidth}); // add
 drag_bg.css({'width': maxWidth}); // add

 handler.unbind('mousedown');
 $(document).unbind('mousemove');
 $(document).unbind('mouseup');

 }
};

仿支付宝滑块效果下载链接

Demo下载链接

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
用javascript实现给出的盒子的序列是否可连为一矩型
Aug 30 Javascript
javascript奇异的arguments分析
Oct 20 Javascript
Javascript数组Array方法解读
Mar 13 Javascript
Node.js的项目构建工具Grunt的安装与配置教程
May 12 Javascript
JavaScript 冒泡排序和选择排序的实现代码
Sep 03 Javascript
JavaScript学习笔记整理_关于表达式和语句
Sep 19 Javascript
Bootstrap 手风琴菜单的实现代码
Jan 20 Javascript
微信小程序实现批量倒计时功能
Nov 01 Javascript
详解Node.js使用token进行认证的简单示例
May 25 Javascript
JS实现网站楼层导航效果代码实例
Jun 16 Javascript
vue键盘事件点击事件加native操作
Jul 27 Javascript
不依任何赖第三方,单纯用vue实现Tree 树形控件的案例
Sep 21 Javascript
解决父组件将子组件作为弹窗调用只执行一次created的问题
Jul 24 #Javascript
如何通过vscode运行调试javascript代码
Jul 24 #Javascript
解决vue做详情页跳转的时候使用created方法 数据不会更新问题
Jul 24 #Javascript
js实现验证码功能
Jul 24 #Javascript
解决VUE自定义拖拽指令时 onmouseup 与 click事件冲突问题
Jul 24 #Javascript
深入了解Vue.js 混入(mixins)
Jul 23 #Javascript
JS实现简单移动端鼠标拖拽
Jul 23 #Javascript
You might like
玩家交还《星际争霸》原始码光盘 暴雪报以厚礼
2017/05/05 星际争霸
PHP4 与 MySQL 交互使用
2006/10/09 PHP
PHP IE中下载附件问题解决方法
2014/01/07 PHP
yii使用activeFileField控件实现上传文件与图片的方法
2015/12/28 PHP
简单谈谈PHP中的include、include_once、require以及require_once语句
2016/04/23 PHP
Aster vs KG BO3 第二场2.19
2021/03/10 DOTA
才发现的超链接js导致网页中GIF动画停止的解决方法
2007/11/02 Javascript
jquery控制listbox中项的移动并排序的实现代码
2010/09/28 Javascript
JavaScript访问样式表代码
2010/10/15 Javascript
js作用域及作用域链概念理解及使用
2013/04/15 Javascript
JavaScript中setInterval的用法总结
2013/11/20 Javascript
node.js使用nodemailer发送邮件实例
2014/03/10 Javascript
Nodejs学习笔记之测试驱动
2015/04/16 NodeJs
jQuery ajax全局函数处理session过期后的ajax跳转问题
2016/06/03 Javascript
解决vue中监听input只能输入数字及英文或者其他情况的问题
2018/08/30 Javascript
js图片无缝滚动插件使用详解
2020/05/26 Javascript
vuejs移动端实现div拖拽移动
2019/07/25 Javascript
解决VUE自定义拖拽指令时 onmouseup 与 click事件冲突问题
2020/07/24 Javascript
Python写的贪吃蛇游戏例子
2014/06/16 Python
Python描述器descriptor详解
2015/02/03 Python
Python+Selenium+PIL+Tesseract自动识别验证码进行一键登录
2017/09/20 Python
详解Python 调用C# dll库最简方法
2019/06/20 Python
python基础教程之while循环
2019/08/14 Python
wxPython实现列表增删改查功能
2019/11/19 Python
利用Python实现自动扫雷小脚本
2020/12/17 Python
Booking.com缤客中国:全球酒店在线预订网站
2020/05/03 全球购物
拾金不昧的表扬信
2014/01/16 职场文书
研究生毕业鉴定
2014/01/29 职场文书
优秀信贷员先进事迹
2014/01/31 职场文书
信息专业毕业生五年职业规划参考
2014/02/06 职场文书
学校党员个人问题整改措施思想汇报
2014/10/08 职场文书
教师廉洁自律个人总结
2015/02/10 职场文书
2015年中秋晚会主持词
2015/07/01 职场文书
2016党风廉政建设心得体会范文
2016/01/25 职场文书
为什么说餐饮很难做,是因为你不了解这些新规则
2019/08/20 职场文书
漫改真人电影「萌系男友是燃燃的橘色」公开先导视觉图
2022/03/21 日漫