拖拽及覆盖效果



<html>
<head>
<title>拖拽及覆盖效果</title>
</head>

<body>
 <span name="node" style="position:relative;" οnmοusedοwn="move.start(this,event);" οnmοuseup="move.stop();">1</span>
 <span name="node" style="position:relative;" οnmοusedοwn="move.start(this,event);" οnmοuseup="move.stop();">2</span>
 <span name="node" style="position:relative;" οnmοusedοwn="move.start(this,event);" οnmοuseup="move.stop();">3</span>
 <span name="node" style="position:relative;" οnmοusedοwn="move.start(this,event);" οnmοuseup="move.stop();">4</span>
 <span name="node" style="position:relative;" οnmοusedοwn="move.start(this,event);" οnmοuseup="move.stop();">5</span>

 <br><br><br><br>
 <span id="history"></span>
</body>
</html>


<script type="text/javascript">
function getNodes(name)
{
    var ret = document.getElementsByName(name);
 if(ret.length > 0) return ret;
 ret = new Array();
 var spans = document.getElementsByTagName("span");
 for(var i=0;i<spans.length;i++)
 {
  if(spans[i].getAttribute("name") == name)
            ret[ret.length] = spans[i];
 }
 return ret;
}

function MOVE()
{
    var win;
    var x0 = 0;
    var y0 = 0;
    var x1 = 0;
    var y1 = 0;
    var notie = document.getElementById && !document.all;
    var moving = false;

    this.start = function(o,e)
    {
        while(o.style.position!="relative" && o.style.position!="absolute")
   o = notie ? o.parentNode : o.parentElement;
  win = o;
        moving = true;
        x0 = parseInt(win.style.left + 0);
        y0 = parseInt(win.style.top + 0);
        x1 = notie ? e.clientX : event.clientX;
        y1 = notie ? e.clientY : event.clientY;
        document.onmousemove = drag;
  
  o.style.cursor = "move";
  o.style.background = "#ccc";
  
        return false;
    }

    var drag = function(e)
    {
        if(moving)
        {
            win.style.top = (notie ? y0 + e.clientY - y1 : y0 + event.clientY - y1) + "px";
            win.style.left = (notie ? x0 + e.clientX - x1 : x0 + event.clientX - x1) + "px";
            return false;
        }
    }

    this.stop = function()
    {
        moving = false;
  win.style.cursor = "array";
  win.style.background = "#ffffff";
  
  var nodes = getNodes("node");
  var x = win.offsetLeft;
  var y = win.offsetTop;
  var left, right, top, bottom;

  for(var i=0; i<nodes.length; i++)
  {
   
   if(nodes[i] != win)
   {
    left = nodes[i].offsetLeft;
    right = left + nodes[i].offsetWidth;
    top = nodes[i].offsetTop;
    bottom = top + nodes[i].offsetHeight;

    //alert("("+x+","+y+"),"+"["+left+","+right+"]  "+"["+top+","+bottom+"]");
    
    if(left<=x && x<=right && top<=y && y<=bottom)
    {
     alert(win.innerHTML+"覆盖了"+nodes[i].innerHTML);
      break;
    }
   }
  }
  
  document.getElementById("history").innerHTML += win.innerHTML+" 高度: "+win.offsetHeight+"  宽度: "+win.offsetWidth+"  x: "+win.offsetLeft+"  y: "+win.offsetTop+"<br>";  
    }
}
var move = new MOVE();
</script>

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值