zoukankan      html  css  js  c++  java
  • javascript--”原路返回“

    css代码:

    <style type="text/css">
            * {
                margin: 0px;
                padding: 0px;
                font-family: "micsoft yahei","微软雅黑";
                font-size: 15px;
    
            }
            div{
                 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>
    css代码

    html代码

    1 <body>
    2 <input type="button" value="原路返回"/>
    3 
    4 <div></div>
    5 </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>
    
  • 相关阅读:
    高通、猎户机型Android典型bootloader分析
    Ubuntu 14.04 中安装 VMware10 Tools工具
    Linux内核中的GPIO系统之(3):pin controller driver代码分析
    linux内核中的GPIO系统之(2):pin control subsystem
    linux内核中的GPIO系统之(1):软件框架
    WINCE6.0组件选择说明
    看看,这就是微软的“万物互联”系统 window10 IOT
    高通平台 lcd driver 调试小结
    STM8S定时器工作
    开关笔记
  • 原文地址:https://www.cnblogs.com/goesby/p/4226969.html
Copyright © 2011-2022 走看看