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 相关文章推荐
Json序列化和反序列化方法解析
Dec 19 Javascript
JavaScript变量声明详解
Nov 27 Javascript
再谈JavaScript异步编程
Jan 27 Javascript
在ASP.NET MVC项目中使用RequireJS库的用法示例
Feb 15 Javascript
js日期插件dateHelp获取本月、三个月、今年的日期
Mar 07 Javascript
详细谈谈AngularJS的子级作用域问题
Sep 05 Javascript
js从数组中删除指定值(不是指定位置)的元素实现代码
Sep 13 Javascript
JavaScript注入漏洞的原理及防范(详解)
Dec 04 Javascript
angular.js指令中的controller、compile与link函数的不同之处
May 10 Javascript
web页面和微信小程序页面实现瀑布流效果
Sep 26 Javascript
json解析大全 双引号、键值对不在一起的情况
Dec 06 Javascript
Vue3.0的优化总结
Oct 16 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 面向对象实现代码
2009/11/11 PHP
php下获取客户端ip地址的函数
2010/03/15 PHP
php curl模拟post请求小实例
2013/11/13 PHP
PHP CURL或file_get_contents获取网页标题的代码及两者效率的稳定性问题
2015/11/30 PHP
php 数组字符串搜索array_search技巧
2016/07/05 PHP
Thinkphp开发--集成极光推送
2017/09/15 PHP
Laravel框架Eloquent ORM简介、模型建立及查询数据操作详解
2019/12/04 PHP
jQuery 浮动广告实现代码
2008/12/25 Javascript
Ext.FormPanel 提交和 Ext.Ajax.request 异步提交函数的区别
2009/11/12 Javascript
JavaScript 图像动画的小demo
2012/05/23 Javascript
js实现横向百叶窗效果网页切换动画效果的方法
2015/03/02 Javascript
JSON 数据格式详解
2017/09/13 Javascript
微信小程序 动画的简单实例
2017/10/12 Javascript
node全局变量__dirname与__filename的区别
2019/01/14 Javascript
jQuery子选择器与可见性选择器实例分析
2019/06/28 jQuery
vuejs中父子组件之间通信方法实例详解
2020/01/17 Javascript
ES6中Promise的使用方法实例总结
2020/02/18 Javascript
RC4文件加密的python实现方法
2015/06/30 Python
Python中跳台阶、变态跳台阶与矩形覆盖问题的解决方法
2018/05/19 Python
PyTorch线性回归和逻辑回归实战示例
2018/05/22 Python
python一行sql太长折成多行并且有多个参数的方法
2018/07/19 Python
Python实现合并excel表格的方法分析
2019/04/13 Python
Python直接赋值、浅拷贝与深度拷贝实例分析
2019/06/18 Python
pyqt5 QProgressBar清空进度条的实例
2019/06/21 Python
python图片指定区域替换img.paste函数的使用
2020/04/09 Python
Python3.7下安装pyqt5的方法步骤(图文)
2020/05/12 Python
英国的潮牌鞋履服饰商店:size?
2019/03/26 全球购物
波兰快递服务:Globkurier.pl
2019/11/08 全球购物
毕业生怎样写好自荐信
2013/11/11 职场文书
国贸专业大学生职业生涯规划范文
2014/01/10 职场文书
银行先进个人事迹材料
2014/05/11 职场文书
校园新闻广播稿5篇
2014/10/10 职场文书
党员专题组织生活会发言材料
2014/10/17 职场文书
专家推荐信怎么写
2015/03/25 职场文书
2015年妇幼保健工作总结
2015/05/19 职场文书
初中数学教学反思范文
2016/02/17 职场文书