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和CSS速查手册
Aug 20 Javascript
获取URL地址中的文件名和参数的javascript代码
Sep 02 Javascript
js限制文本框为整数和货币的函数代码
Oct 13 Javascript
TreeView 用法(有代码)(asp.net)
Jul 15 Javascript
jQuery实现Twitter的自动文字补齐特效
Nov 28 Javascript
jquery获取table指定行和列的数据方法(当前选中行、列)
Nov 07 Javascript
微信小程序进行微信支付的步骤昂述
Dec 01 Javascript
AngularJs+Bootstrap实现漂亮的计算器
Aug 10 Javascript
AngularJS 事件发布机制
Aug 28 Javascript
vue实现div拖拽互换位置
Jul 29 Javascript
JavaScript 实现同时选取多个时间段的方法
Oct 17 Javascript
vue实现购物车的小练习
Dec 21 Vue.js
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
利用PHP和AJAX创建RSS聚合器的代码
2007/03/13 PHP
PHP substr 截取字符串出现乱码问题解决方法[utf8与gb2312]
2011/12/16 PHP
浅析php数据类型转换
2014/01/09 PHP
PHP中的魔术方法总结和使用实例
2015/05/11 PHP
PHP SPL标准库之数据结构栈(SplStack)介绍
2015/05/12 PHP
浅析PHP中call user func()函数及如何使用call user func调用自定义函数
2015/11/05 PHP
thinkphp3.x连接mysql数据库的方法(具体操作步骤)
2016/05/19 PHP
详解Yii2 rules 的验证规则
2016/12/02 PHP
通过代码实例解析PHP session工作原理
2020/12/11 PHP
Javascript里使用Dom操作Xml
2006/09/20 Javascript
简单JS代码压缩器
2006/10/12 Javascript
jquery插件tooltipv顶部淡入淡出效果使用示例
2013/12/05 Javascript
javascript动态向网页中添加表格实现代码
2014/02/19 Javascript
javaScript中两个等于号和三个等于号之间的区别介绍
2014/06/27 Javascript
什么是 AngularJS?AngularJS简介
2014/12/06 Javascript
JavaScript中的ArrayBuffer详细介绍
2014/12/08 Javascript
javascript基本包装类型介绍
2015/04/10 Javascript
Nodejs中的this详解
2016/03/26 NodeJs
jquery简单插件制作(fn.extend)完整实例
2016/05/24 Javascript
JS常用字符串方法(推荐)
2021/01/15 Javascript
浅谈javascript中遇到的字符串对象处理
2016/11/18 Javascript
canvas实现探照灯效果
2017/02/07 Javascript
vue非父子组件通信问题及解决方法
2018/06/11 Javascript
在vant 中使用cell组件 定义图标该图片和位置操作
2020/11/02 Javascript
Python中Iterator迭代器的使用杂谈
2016/06/20 Python
Django objects的查询结果转化为json的三种方式的方法
2018/11/07 Python
python执行精确的小数计算方法
2019/01/21 Python
Python爬取数据并实现可视化代码解析
2020/08/12 Python
为有想象力的人提供的生活方式商店:Firebox
2018/06/04 全球购物
Oracle性能调优原则
2012/05/03 面试题
教师年终个人自我评价
2013/10/04 职场文书
教师职称自我鉴定
2014/02/12 职场文书
2014年冬季防火方案
2014/05/21 职场文书
社区健康教育工作方案
2014/06/03 职场文书
2014年党员加强作风建设思想汇报
2014/09/15 职场文书
《刺客之王:C罗全景传记》:时代从来不会亏待手艺人
2019/11/28 职场文书