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 相关文章推荐
JavaScript子类用Object.getPrototypeOf去调用父类方法解析
Dec 05 Javascript
如何设置一定时间内只能发送一次请求
Feb 28 Javascript
jQuery Mobile开发中日期插件Mobiscroll使用说明
Mar 02 Javascript
js日期相关函数dateAdd,dateDiff,dateFormat等介绍
Sep 24 Javascript
js中Number数字数值运算后值不对的解决方法
Feb 28 Javascript
微信JS SDK接入的几点注意事项(必看篇)
Jun 23 Javascript
vue2.0学习之axios的封装与vuex介绍
May 28 Javascript
详解解决使用axios发送json后台接收不到的问题
Jun 27 Javascript
深入解析Vue源码实例挂载与编译流程实现思路详解
May 05 Javascript
在React中写一个Animation组件为组件进入和离开加上动画/过度效果
Jun 24 Javascript
微信小程序转发事件实现解析
Oct 22 Javascript
Vue实现简单的跑马灯
May 25 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
解决PHP4.0 和 PHP5.0类构造函数的兼容问题
2013/08/01 PHP
Smarty变量调节器失效的解决办法
2014/08/20 PHP
通过php删除xml文档内容的方法
2015/01/23 PHP
在html文件中也可以执行php语句的方法
2015/04/09 PHP
调试WordPress中定时任务的相关PHP脚本示例
2015/12/10 PHP
Laravel 框架返回状态拦截代码
2019/10/18 PHP
popdiv
2006/07/14 Javascript
ext 列表页面关于多行查询的办法
2010/03/25 Javascript
js判断某个方法是否存在实例代码
2015/01/10 Javascript
jQuery带时间的日期控件代码分享
2015/08/26 Javascript
jQuery动画效果相关方法实例分析
2015/12/31 Javascript
javascript判断图片是否加载完成的方法推荐
2016/05/13 Javascript
js中获取jsp表单中radio类型的值简单实例
2016/08/15 Javascript
什么是JavaScript注入攻击?
2016/09/14 Javascript
JavaScript实现Fly Bird小游戏
2016/12/15 Javascript
win系统下nodejs环境安装配置
2017/05/04 NodeJs
mongoose中利用populate处理嵌套的方法
2017/05/26 Javascript
vue 双向数据绑定的实现学习之监听器的实现方法
2018/11/30 Javascript
微信小程序自定义组件传值 页面和组件相互传数据操作示例
2019/05/05 Javascript
JS实现音量控制拖动
2020/01/15 Javascript
如何通过javaScript去除字符串两端的空白字符
2020/02/06 Javascript
Python 中Pickle库的使用详解
2018/02/24 Python
Python实现字典按key或者value进行排序操作示例【sorted】
2019/05/03 Python
在django中实现页面倒数几秒后自动跳转的例子
2019/08/16 Python
Python Process多进程实现过程
2019/10/22 Python
python opencv圆、椭圆与任意多边形的绘制实例详解
2020/02/06 Python
python encrypt 实现AES加密的实例详解
2020/02/20 Python
Django {{ MEDIA_URL }}无法显示图片的解决方式
2020/04/07 Python
python中复数的共轭复数知识点总结
2020/12/06 Python
十岁生日家长答谢词
2014/01/17 职场文书
公务员党的群众路线教育实践活动学习心得体会
2014/10/30 职场文书
个人年终总结怎么写
2015/03/09 职场文书
2015年前台个人工作总结
2015/04/03 职场文书
让子弹飞观后感
2015/06/11 职场文书
Python中的套接字编程是什么?
2021/06/21 Python
深入理解go slice结构
2021/09/15 Golang