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在IE和FireFox中的不同表现简析
Dec 03 Javascript
JS随即打乱数组实现代码
Dec 03 Javascript
编写js扩展方法判断一个数组中是否包含某个元素
Nov 08 Javascript
javascritp添加url参数将参数加入到url中
Sep 25 Javascript
JavaScript对象数组的排序处理方法
Oct 21 Javascript
js实现图片上传并正常显示
Dec 19 Javascript
Bootstrap表单布局
Jul 19 Javascript
javascript判断元素存在和判断元素存在于实时的dom中的方法
Jan 17 Javascript
深入浅析js原型链和vue构造函数
Oct 25 Javascript
js笔试题-接收get请求参数
Jun 15 Javascript
JS加载解析Markdown文档过程详解
May 19 Javascript
详解javascript void(0)
Jul 13 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读取ACCESS数据到MYSQL的代码
2011/05/11 PHP
Codeigniter框架的更新事务(transaction)BUG及解决方法
2014/07/25 PHP
本地计算机无法启动Apache故障处理
2014/08/08 PHP
在Windows系统下使用PHP生成Word文档的教程
2015/07/03 PHP
PHPTree――php快速生成无限级分类
2018/03/30 PHP
由prototype_1.3.1进入javascript殿堂-类的初探
2006/11/06 Javascript
js中 关于undefined和null的区别介绍
2013/04/16 Javascript
nodejs 提示‘xxx’ 不是内部或外部命令解决方法
2014/11/20 NodeJs
js面向对象之静态方法和静态属性实例分析
2015/01/10 Javascript
js实现横向伸展开的二级导航菜单代码
2015/08/28 Javascript
AngularJS中$watch和$timeout的使用示例
2016/09/20 Javascript
正则表达式替换html元素属性的方法
2016/11/26 Javascript
AngularJS基于ngInfiniteScroll实现下拉滚动加载的方法
2016/12/14 Javascript
微信小程序 radio单选框组件详解及实例代码
2017/01/10 Javascript
vue中eventbus被多次触发以及踩过的坑
2017/12/02 Javascript
mint-ui在vue中的使用示例
2018/04/05 Javascript
JS简单实现动态添加HTML标记的方法示例
2018/04/08 Javascript
微信小程序之裁剪图片成圆形的实现代码
2018/10/11 Javascript
vue项目环境变量配置的实现方法
2018/10/12 Javascript
详解Express笔记之动态渲染HTML(新手入坑)
2018/12/13 Javascript
微信小程序页面调用自定义组件内的事件详解
2019/09/12 Javascript
vue 导航菜单刷新状态不消失,显示对应的路由界面操作
2020/08/06 Javascript
JavaScript动态生成表格的示例
2020/11/02 Javascript
使用Python实现博客上进行自动翻页
2017/08/23 Python
Python读取文件内容的三种常用方式及效率比较
2017/10/07 Python
基于Django ORM、一对一、一对多、多对多的全面讲解
2019/07/26 Python
解决django同步数据库的时候app models表没有成功创建的问题
2019/08/09 Python
python exit出错原因整理
2020/08/31 Python
澳大利亚设计的优质鞋类和适合澳大利亚生活方式的服装:Rivers
2019/04/23 全球购物
Aurora London官网:奢华、负担得起的皮革手袋
2020/08/01 全球购物
工厂实习感言
2014/01/14 职场文书
少先队学雷锋活动总结范文
2014/03/09 职场文书
公务员爱岗敬业演讲稿
2014/08/26 职场文书
小学生暑假安全公约
2015/07/14 职场文书
2016教师国培研修感言
2015/12/08 职场文书
如何起草一份正确的合伙创业协议书?
2019/07/04 职场文书