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 相关文章推荐
escape、encodeURI、encodeURIComponent等方法的区别比较
Dec 27 Javascript
JavaScript 异步调用框架 (Part 3 - 代码实现)
Aug 04 Javascript
使用javascript实现页面定时跳转总结篇
Sep 21 Javascript
使用jquery解析XML的方法
Sep 05 Javascript
js限制文本框只能输入整数或者带小数点的数字
Apr 27 Javascript
jqGrid 学习笔记整理——进阶篇(一 )
Apr 17 Javascript
JS实现密码框的显示密码和隐藏密码功能示例
Dec 26 Javascript
Bootstrap popover 实现鼠标移入移除显示隐藏功能方法
Jan 24 Javascript
vue实现的上传图片到数据库并显示到页面功能示例
Mar 17 Javascript
详解React项目的服务端渲染改造(koa2+webpack3.11)
Mar 19 Javascript
详解JavaScript中的数据类型,以及检测数据类型的方法
Sep 17 Javascript
vue+echarts实现多条折线图
Mar 21 Vue.js
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中函数的形参与实参的问题说明
2010/09/01 PHP
JSON在PHP中的应用介绍
2012/09/08 PHP
hadoop常见错误以及处理方法详解
2013/06/19 PHP
php对象在内存中的存在形式分析
2015/02/03 PHP
利用javascript移动div层-javascript 拖动层
2009/03/22 Javascript
JavaScript中使用构造器创建对象无需new的情况说明
2012/03/01 Javascript
jQuery ui插件的使用方法代码实例
2013/05/08 Javascript
js与jquery获取父元素,删除子元素的两种不同方法
2014/01/09 Javascript
jQuery Ajax()方法使用指南
2014/11/19 Javascript
javascript模块化简单解析
2016/04/07 Javascript
jQuery查找节点并获取节点属性的方法
2016/09/09 Javascript
node.js 和HTML5开发本地桌面应用程序
2016/12/13 Javascript
Angular 输入框实现自定义验证功能
2017/02/19 Javascript
javascript深拷贝的原理与实现方法分析
2017/04/10 Javascript
underscore之Chaining_动力节点Java学院整理
2017/07/10 Javascript
基于zepto.js实现手机相册功能
2017/07/11 Javascript
jQuery实现页码跳转式动态数据分页
2017/12/31 jQuery
vue 组件的封装之基于axios的ajax请求方法
2018/08/11 Javascript
详解IOS微信上Vue单页面应用JSSDK签名失败解决方案
2018/11/14 Javascript
JS实现的贪吃蛇游戏案例详解
2019/05/01 Javascript
小程序绑定用户方案优化小结
2019/05/15 Javascript
vue2.0+SVG实现音乐播放圆形进度条组件
2019/09/21 Javascript
vue prop传值类型检验方式
2020/07/30 Javascript
JavaScript通如何过RGraph实现动态仪表盘
2020/10/15 Javascript
js前端对于大量数据的展示方式及处理方法
2020/12/02 Javascript
python利用装饰器进行运算的实例分析
2015/08/04 Python
Python使用wget实现下载网络文件功能示例
2018/05/31 Python
tensorflow2.0与tensorflow1.0的性能区别介绍
2020/02/07 Python
详解CSS3的box-shadow属性制作边框阴影效果的方法
2016/05/10 HTML / CSS
html5指南-4.使用Geolocation实现定位功能
2013/01/07 HTML / CSS
HomeAway的巴西品牌:Alugue Temporada
2018/04/10 全球购物
2019年分享net面试的经历和题目
2016/08/07 面试题
画展邀请函
2015/01/31 职场文书
事业单位工作人员年度考核个人总结
2015/02/12 职场文书
全民创业工作总结
2015/08/13 职场文书
python基础之模块的导入
2021/10/24 Python