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获取textarea中的光标位置
May 06 Javascript
extjs 列表框(multiselect)的动态添加列表项的方法
Jul 31 Javascript
jQuery 选择表格(table)里的行和列及改变简单样式
Dec 15 Javascript
JS实现随机数生成算法示例代码
Aug 08 Javascript
让checkbox不选中即将选中的checkbox不选中
Jul 11 Javascript
简单谈谈Javascript中类型的判断
Oct 19 Javascript
select隐藏选中值对应的id,显示其它id的简单实现方法
Aug 25 Javascript
layui radio单选限制下一个radio单选的实例
Sep 03 Javascript
js回调函数仿360开机
Dec 26 Javascript
JavaScript队列结构Queue实现过程解析
Mar 07 Javascript
在vs code 中如何创建一个自己的 Vue 模板代码
Nov 10 Javascript
JavaScript实现京东快递单号查询
Nov 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实现链表的定义与反转功能示例
2018/06/09 PHP
jquery mobile事件多次绑定示例代码
2013/09/13 Javascript
Jquery 点击按钮自动高亮实现原理及代码
2014/04/25 Javascript
js+jquery实现图片裁剪功能
2015/01/02 Javascript
网页从弹窗页面单选框传值至父页面代码分享
2015/09/29 Javascript
禁用backspace网页回退功能的实现代码
2016/11/15 Javascript
js自定义QQ菜单效果
2017/01/10 Javascript
原生js实现淘宝购物车功能
2020/06/23 Javascript
js实现年月日表单三级联动
2020/04/17 Javascript
浅谈webpack对样式的处理
2018/01/05 Javascript
ES6的Fetch异步请求的实现方法
2018/12/07 Javascript
package.json各个属性说明详解
2020/03/11 Javascript
Vue实现开关按钮拖拽效果
2020/09/22 Javascript
[02:07]DOTA2新英雄展现中国元素,完美“圣典”亮相央视
2016/12/19 DOTA
tensorflow实现对图片的读取的示例代码
2018/02/12 Python
用python 批量更改图像尺寸到统一大小的方法
2018/03/31 Python
python for 循环获取index索引的方法
2019/02/01 Python
python+selenium实现简历自动刷新的示例代码
2019/05/20 Python
Django框架搭建的简易图书信息网站案例
2019/05/25 Python
python中metaclass原理与用法详解
2019/06/25 Python
使用Python的datetime库处理时间(RPA流程)
2019/11/24 Python
解决Python列表字符不区分大小写的问题
2019/12/19 Python
浅谈tensorflow使用张量时的一些注意点tf.concat,tf.reshape,tf.stack
2020/06/23 Python
水上运动奥特莱斯:Wasterports Outlet
2018/08/08 全球购物
Crabtree & Evelyn欧盟:豪华洗浴、身体和护发
2021/03/09 全球购物
L’Artisan Parfumeur官网:法国香水品牌
2020/08/11 全球购物
Python中pass语句的作用是什么
2016/06/01 面试题
优秀中专生推荐信
2013/11/17 职场文书
教师职位说明书
2014/07/29 职场文书
销售团队获奖感言
2014/08/14 职场文书
小学生我的梦想演讲稿
2014/08/21 职场文书
开展党的群众路线教育实践活动总结报告
2014/10/31 职场文书
扬州个园导游词
2015/02/06 职场文书
2015年小学开学寄语
2015/02/27 职场文书
Html5通过数据流方式播放视频的实现
2021/04/27 HTML / CSS
Win10 Anaconda安装python-pcl
2022/04/29 Servers