效果:

HTML源码:

<!DOCTYPE html>
<html lang="en">
<head>
<title>jQuery拖拽滑动验证码插件 slideunlock.js </title>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE-edge,chrome=1">
<meta name="viewport" content="width=device-width,initial-scale=1">
<link href="./slide-unlock.css" rel="stylesheet">
<style>html, body, h1 {margin: 0;padding: 0;}body {background-color: #393939;color: #d5d4ff;overflow: hidden}#demo {width: 600px;margin: 150px auto;padding: 10px;border: 1px dashed #d5d4ff;border-radius: 10px;-moz-border-radius: 10px;-webkit-border-radius: 10px;text-align: left;}
</style>
</head>
<body>
<div id="demo"><div id="slider"><div id="slider_bg"></div><span id="label">>></span> <span id="labelTip">拖动滑块验证</span> </div><script src="jquery-1.12.1.min.js"></script> <script src="jquery.slideunlock.js"></script> <script>$(function () {var slider = new SliderUnlock("#slider",{successLabelTip : "验证成功"    },function(){alert("验证成功,即将跳转至百度");window.location.href="http://www.baidu.com"});slider.init();})
</script>
</div>
</body>
</html>

CSS    slide-unlock.css

#slider {margin: 100px auto;width: 300px;height: 40px;position: relative;border-radius: 2px;background-color: #dae2d0;overflow: hidden;text-align: center;user-select: none;-moz-user-select: none;-webkit-user-select: none;
}#slider_bg {position: absolute;left: 0;top: 0;height: 100%;background-color: #7AC23C;z-index: 1;
}#label {width: 46px;position: absolute;left: 0;top: 0;height: 38px;line-height: 38px;border: 1px solid #cccccc;background: #fff;z-index: 3;cursor: move;color: #ff9e77;font-size: 16px;font-weight: 900;
}#labelTip {position: absolute;left: 0;width: 100%;height: 100%;font-size: 13px;font-family: 'Microsoft Yahei', serif;color: #787878;line-height: 38px;text-align: center;z-index: 2;
}

View Code

JS    jquery.slideunlock.js

/*** jquery plugin -- jquery.slideunlock.js* Description: a slideunlock plugin based on jQuery* Version: 1.1* Author: Dong Yuhao* www.sucaijiayuan.com* created: March 27, 2016*/;(function ($,window,document,undefined) {function SliderUnlock(elm, options, success){var me = this;var $elm = me.checkElm(elm) ? $(elm) : $;success = me.checkFn(success) ? success : function(){};var opts = {successLabelTip:  "Successfully Verified",duration:  200,swipestart:  false,min:  0,max:  $elm.width(),index:  0,IsOk:  false,lableIndex:  0};opts = $.extend(opts, options||{});//$elmme.elm = $elm;//optsme.opts = opts;//是否开始滑动me.swipestart = opts.swipestart;//最小值me.min = opts.min;//最大值me.max = opts.max;//当前滑动条所处的位置me.index = opts.index;//是否滑动成功me.isOk = opts.isOk;//滑块宽度me.labelWidth = me.elm.find('#label').width();//滑块背景me.sliderBg = me.elm.find('#slider_bg');//鼠标在滑动按钮的位置me.lableIndex = opts.lableIndex;//successme.success = success;}SliderUnlock.prototype.init = function () {var me = this;me.updateView();me.elm.find("#label").on("mousedown", function (event) {var e = event || window.event;me.lableIndex = e.clientX - this.offsetLeft;me.handerIn();}).on("mousemove", function (event) {me.handerMove(event);}).on("mouseup", function (event) {me.handerOut();}).on("mouseout", function (event) {me.handerOut();}).on("touchstart", function (event) {var e = event || window.event;me.lableIndex = e.originalEvent.touches[0].pageX - this.offsetLeft;me.handerIn();}).on("touchmove", function (event) {me.handerMove(event, "mobile");}).on("touchend", function (event) {me.handerOut();});};/*** 鼠标/手指接触滑动按钮*/SliderUnlock.prototype.handerIn = function () {var me = this;me.swipestart = true;me.min = 0;me.max = me.elm.width();};/*** 鼠标/手指移出*/SliderUnlock.prototype.handerOut = function () {var me = this;//停止me.swipestart = false;//me.move();if (me.index < me.max) {me.reset();}};/*** 鼠标/手指移动* @param event* @param type*/SliderUnlock.prototype.handerMove = function (event, type) {var me = this;if (me.swipestart) {event.preventDefault();event = event || window.event;if (type == "mobile") {me.index = event.originalEvent.touches[0].pageX - me.lableIndex;} else {me.index = event.clientX - me.lableIndex;}me.move();}};/*** 鼠标/手指移动过程*/SliderUnlock.prototype.move = function () {var me = this;if ((me.index + me.labelWidth) >= me.max) {me.index = me.max - me.labelWidth -2;//停止me.swipestart = false;//解锁me.isOk = true;}if (me.index < 0) {me.index = me.min;//未解锁me.isOk = false;}if (me.index+me.labelWidth+2 == me.max && me.max > 0 && me.isOk) {//解锁默认操作$('#label').unbind().next('#labelTip').text(me.opts.successLabelTip).css({'color': '#fff'});me.success();}me.updateView();};/*** 更新视图*/SliderUnlock.prototype.updateView = function () {var me = this;me.sliderBg.css('width', me.index);me.elm.find("#label").css("left", me.index + "px")};/*** 重置slide的起点*/SliderUnlock.prototype.reset = function () {var me = this;me.index = 0;me.sliderBg .animate({'width':0},me.opts.duration);me.elm.find("#label").animate({left: me.index}, me.opts.duration).next("#lableTip").animate({opacity: 1}, me.opts.duration);me.updateView();};/*** 检测元素是否存在* @param elm* @returns {boolean}*/SliderUnlock.prototype.checkElm = function (elm) {if($(elm).length > 0){return true;}else{throw "this element does not exist.";}};/*** 检测传入参数是否是function* @param fn* @returns {boolean}*/SliderUnlock.prototype.checkFn = function (fn) {if(typeof fn === "function"){return true;}else{throw "the param is not a function.";}};window['SliderUnlock'] = SliderUnlock;
})(jQuery, window, document);

View Code

注意:z-index

转载于:https://www.cnblogs.com/rong88/p/7151086.html

支持手机,滑动拖动验证相关推荐

  1. android 手机左右移动图片轮播,js实现支持手机滑动切换的轮播图片效果实例

    本文实例讲述了js实现支持手机滑动切换的轮播图片效果的方法.分享给大家供大家参考.具体如下: 运行效果如下: 完整实例代码点击此处本站下载. 使用方法案例: $('.carousel-image'). ...

  2. 支持+86的手机和电话号码验证正则表达式

    86就中国的国字区号是,在实际应用中可能有些电话或者手机号码前面需要添加+86,下面就介绍一下能够验证带有+86这种格式手机或者电话号码的正则表达式,代码实例如下: 01 02 03 04 05 06 ...

  3. 为什么快手不能左右滑了_为什么有的手机不支持快手滑动切换

    为什么有的手机不支持快手滑动切换 为了更方便地看快手上的视频,很多人都用了上滑切换作品的功能.然而有些用户的快手并没有上滑切换的功能,要怎么调用呢?一起来看看吧. 方法如下: 一.首先,更新快手APP ...

  4. 直播回顾 | 手机银行人机验证的必要性和可行性

    人机验证作为手机银行验证体系中重要的一环,其验证码的安全性以及用户体验成为了主要考验. 顶象资深解决方案专家鳯羽就手机银行的人机验证解决方案讲起,从人机验证需求的诞生.验证码的发展演变.手机银行验证码 ...

  5. Uipath实现简单的滑块拖动验证

    本篇文章主要介绍使用[Click]Activities这一个活动来实现拖动滑块的验证,为拖动滑块验证提供了一种思路.但只能应用于滑块从头滑到尾,不支持拼图的滑块验证. 说白了,这篇文章更像是介绍[Cl ...

  6. php画拼图滑动验证,滑动拼图验证

    3.逻辑:底部滑块的拖动控制小拼图移动,当其左边距与切割位置x坐标一致,或在一定范围内,即为正确:难点在于切割出来拼图,这一步参考上面链接地址: 5.部分源码如下:/** * @name BlockI ...

  7. HTML5期末大作业:动漫网站设计——html5响应式手机滑动海贼王漫画网页设计(6页) HTML+CSS+JavaScript

    HTML5期末大作业:动漫网站设计--html5响应式手机滑动海贼王漫画网页设计(6页) HTML+CSS+JavaScript 期末作业HTML代码 学生网页课程设计期末作业下载 web网页设计制作 ...

  8. 实战 | 手把手教你用Python+OpenCV实现滑块验证码->自动拖动验证

    导读 本文主要介绍如何使用Python+OpenCV实现滑块验证码->自动拖动验证. 背景介绍 前几天在某网站下载代码时,跳转到滑块验证码界面,需要验证OK后才能下载,貌似这种验证方式现在很流行 ...

  9. 手机短信验证服务,为个人信息安全提供保障

    近年来,随着科技的不断创新与进步,电子商务网站已经成为了人们日常生活中不可缺少的一部分.与传统商务模式相比,电子商务的确有着其无可比拟的巨大优势,随着电子商务的不断兴盛,也衍生了许许多多的新兴服务产业 ...

最新文章

  1. nyoj 234 吃土豆
  2. 限制Apache日志access.log、error.log文件大小
  3. ABAP 查询性能提高之我见
  4. 攻防世界(Pwn)dice_game, 栈溢出覆盖srand种子
  5. java mail urlname_javamail收发信件时,服务器,收发方的名称应该怎样设置才有效呢
  6. 你真的会使用Eclipse的debug吗?
  7. 编程课课程感想和建议_最佳在线编程课程
  8. 用户空间和内核空间是什么?
  9. 数据类型 --生成器
  10. 使用Springboot整合Vue项目案例—登录界面
  11. 路由器UPnP功能具体作用,有什么坏处,
  12. 红米停在android,红米手机在Android开发中无法获取data/data中数据的问题
  13. A review of 3D vessel lumen segmentation techniques: Models, features and extraction schemes
  14. CSharp-基础-集合的使用
  15. 【042】904. 水果成篮[滑动窗口]
  16. androidP Surface到SurfaceFlinger -->surface -> BufferQueue(一)
  17. Android淘宝三方登陆
  18. 启动三个线程,线程1打印1-5,线程2打印6-10,线程3打印11-15,接着线程1打印16-20……依此类推,打印到72.
  19. kafka身份认证 maxwell_Kafka 使用SASL / SCRAM进行身份验证
  20. 容器集群k8s从入门到精通实战第一天 kubernetes集群简介及其实例

热门文章

  1. Python 中复数运算注意点
  2. Linux之curl 风骚用法
  3. 质量冷知识:TRIZ,一个被人忽略的管理工具
  4. Verilog语法和典型电路
  5. 5G NR带宽 频点
  6. 知识图谱(KG)存储、可视化、公开数据集、图计算、图编程工具分享
  7. JS监听页面元素删除子节点、增加子节点、修改子节点的内容
  8. elastic官网文档翻译来.1
  9. Kotlin+Retrofit + MVVM 的网络请求框架的封装
  10. centos GPU tensorflow pytorch 深度学习 环境搭建