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加密解密7种方法总结分析
Oct 07 Javascript
javascript 必知必会之closure
Sep 21 Javascript
JSON 编辑器实现代码
Dec 06 Javascript
JavaScript高级程序设计 阅读笔记(十八) js跨平台的事件
Aug 14 Javascript
jQuery之DOM对象和jQuery对象的转换与区别分析
Jan 08 Javascript
浅谈js中的闭包
Mar 16 Javascript
JavaScript必知必会(五) eval 的使用
Jun 08 Javascript
第一篇初识bootstrap
Jun 21 Javascript
微信公众号-获取用户信息(网页授权获取)实现步骤
Oct 21 Javascript
jQuery编写设置和获取颜色的插件
Jan 09 Javascript
JavaScript运动框架 解决防抖动问题、悬浮对联(二)
May 17 Javascript
Vue2.0点击切换类名改变样式的方法
Aug 22 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
发挥语言的威力--融合PHP与ASP
2006/10/09 PHP
php array_unique之后json_encode需要注意
2011/01/02 PHP
php输出xml必须header的解决方法
2014/10/17 PHP
php使用CURL不依赖COOKIEJAR获取COOKIE的方法
2015/06/17 PHP
Yii rules常用规则示例
2016/03/15 PHP
Laravel框架表单验证操作实例分析
2019/09/30 PHP
Thinkphp 框架扩展之行为扩展原理与实现方法分析
2020/04/23 PHP
基于jquery的图片懒加载js
2010/06/30 Javascript
jQuery编辑器KindEditor4.1.4代码高亮显示设置教程
2013/03/01 Javascript
ie与ff下的event事件使用介绍
2013/11/25 Javascript
Node.js 服务器端应用开发框架 -- Hapi.js
2014/07/29 Javascript
jquery 操作css样式、位置、尺寸方法汇总
2014/11/28 Javascript
深入理解JavaScript系列(48):对象创建模式(下篇)
2015/03/04 Javascript
clipboard.js无需Flash无需依赖任何JS库实现文本复制与剪切
2015/10/10 Javascript
深入理解JavaScript中的浮点数
2016/05/18 Javascript
浅谈jQuery 中的事件冒泡和阻止默认行为
2016/05/28 Javascript
jquery 动态合并单元格的实现方法
2016/08/26 Javascript
微信小程序 图片边框解决方法
2017/01/16 Javascript
jQuery使用eraser.js插件实现擦除、刮刮卡效果的方法【附eraser.js下载】
2017/04/28 jQuery
React中上传图片到七牛的示例代码
2017/10/10 Javascript
AngularJS实现动态切换样式的方法分析
2018/06/26 Javascript
Vue render渲染时间戳转时间,时间转时间戳及渲染进度条效果
2018/07/27 Javascript
JavaScript引用类型RegExp基本用法详解
2018/08/09 Javascript
Puppet的一些技巧
2018/09/17 Javascript
使用TS来编写express服务器的方法步骤
2020/10/29 Javascript
[01:03:13]VG vs Pain 2018国际邀请赛小组赛BO2 第一场 8.18
2018/08/19 DOTA
Django + Uwsgi + Nginx 实现生产环境部署的方法
2018/06/20 Python
解决python3 pika之连接断开的问题
2018/12/18 Python
Python容器使用的5个技巧和2个误区总结
2019/09/26 Python
在Django中自定义filter并在template中的使用详解
2020/05/19 Python
总经理岗位职责
2013/11/09 职场文书
法院个人总结
2015/03/03 职场文书
停水通知
2015/04/16 职场文书
公司年夜饭通知
2015/04/25 职场文书
化工生产实习心得体会
2016/01/22 职场文书
不负正版帝国之名 《重返帝国》引领SLG手游制作新的标杆
2022/04/07 其他游戏