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实现鼠标单击网页文字后在文本框显示的方法
May 06 Javascript
Jquery左右滑动插件之实现超级炫酷动画效果附源码下载
Dec 02 Javascript
JavaScript实现Fly Bird小游戏
Dec 15 Javascript
angular过滤器实现排序功能
Jun 27 Javascript
vue引入swiper插件的使用实例
Jul 19 Javascript
详解微信小程序中的页面代码中的模板的封装
Oct 12 Javascript
浅谈vue方法内的方法使用this的问题
Sep 15 Javascript
小试SVG之新手小白入门教程
Jan 08 Javascript
微信小程序3种位置API的使用方法详解
Aug 05 Javascript
JavaScript switch语句使用方法简介
Dec 30 Javascript
Openlayers实现扩散的动态点(水纹效果)
Aug 17 Javascript
vue递归实现树形组件
Jul 15 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日历[测试通过]
2008/03/27 PHP
php实现word转html的方法
2016/01/22 PHP
Yii 2.0实现联表查询加搜索分页的方法示例
2017/08/02 PHP
PHP面向对象五大原则之接口隔离原则(ISP)详解
2018/04/04 PHP
ExtJS下 Ext.Direct加载和提交过程排错小结
2013/04/02 Javascript
Extjs 3.3切换tab隐藏相应工具栏出现空白解决
2013/04/02 Javascript
jquery动态添加删除div 具体实现
2013/07/20 Javascript
详解使用angular-cli发布i18n多国语言Angular应用
2017/05/20 Javascript
利用hasOwnProperty给数组去重的面试题分享
2018/11/05 Javascript
vue cli3.0结合echarts3.0与地图的使用方法示例
2019/03/26 Javascript
Vue运用transition实现过渡动画
2019/05/06 Javascript
VUE实现图片验证码功能
2020/11/18 Javascript
jQuery HTML获取内容和属性操作实例分析
2020/05/20 jQuery
vue mvvm数据响应实现
2020/11/11 Javascript
[09:43]DOTA2每周TOP10 精彩击杀集锦vol.5
2014/06/25 DOTA
Python中条件选择和循环语句使用方法介绍
2013/03/13 Python
python实现得到一个给定类的虚函数
2014/09/28 Python
python生成随机图形验证码详解
2017/11/08 Python
Python PIL读取的图像发生自动旋转的实现方法
2019/07/05 Python
Python学习笔记之列表推导式实例分析
2019/08/13 Python
Python设计密码强度校验程序
2020/07/30 Python
全面总结使用CSS实现水平垂直居中效果的方法
2016/03/10 HTML / CSS
深入研究HTML5实现图片压缩上传功能
2016/03/25 HTML / CSS
美国名牌太阳镜折扣网站:Eyedictive
2017/05/15 全球购物
大学生毕业自我评价范文分享
2013/11/07 职场文书
木工主管岗位职责
2013/12/08 职场文书
幼儿园小班教学反思
2014/02/02 职场文书
营销与策划专业求职信
2014/06/20 职场文书
社团活动总结报告
2014/06/27 职场文书
2014党员民主评议个人思想剖析发言
2014/09/19 职场文书
2014年药房工作总结
2014/11/22 职场文书
总结python多进程multiprocessing的相关知识
2021/06/29 Python
如何利用opencv判断两张图片是否相同详解
2021/07/07 Python
深入浅析Django MTV模式
2021/09/04 Python
Java数据开发辅助工具Docker与普通程序使用方法
2021/09/15 Java/Android
Python装饰器详细介绍
2022/03/25 Python