JavaScript 拖动drag算法

元素拖动前提条件:元素为定位元素, 个人建议position:absolute;

算法1

var left,top,x,y;
var element = document.getElementById('drag');
element.onmousedown = function(e){
      e = e || window.event;
	  left = this.offsetLeft;
	  top = this.offsetTop;
	  x =e.clientX;
	  y =e.clientY;
	  this.addEventListener('mousemove',dragMove,false);
	  this.addEventListener('mouseup',dragEnd,false);
	  return false;
};
function dragMove(e){
      e = e|| window.event;
      this.style.left = left + (e.clientX - x) + 'px';
      this.style.top = top + (e.clientY -y) +'px';
	  return false;
}
function dragEnd(e){
   	  this.removeEventListener('mousemove',dragMove,false);
	  this.removeEventListener('mouseup',dragEnd,false);
}
	

算法2

var x,y;
var element = document.getElementById('drag');
element.onmousedown = function(e){
      e = e || window.event;
	  x =e.clientX - this.offsetLeft;
	  y =e.clientY - this.offsetTop;
	  this.addEventListener('mousemove',dragMove,false);
	  this.addEventListener('mouseup',dragEnd,false);
	  return false;
};
function dragMove(e){
      e = e|| window.event;
      this.style.left = e.clientX - x + 'px';
      this.style.top = e.clientY -y +'px';
	  return false;
}
function dragEnd(e){
   	  this.removeEventListener('mousemove',dragMove,false);
	  this.removeEventListener('mouseup',dragEnd,false);
}

  

posted @ 2014-01-12 12:57  _彭建  阅读(760)  评论(0编辑  收藏  举报