javascript实现滑动解锁功能


Posted in Javascript onDecember 31, 2014

实现效果:

javascript实现滑动解锁功能

css样式代码略。

html代码:

页面上导入了jquery.mobile 、jquery

<script src="http://apps.bdimg.com/libs/jquery/1.10.2/jquery.min.js"></script>

<script src="http://apps.bdimg.com/libs/jquerymobile/1.4.2/jquery.mobile.min.js"></script>
<div id="pageSlide">

                        <input type="hidden" value="" id="captcha"/>

 

                        <div id="slider" class="slider">

                            <span id="label" class="label"></span>

                            <span id="lableTip">Slide to confirm I am human!</span>

                        </div>

                    </div>

 js代码:

<script type="text/javascript">

        window.onload = function () {

            var slider1 = new Slider();

            slider1.Init();

            ///屏幕大小发生改变时触发

            $(window).resize(function () {

                slider1.HanderIn();

                slider1.HanderOut();

            });

        }

        //滑动条对象

        function Slider(swipestart, min, max, index, IsOk, lableIndex) {

            var _self = this;

            //是否开始滑动

            _self.swipestart = swipestart;

            //最小值

            _self.min = min;

            //最大值

            _self.max = max;

            //当前滑动条所处的位置

            _self.index = index;

            //是否滑动成功

            _self.IsOk = IsOk;

            //鼠标在滑动按钮的位置

            _self.lableIndex = lableIndex;

        }

        //初始化

        Slider.prototype.Init = function () {

            var _self = this;

            $("#label").on("mousedown", function (event) {

                var e = event || window.event;

                _self.lableIndex = e.clientX - this.offsetLeft;

                _self.HanderIn();

            });

            $("#pageSlide").on("mousemove", function (event) {

                _self.HanderMove(event);

            });

            $(document).on("mouseup", function (event) {

                _self.HanderOut();

            });

            $("#label").on("touchstart", function (event) {

                var e = event || window.event;

                _self.lableIndex = e.originalEvent.pageX - this.offsetLeft;

                _self.HanderIn();

            });

            $("#pageSlide").on("touchmove", function (event) {

                _self.HanderMove(event, "mobile");

            });

            $(document).on("touchend", function (event) {

                _self.HanderOut();

            });

        }

        //鼠标/手指接触滑动按钮

        Slider.prototype.HanderIn = function () {

            var _self = this;

            _self.swipestart = true;

            _self.min = 0;

            _self.max = $("#slider").width();

        }

        //鼠标/手指移出

        Slider.prototype.HanderOut = function () {

            var _self = this;

            //停止

            _self.swipestart = false;

            _self.Move();

        }

        //鼠标/手指移动

        Slider.prototype.HanderMove = function (event, type) {

            var _self = this;

            if (_self.swipestart) {

                event.preventDefault();

                var event = event || window.event;

                if (type == "mobile") {

                    _self.index = event.originalEvent.pageX - _self.lableIndex;

                } else {

                    _self.index = event.clientX - _self.lableIndex;

                }

                _self.Move();

            }

        }

        //鼠标/手指移出

        Slider.prototype.Move = function () {

            var _self = this;

            $(".warn").text("index:" + _self.index + ", max" + _self.max + ",lableIndex:" + _self.lableIndex + ",value:" + $("#captcha").val() + " date:" + new Date().getUTCDate());

            if ((_self.index + 20) >= _self.max) {

                _self.index = _self.max - 20;

            }

            if (_self.index < 0) {

                _self.index = _self.min;

            }

            $(".label").css("left", _self.index + "px");

            if (_self.index == (_self.max - 20)) {

                //停止

                _self.swipestart = false;

                _self.IsOk = true;//解锁

                $("#captcha").val(1);

                var style = {"filter": "alpha(opacity=1)",

                    "-moz-opacity": "1", "opacity": "1"}

                $(".ui-btn.ui-input-btn.ui-corner-all.ui-shadow").css(style);

                $("#slider").css("background-color", "#E5EE9F");

                $("#lableTip").text("Thank You!");

            } else {

                _self.IsOk = false;//未解锁

                $("#captcha").val(0);

                var style = { "filter": "alpha(opacity=0.2)",

                    "-moz-opacity": "0.2", "opacity": "0.2"}

                $(".ui-btn.ui-input-btn.ui-corner-all.ui-shadow").css(style);

                $("#slider").css("background-color", "#FDEB9C");

                $("#lableTip").text("Slide to confirm I am human!");

            }

        }

    </script>

效果实现:

javascript实现滑动解锁功能

Javascript 相关文章推荐
jquery中的$(document).ready()与window.onload的区别
Nov 18 Javascript
JavaScript格式化数字的函数代码
Nov 30 Javascript
jQuery常用操作方法及常用函数总结
Jun 19 Javascript
jQuery中:lt选择器用法实例
Dec 29 Javascript
JavaScript实现获取dom中class的方法
Feb 09 Javascript
JavaScript获取客户端IP的方法(新方法)
Mar 11 Javascript
基于javascript实现图片滑动效果
May 07 Javascript
jQuery实现自动输入email、时间和域名的方法
Aug 24 Javascript
初探JavaScript 面向对象(推荐)
Sep 03 Javascript
Vue实现数字输入框中分割手机号码的示例
Oct 10 Javascript
Node.js模块全局安装路径配置方法
May 17 Javascript
vue制作toast组件npm包示例代码
Oct 29 Javascript
JavaScript中number转换成string介绍
Dec 31 #Javascript
JavaScript中string转换成number介绍
Dec 31 #Javascript
JavaScript中的object转换函数toString()与valueOf()介绍
Dec 31 #Javascript
JavaScript中的object转换成number或string规则介绍
Dec 31 #Javascript
javascript 事件处理示例分享
Dec 31 #Javascript
JavaScript中的变量作用域介绍
Dec 31 #Javascript
JavaScript中的变量定义与储存介绍
Dec 31 #Javascript
You might like
php自定义类fsocket模拟post或get请求的方法
2015/07/31 PHP
php获取linux命令结果的实例
2017/03/13 PHP
通过php动态传数据到highcharts
2017/04/05 PHP
打开超链需要“确认”对话框的方法
2007/03/08 Javascript
newxtree.js代码
2007/03/13 Javascript
javascript教程之不完整的继承(js原型链)
2014/01/13 Javascript
Jquery 垂直多级手风琴菜单附源码下载
2015/11/17 Javascript
原生js实现数字字母混合验证码的简单实例
2015/12/10 Javascript
JS中call/apply、arguments、undefined/null方法详解
2016/02/15 Javascript
谈谈Vue.js——vue-resource全攻略
2017/01/16 Javascript
解决JS外部文件中文注释出现乱码问题
2017/07/09 Javascript
详解Vue路由History mode模式中页面无法渲染的原因及解决
2017/09/28 Javascript
Bootstrap 实现表格样式、表单布局的实例代码
2018/12/09 Javascript
微信小程序图片左右摆动效果详解
2019/07/13 Javascript
[03:28]2014DOTA2国际邀请赛 EG战队官方纪录片
2014/07/21 DOTA
[01:42]辉夜杯战队访谈宣传片—FANTUAN
2015/12/25 DOTA
Python多线程编程(一):threading模块综述
2015/04/05 Python
解决Spyder中图片显示太小的问题
2018/04/27 Python
pycharm 配置远程解释器的方法
2018/10/28 Python
Python函数参数匹配模型通用规则keyword-only参数详解
2019/06/10 Python
6行Python代码实现进度条效果(Progress、tqdm、alive-progress​​​​​​​和PySimpleGUI库)
2020/01/06 Python
Pycharm远程连接服务器并实现代码同步上传更新功能
2020/02/25 Python
Python Pandas 对列/行进行选择,增加,删除操作
2020/05/17 Python
Django 如何使用日期时间选择器规范用户的时间输入示例代码详解
2020/05/22 Python
html5与css3小应用
2013/04/03 HTML / CSS
Paradigit比利时电脑卖场:购买笔记本、电脑、平板和外围设备
2016/11/28 全球购物
俄罗斯品牌服装和鞋子在线商店:BRIONITY
2020/03/26 全球购物
Smilodox官方运动服装店:从运动服到健身配件
2020/08/27 全球购物
会计应届生的自荐信
2013/12/13 职场文书
军训学生自我鉴定
2014/02/12 职场文书
服装促销活动方案
2014/02/23 职场文书
成龙霸王洗发水广告词
2014/03/14 职场文书
观看禁毒宣传片后的感想
2015/08/11 职场文书
2016年乡镇综治宣传月活动总结
2016/03/16 职场文书
深入理解margin塌陷和margin合并的解决方案
2021/06/26 HTML / CSS
java中为什么说子类的构造方法默认访问的是父类的无参构造方法
2022/04/13 Java/Android