zoukankan      html  css  js  c++  java
  • 网上找的一个超简单的JS拖拽

    代码
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"
    >
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
    <title>runcode</title>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <meta name="Author" content="Sheneyan" />
    <script type="text/javascript">
    /**
    *取得元素的真实css属性
    *@param {Object} d 元素
    *@param {String} a 元素的css属性名
    *@version 0.2
    */
    function gs(d,a){
      
    if (d.currentStyle){ 
        
    var curVal=d.currentStyle[a]
      }
    else
        
    var curVal=document.defaultView.getComputedStyle(d, null)[a]
      } 
      
    return curVal;
    }
    /**
     * 取得鼠标坐标
     * @return Position
     
    */
    function getMouseLocation(e){
      
    if(!document.all){
        mouseX 
    = e.pageX;
        mouseY 
    = e.pageY;
      }
      
    else{
        mouseX 
    = event.x + document.body.scrollLeft;
        mouseY 
    = event.y + document.body.scrollTop;
      }
      
    return {x:mouseX,y:mouseY};
    }
    /**
     * 拖动对象
     * @param {DOM Object} DOM对象
     
    */
    function drag(e,obj){
      
    var p1 = getMouseLocation(e);
      
    var startRight = null;
      
    var startTop = null;
      
    var startLeft = null;
      
    var startBottom = null;
      
    var l = gs(obj,"left");
      
    var r = gs(obj,"right");
      
    var t = gs(obj,"top");
      
    var b = gs(obj,"bottom");
      
    if(!l)
        startRight 
    = parseInt(r);
      
    else
        startLeft 
    = parseInt(l);
      
    if(!t)
        startBottom 
    = parseInt(b);
      
    else
        startTop 
    = parseInt(t);
      
    if(obj.setCapture)
        obj.setCapture();
      
    else if (window.captureEvents)
        window.captureEvents(Event.MOUSEMOVE
    |Event.MOUSEUP);
      document.onmousemove 
    = function(e){
        
    var p2 = getMouseLocation(e);
        
    var xMove = p2.x-p1.x;
        
    var yMove = p2.y-p1.y;
        
    if(!l)
          obj.style.right 
    = (startRight - xMove)+"px";
        
    else
          obj.style.left 
    = (startLeft + xMove)+"px";
        
    if(!t)
          obj.style.bottom 
    = (startBottom - yMove)+"px";
        
    else
          obj.style.top 
    = (startTop + yMove)+"px";
      }
      document.onmouseup 
    = function(){
        
    if(obj.releaseCapture)
          obj.releaseCapture();
        
    else if (window.captureEvents) 
          window.captureEvents(Event.MOUSEMOVE
    |Event.MOUSEUP);
        document.onmouseup 
    = null;
        document.onmousemove 
    = null;
      }
    }
    </script>
    <style type="text/css">
    div#test
    {border:solid 1px blue;background:red;position:absolute;left:100px;top:200px;width:200px;height:200px;cursor:pointer;}
    </style>
    </head>
    <body>
    <div id="test" onmousedown="drag(event,this)">拖我拖我拖我拖我拖我拖我拖我<div>
    </body>
    </html>
  • 相关阅读:
    关于可控进程数的PHP多进程以及信号控制
    编译安装PHP遇到的问题
    MySQL数据的导入导出
    关于svn的dump和load命令
    Nginx多域名的泛解析
    kafka
    JavaScript
    失误与经验
    Hadoop
    Storm
  • 原文地址:https://www.cnblogs.com/jacd/p/1703356.html
Copyright © 2011-2022 走看看