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>
    
  • 相关阅读:
    微软软件下载
    FTP主动连接与被动连接
    Linux下grep显示前后几行信息
    cacti 安装过程中“ERROR: 您的MySQL TimeZone 数据库未被填充. 请在继续之前填入此数据库.”
    Cacti安装详细步骤
    Linux 踢掉其他终端用户
    迁移设备存储报的错误及解决方式
    sql_mode :(STRICT_TRANS_TABLES与STRICT_ALL_TABLES 区别)
    Nginx日志按日期切割详解(按天切割)
    git pull冲突:commit your changes or stash them before you can merge.
  • 原文地址:https://www.cnblogs.com/goesby/p/4226969.html
Copyright © 2011-2022 走看看