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 相关文章推荐
使用jQuery.Validate进行客户端验证(初级篇) 不使用微软验证控件的理由
Jun 28 Javascript
基于jquery的二级联动菜单实现代码
Apr 25 Javascript
基于jQuery的input输入框下拉提示层(自动邮箱后缀名)
Jun 14 Javascript
event对象获取方法总结在google浏览器下测试
Nov 03 Javascript
jquery validation验证身份证号,护照,电话号码,email(实例代码)
Nov 06 Javascript
利用JQuery制作符合Web标准的QQ弹出消息
Jan 14 Javascript
jquery选择器之基本过滤选择器详解
Jan 27 Javascript
JavaScript让Textarea支持tab按键的方法
Jun 26 Javascript
jquery实现的蓝色二级导航条效果代码
Aug 24 Javascript
原生js实现自由拖拽弹窗代码demo
Jun 29 Javascript
ZeroClipboard.js使用一个flash复制多个文本框
Jun 19 Javascript
jQuery的ztree仿windows文件新建和拖拽功能的实现代码
Dec 05 jQuery
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
echo(),print(),print_r()之间的区别?
2006/11/19 PHP
ajax缓存问题解决途径
2006/12/06 PHP
动易数据转成dedecms的php程序
2007/04/07 PHP
php实现的九九乘法口诀表简洁版
2014/07/28 PHP
分享一段PHP制作的中文拼音首字母工具类
2014/12/11 PHP
Yii2基于Ajax自动获取表单数据的方法
2016/08/10 PHP
php使用event扩展的io复用测试的示例
2020/10/20 PHP
javascript showModalDialog,open取得父窗口的方法
2010/03/10 Javascript
javascript获取ckeditor编辑器的值(实现代码)
2013/11/18 Javascript
微信中一些常用的js方法汇总
2015/03/12 Javascript
jQuery实现类似老虎机滚动抽奖效果
2015/08/06 Javascript
jQuery+json实现的简易Ajax调用实例
2015/12/14 Javascript
JS触摸屏网页版仿app弹窗型滚动列表选择器/日期选择器
2016/10/30 Javascript
javascript创建对象的3种方法
2016/11/02 Javascript
浅谈使用splice函数对数组中的元素进行删除时的注意事项
2016/12/04 Javascript
node.js中EJS 模板快速入门教程
2017/05/08 Javascript
js中变量的连续赋值(实例讲解)
2017/07/08 Javascript
简单明了区分escape、encodeURI和encodeURIComponent
2018/05/26 Javascript
Angular父子组件通过服务传参的示例方法
2018/10/31 Javascript
微信小程序request请求封装,验签代码实例
2019/12/04 Javascript
关于IDEA中的.VUE文件报错 Export declarations are not supported by current JavaScript version
2020/10/17 Javascript
js实现日历
2020/11/07 Javascript
python备份文件以及mysql数据库的脚本代码
2013/06/10 Python
python实现逆波兰计算表达式实例详解
2015/05/06 Python
使用pandas模块读取csv文件和excel表格,并用matplotlib画图的方法
2018/06/22 Python
Python3.5 处理文本txt,删除不需要的行方法
2018/12/10 Python
scrapy-redis的安装部署步骤讲解
2019/02/27 Python
python有序查找算法 二分法实例解析
2020/02/18 Python
浅谈python3 构造函数和析构函数
2020/03/12 Python
Python Serial串口基本操作(收发数据)
2020/11/06 Python
CSS3 box-sizing属性详解
2016/11/15 HTML / CSS
贝玲妃英国官网:Benefit英国
2018/02/03 全球购物
平面设计岗位职责
2013/12/14 职场文书
公民授权委托书范本
2014/09/17 职场文书
酒店厨房管理制度
2015/08/06 职场文书
Mysql数据库按时间点恢复实战记录
2021/06/30 MySQL