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 相关文章推荐
js中精确计算加法和减法示例
Mar 28 Javascript
JS组件Bootstrap Table布局详解
May 27 Javascript
jQuery实现布局高宽自适应的简单实例
May 28 Javascript
jQuery.Validate表单验证插件的使用示例详解
Jan 04 Javascript
微信小程序 页面跳转和数据传递实例详解
Jan 19 Javascript
JS实现的模仿QQ头像资料卡显示与隐藏效果
Apr 07 Javascript
jQuery 表单序列化实例代码
Jun 11 jQuery
图解javascript作用域链
May 27 Javascript
JS实现使用POST方式发送请求
Aug 30 Javascript
Vue实例的对象参数options的几个常用选项详解
Nov 08 Javascript
js面向对象之实现淘宝放大镜
Jan 15 Javascript
vue实现学生信息管理系统
May 30 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
php magic_quotes_gpc的一点认识与分析
2008/08/18 PHP
PHP实现域名whois查询的代码(数据源万网、新网)
2010/02/22 PHP
php下目前为目最全的CURL中文说明
2010/08/01 PHP
php中使用临时表查询数据的一个例子
2013/02/03 PHP
PHP编码规范的深入探讨
2013/06/06 PHP
php上传后台无法收到数据解决方法
2019/10/28 PHP
正则表达式判断是否存在中文和全角字符和判断包含中文字符串长度
2008/09/27 Javascript
基于jQuery的公告无限循环滚动实现代码
2012/05/11 Javascript
防止浏览器记住用户名及密码的简单实用方法
2013/04/22 Javascript
JS 两个字符串时间的天数差计算
2013/08/25 Javascript
JS关闭窗口或JS关闭页面的几种代码分享
2013/10/25 Javascript
js过滤特殊字符输入适合输入、粘贴、拖拽多种情况
2014/03/22 Javascript
jquery实现简单手风琴菜单效果实例
2015/06/13 Javascript
在Node.js中使用Javascript Generators详解
2016/05/05 Javascript
JS简单实现滑动加载数据的方法示例
2017/10/18 Javascript
vue项目中跳转到外部链接的实例讲解
2018/09/20 Javascript
JavaScript 九种跨域方式实现原理
2019/02/11 Javascript
解决layui轮播图有数据不显示的情况
2019/09/16 Javascript
javascript 高级语法之继承的基本使用方法示例
2019/11/11 Javascript
基于jQuery实现可编辑的表格
2019/12/11 jQuery
vue开发移动端底部导航条功能
2020/04/08 Javascript
vue 使用class创建和清除水印的示例代码
2020/12/25 Vue.js
Python实现全局变量的两个解决方法
2014/07/03 Python
用Python实现一个简单的线程池
2015/04/07 Python
对于Python的框架中一些会话程序的管理
2015/04/20 Python
浅谈Python 的枚举 Enum
2017/06/12 Python
python删除不需要的python文件方法
2018/04/24 Python
在numpy矩阵中令小于0的元素改为0的实例
2019/01/26 Python
python抓取需要扫微信登陆页面
2019/04/29 Python
python tkinter实现彩球碰撞屏保
2019/07/30 Python
县委常委班子对照检查材料思想汇报
2014/09/28 职场文书
建筑工地文明标语
2014/10/09 职场文书
2014年校务公开工作总结
2014/12/18 职场文书
2015年村党支部工作总结
2015/04/30 职场文书
大卫科波菲尔读书笔记
2015/06/30 职场文书
Mysql 设置boolean类型的操作
2021/06/04 MySQL