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 相关文章推荐
js中字符替换函数String.replace()使用技巧
Aug 14 Javascript
THREE.JS入门教程(3)着色器-下
Jan 24 Javascript
js 火狐下取本地路径实现思路
Apr 02 Javascript
JS实现焦点图轮播效果的方法详解
Dec 19 Javascript
微信小程序之拖拽排序(代码分享)
Jan 21 Javascript
jQuery实现简单的抽奖游戏
May 05 jQuery
详解webpack 打包文件体积过大解决方案(code splitting)
Apr 10 Javascript
浅谈Vue.js路由管理器 Vue Router
Aug 16 Javascript
js实现下拉框二级联动
Dec 04 Javascript
Vue源码解析之数据响应系统的使用
Apr 24 Javascript
用jQuery实现抽奖程序
Apr 12 jQuery
vue el-upload上传文件的示例代码
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
CI框架自动加载session出现报错的解决办法
2014/06/17 PHP
php之curl实现http与https请求的方法
2014/10/21 PHP
php检查日期函数checkdate用法实例
2015/03/19 PHP
PHP设计模式之委托模式定义与用法简单示例
2018/08/13 PHP
js 文本滚动效果的实例代码
2013/08/17 Javascript
javascript禁止访客复制网页内容的实现代码
2015/08/05 Javascript
JavaScript脚本库编写的方法
2015/12/09 Javascript
浅析JS原型继承与类的继承
2016/04/07 Javascript
NPM 安装cordova时警告:npm WARN deprecated minimatch@2.0.10: Please update to minimatch 3.0.2 or higher to
2016/12/20 Javascript
使用vue-infinite-scroll实现无限滚动效果
2018/06/22 Javascript
jQuery实现炫丽的3d旋转星空效果
2018/07/04 jQuery
node.js基于socket.io快速实现一个实时通讯应用
2019/04/23 Javascript
关于element-ui表单中限制输入纯数字的解决方式
2020/09/08 Javascript
JavaScript封装单向链表的示例代码
2020/09/17 Javascript
新手该如何学python怎么学好python?
2008/10/07 Python
跟老齐学Python之有容乃大的list(1)
2014/09/14 Python
解决pip install的时候报错timed out的问题
2018/06/12 Python
为何人工智能(AI)首选Python?读完这篇文章你就知道了(推荐)
2019/04/06 Python
python基于Selenium的web自动化框架
2019/07/14 Python
在python image 中安装中文字体的实现方法
2019/08/22 Python
浅谈python3 构造函数和析构函数
2020/03/12 Python
Python爬虫Scrapy框架CrawlSpider原理及使用案例
2020/11/20 Python
python中的插入排序的简单用法
2021/01/19 Python
详解Canvas 实现炫丽的粒子运动效果(粒子生成文字)
2018/02/01 HTML / CSS
比驿:全球酒店比价网
2018/06/20 全球购物
巴塞罗那观光通票:Barcelona Pass
2019/10/30 全球购物
手工制作的意大利皮革运动鞋:KOIO
2020/01/05 全球购物
以下的初始化有什么区别
2013/12/16 面试题
服装销售人员求职自我评价
2013/09/26 职场文书
给物业的表扬信
2014/01/21 职场文书
自立自强的名人事例
2014/02/10 职场文书
大学生个人自荐信样本
2014/03/02 职场文书
机关会计岗位职责
2014/04/08 职场文书
中小学教师继续教育心得体会
2016/01/19 职场文书
离婚协议书范本(2016最新版)
2016/03/18 职场文书
Spring Data JPA框架的核心概念和Repository接口
2022/04/28 Java/Android