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支持firefox,ie7页面布局拖拽效果代码
Dec 20 Javascript
JavaScript中用sort()方法对数组元素进行排序的操作
Jun 09 Javascript
javascript实现加载xml文件的方法
Nov 24 Javascript
JavaScript必知必会(六) delete in instanceof
Jun 08 Javascript
jQuery获取剪贴板内容的方法
Jun 16 Javascript
jQuery Easyui学习教程之实现datagrid在没有数据时显示相关提示内容
Jul 09 Javascript
Wireshark基本介绍和学习TCP三次握手
Aug 15 Javascript
修改Jquery Dialog 位置的实现方法
Aug 26 Javascript
简单实现Vue的observer和watcher
Dec 21 Javascript
JS仿JQuery选择器功能
Mar 08 Javascript
Vue.js 通过jQuery ajax获取数据实现更新后重新渲染页面的方法
Aug 09 jQuery
JS call()及apply()方法使用实例汇总
Jul 11 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去除字符串中空字符的常用方法小结
2015/03/17 PHP
php图像处理类实例
2015/07/28 PHP
WordPress中获取页面链接和标题的相关PHP函数用法解析
2015/12/17 PHP
thinkPHP数据库增删改查操作方法实例详解
2016/12/06 PHP
php简单构造json多维数组的方法示例
2017/06/08 PHP
php使用gearman进行任务分发操作实例详解
2020/02/26 PHP
jquery.cvtooltip.js 基于jquery的气泡提示插件
2010/11/19 Javascript
基于jQuery实现的当离开页面时出现提示的实现代码
2011/06/27 Javascript
jquery模拟LCD 时钟的html文件源代码
2014/06/16 Javascript
jQuery给多个不同元素添加class样式的方法
2015/03/26 Javascript
把普通对象转换成json格式的对象的简单实例
2016/07/04 Javascript
jquery.form.js异步提交表单详解
2017/04/25 jQuery
AngularJS基于factory创建自定义服务的方法详解
2017/05/25 Javascript
Angularjs修改密码的实例代码
2017/05/26 Javascript
详解react如何在组件中获取路由参数
2017/06/15 Javascript
原生js实现密码输入框值的显示隐藏
2017/07/17 Javascript
Vue起步(无cli)的啊教程详解
2019/04/11 Javascript
解决layer 动态加载select 失效的问题
2019/09/18 Javascript
[01:59]DOTA2首部纪录片《Free to play》预告片
2014/03/12 DOTA
[01:18:45]DOTA2-DPC中国联赛 正赛 DLG vs Dragon BO3 第三场2月1日
2021/03/11 DOTA
python绘制双柱形图代码实例
2017/12/14 Python
利用python画出折线图
2018/07/26 Python
在python中pandas读文件,有中文字符的方法
2018/12/12 Python
解决pycharm remote deployment 配置的问题
2019/06/27 Python
Python列表对象实现原理详解
2019/07/01 Python
python数值基础知识浅析
2019/11/19 Python
python小技巧——将变量保存在本地及读取
2020/11/13 Python
HTML5 video标签(播放器)学习笔记(二):播放控制
2015/04/24 HTML / CSS
For Art’s Sake官网:手工制作的奢华眼镜
2018/12/15 全球购物
电子商务专员岗位职责
2013/12/11 职场文书
小班评语大全
2014/05/04 职场文书
消夏晚会主持词
2015/06/30 职场文书
2015年依法治校工作总结
2015/07/27 职场文书
新兵入伍决心书
2015/09/22 职场文书
文明和谐家庭事迹材料(2016精选版)
2016/02/29 职场文书
与Windows10相比Windows11有哪些改进?值不值得升级?
2021/11/21 数码科技