javascript 实现 原路返回


Posted in Javascript onJanuary 21, 2015

css代码

<style type="text/css">

        * {

            margin: 0px;

            padding: 0px;

            font-family: "micsoft yahei","微软雅黑";

            font-size: 15px;

        }

        div{

            width: 50px;

            height: 50px;

            background: #f00;

            border-radius:5px ;

            -moz-border-radius: 5px;

            -webkit-border-radius: 5px;

            cursor: pointer;

            position:  absolute;

            top: 60px;

            left: 30px;

        }

        input{

            position: absolute;

            top: 10px;

            left: 10px;

            padding: 3px;

            cursor: pointer;

        }

    </style>

html代码

 <body>

 <input type="button" value="原路返回"/>

 <div></div>

 </body>

javascript代码

<script type="text/javascript">

          //1、以鼠标在div上点击触发为开始

          //2、点击鼠标移动时触发鼠标移动事件 向数组内注入数据(移动的坐标)

          //3、以鼠标从div上移开为结束

          //4、点击“原路返回”按钮遍历数组(移动的坐标) 定时触发数组内的坐标移动div 达到”返回“的功能

            window.onload=function(){

                var oDiv=document.getElementsByTagName("div")[0];

                var oBtn=document.getElementsByTagName("input")[0];

                var time=null,arrTop=[],arrLeft=[];

                oDiv.onmousedown=function(ev){

                    var event=ev || window.event;

                    //获取鼠标在div内的坐标

                    var disX=event.clientX-oDiv.offsetLeft;

                    var disY=event.clientY-oDiv.offsetTop;

                    arrTop=[60];

                    arrLeft=[30];

                    document.onmousemove=function(ev){

                        var event=ev || window.event;

                        //获取拖拽后鼠标的位置

                        var l=event.clientX;

                        var t=event.clientY;

                        //把拖拽后的位置存进数组里面,用拖拽后鼠标的位置减去鼠标在物体上的位置,就是拖拽后物体的位置

                        arrLeft.push(l-disX);

                        arrTop.push(t-disY);

                        oDiv.style.left=l-disX +"px";

                        oDiv.style.top=t-disY +"px";

                    };

                    document.onmouseup=function(){

                        document.onmousemove=null;

                        document.onmouseup=null;

                    };

                    return false;

                }

                //原路返回的核心就是把移动时的坐标记录下来,然后进行数组重排,并设定定时器把数组内的搞宽赋值给物体。

                oBtn.onclick=function(){

                    arrTop.reverse();//重排

                    arrLeft.reverse();//重排

                    var i=0;

                    oBtn.time=setInterval(function(){

                        oDiv.style.top=arrTop[i]+"px";

                        oDiv.style.left=arrLeft[i]+"px";

                        i++;

                        if(i==arrTop.length){

                            clearInterval(oBtn.time);

                            arrTop=[];

                            arrLeft=[];

                        }

                    },20);

                }

            }

    </script>
Javascript 相关文章推荐
常见效果实现之返回顶部(结合淡入、淡出、减速滚动)
Jan 04 Javascript
原生js 秒表实现代码
Jul 24 Javascript
jQuery之ajax技术的详细介绍
Jun 19 Javascript
用jquery实现动画跳到顶部和底部(这个比较简单)
Sep 01 Javascript
js实现跨域访问的三种方法
Dec 09 Javascript
jquery单击事件和双击事件冲突解决方案
Mar 02 Javascript
Jquery 自定义事件实现发布/订阅的简单实例
Jun 12 Javascript
浅谈jquery设置和获得checkbox选中的问题
Aug 19 Javascript
将html页面保存成图片,图片写入pdf的实现方法(推荐)
Sep 17 Javascript
Angular.js中用ng-repeat-start实现自定义显示
Oct 18 Javascript
bootstrap网格系统使用方法解析
Jan 13 Javascript
Node.js与Sails redis组件的使用教程
Feb 14 Javascript
html的DOM中document对象forms集合用法实例
Jan 21 #Javascript
浅谈javascript 函数内部属性
Jan 21 #Javascript
浅谈javascript 函数属性和方法
Jan 21 #Javascript
html的DOM中document对象images集合用法实例
Jan 21 #Javascript
浅谈javascript面向对象程序设计
Jan 21 #Javascript
html的DOM中Event对象onabort事件用法实例
Jan 21 #Javascript
封装好的一个万能检测表单的方法
Jan 21 #Javascript
You might like
Laravel第三方包报class not found的解决方法
2019/10/13 PHP
JQuery 技巧和窍门整理(8个)
2010/04/22 Javascript
整理一些JavaScript的IE和火狐的兼容性注意事项
2011/03/17 Javascript
jQuery extend 的简单实例
2013/09/18 Javascript
页面加载完成后再执行JS的jquery写法以及区别说明
2014/02/22 Javascript
javascript中style.left和offsetLeft的用法说明
2014/03/07 Javascript
jQuery对指定元素中指定字符串进行替换的方法
2015/03/17 Javascript
JS实现的Select三级下拉菜单代码
2015/08/20 Javascript
js判断移动端是否安装某款app的多种方法
2015/12/18 Javascript
jQuery对html元素的取值与赋值实例详解
2015/12/18 Javascript
Backbone.js框架中Model与Collection的使用实例
2016/05/07 Javascript
js剪切板应用clipboardData实例解析
2016/05/29 Javascript
前端跨域的几种解决方式总结(推荐)
2017/08/16 Javascript
Vue工程模板文件 webpack打包配置方法
2017/12/26 Javascript
Vue源码解析之Template转化为AST的实现方法
2018/12/14 Javascript
vue--vuex详解
2019/04/15 Javascript
基于JS实现简单滑块拼图游戏
2019/10/12 Javascript
Node.js创建一个Express服务的方法详解
2020/01/06 Javascript
基于JQuery实现页面定时弹出广告
2020/05/08 jQuery
解决antd 表单设置默认值initialValue后验证失效的问题
2020/11/02 Javascript
[00:15]TI9地铁玩家打卡
2019/08/11 DOTA
在Python中用keys()方法返回字典键的教程
2015/05/21 Python
Python遍历文件夹和读写文件的实现代码
2016/08/28 Python
python实现员工管理系统
2018/01/11 Python
Python实现定时备份mysql数据库并把备份数据库邮件发送
2018/03/08 Python
Python3处理HTTP请求的实例
2018/05/10 Python
解决Pyinstaller 打包exe文件 取消dos窗口(黑框框)的问题
2019/06/21 Python
用Python抢火车票的简单小程序实现解析
2019/08/14 Python
opencv设置采集视频分辨率方式
2019/12/10 Python
使用Python制作缩放自如的圣诞老人(圣诞树)
2019/12/25 Python
Python通过kerberos安全认证操作kafka方式
2020/06/06 Python
一些Unix笔试题和面试题
2013/01/22 面试题
给老师的一封建议书
2014/03/13 职场文书
小学社会实践活动总结
2014/07/03 职场文书
优秀团员事迹材料
2014/12/25 职场文书
环保建议书作文500字
2015/09/14 职场文书