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 相关文章推荐
JavaScript初学者应注意的七个细节小结
Jan 30 Javascript
JS动态增删表格行的方法
Mar 03 Javascript
Bootstrap实现带动画过渡的弹出框
Aug 09 Javascript
Vue.Js中的$watch()方法总结
Mar 23 Javascript
JS常见构造模式实例对比分析
Aug 27 Javascript
微信小程序首页的分类功能和搜索功能的实现思路及代码详解
Sep 11 Javascript
泛谈JS逻辑判断选择器 || &amp;&amp;
May 24 Javascript
通过说明与示例了解js五种设计模式
Jun 17 Javascript
微信小程序使用蓝牙小插件
Sep 23 Javascript
vue下axios拦截器token刷新机制的实例代码
Jan 17 Javascript
详解element上传组件before-remove钩子问题解决
Apr 08 Javascript
JavaScript实现移动小精灵的案例代码
Dec 12 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
phpnow php探针环境检测代码
2014/11/04 PHP
Yii框架表单提交验证功能分析
2017/01/07 PHP
如何在Laravel5.8中正确地应用Repository设计模式
2019/11/26 PHP
JavaScript的目的分析
2007/01/05 Javascript
自己的js工具 Cookie 封装
2009/08/21 Javascript
一些经常会用到的Javascript检测函数
2010/05/31 Javascript
autoIMG 基于jquery的图片自适应插件代码
2011/03/12 Javascript
JS面向对象编程浅析
2011/08/28 Javascript
animate动画示例(泪奔的小孩)及stop和delay的使用
2013/05/06 Javascript
JavaScript中使用Object.prototype.toString判断是否为数组
2015/04/01 Javascript
基于JS判断iframe是否加载成功的方法(多种浏览器)
2016/05/13 Javascript
canvas的神奇用法
2017/02/03 Javascript
nodejs个人博客开发第七步 后台登陆
2017/04/12 NodeJs
微信小程序使用input组件实现密码框功能【附源码下载】
2017/12/11 Javascript
浅谈gulp创建完整的项目流程
2017/12/20 Javascript
jQuery实现表单动态添加数据并提交的方法
2018/07/19 jQuery
vue cli使用融云实现聊天功能的实例代码
2019/04/19 Javascript
element-ui表格合并span-method的实现方法
2019/05/21 Javascript
深入学习TypeScript 、React、 Redux和Ant-Design的最佳实践
2019/06/17 Javascript
微信小程序request请求封装,验签代码实例
2019/12/04 Javascript
[02:38]DOTA2英雄基础教程 噬魂鬼
2014/01/03 DOTA
[52:39]完美世界DOTA2联赛PWL S3 CPG vs Forest 第一场 12.16
2020/12/17 DOTA
python使用pil生成缩略图的方法
2015/03/26 Python
10种检测Python程序运行时间、CPU和内存占用的方法
2015/04/01 Python
Python中super关键字用法实例分析
2015/05/28 Python
Python的re模块正则表达式操作
2016/05/25 Python
总结python爬虫抓站的实用技巧
2016/08/09 Python
Python Pywavelet 小波阈值实例
2019/01/09 Python
python使用参数对嵌套字典进行取值的方法
2019/04/26 Python
使用celery执行Django串行异步任务的方法步骤
2019/06/06 Python
python简单实现最大似然估计&amp;scipy库的使用详解
2020/04/15 Python
如何用css3实现switch组件开关的方法
2018/02/09 HTML / CSS
Koral官方网站:女性时尚运动服
2019/04/10 全球购物
用Java语言将一个键盘输入的数字转化成中文输出
2013/01/25 面试题
2014年社区党建工作汇报材料
2014/11/02 职场文书
家装业务员岗位职责
2015/04/03 职场文书