读书人

拖放 Drag and drop 步骤

发布时间: 2012-09-27 11:11:17 作者: rapoo

拖放 Drag and drop 方法
虽然网上又很多实现方法,但是还是需要理解拖放原理。通过绑定onmousedown,onmousemove.onmouseup事件来实现层拖放位置变化,这只是很简单实现,可以去换个方法去实现。

<!DOCTYPE html><html><head><title>demo</title><style>   .drag1 , .drag2{position:relative;width:200px;height:200px;        line-height: 200px;text-align: center;vertical-align: middle;border-radius: 5px;border:1px solid red;   }</style></head><body><div id="drag1" class="drag1"> drag layer</div></body><script>// drag and drap classfunction DND(el){  _startX = 0;            // mouse starting positions  _startY = 0;  _offsetX = 0;           // current element offset  _offsetY = 0;  _dragElement = el;      // needs to be passed from OnMouseDown to OnMouseMove  _oldZIndex = 0;         // we temporarily increase the z-index during drag}DND.prototype = {        init : function(){            var _this = this;            //replace with adeventListeners or attachEvent    document.onmousedown = function(e){_this.onMouseDown(e)};    document.onmouseup = function(e){_this.onMouseUp(e)};},onMouseDown: function(e){      var even = e ? e : window.event;      var target = e.target ? e.target : e.srcElement;      if(e.button == 1 || e.button == 0){          _startX = even.clientX;  _startY = even.clientY;  _offsetX = this.parseMumber(target.style.left);          _offsetY = this.parseMumber(target.style.top);  _oldZindex = target.style.zIndex;  _dragElement = target;//replace with adeventListeners or attachEvent document.onmousemove = this.onMouseMove;                 // cancel out any text selections                 document.body.focus();                 // prevent text selection in IE                 document.onselectstart = function () { return false; };                 // prevent IE from trying to drag an image                 target.ondragstart = function() { return false; };return false;      }},onMouseMove: function(e){      var e = e ? e : window.event;      _dragElement.style.left = (_offsetX + e.clientX - _startX) + 'px';      _dragElement.style.top = (_offsetY + e.clientY - _startY) + 'px';              _dragElement.style.cursor ="move";},onMouseUp: function(e){     if(_dragElement){//replace with adeventListeners or attachEventdocument.onmousemove = null;                document.onselectstart = null;                _dragElement.ondragstart = null;_dragElement.style.cursor ="";_dragElement = null;     }},parseMumber: function(value){    var n = parseInt(value);    return isNaN(n) ? 0 : n;}};var dd1 = new DND(document.getElementById("drag1")).init();</script></html>


参考:
http://www.cnblogs.com/Godblessyou/archive/2008/05/14/1196746.html
http://www.webreference.com/programming/javascript/mk/column2/
http://luke.breuer.com/tutorial/javascript-drag-and-drop-tutorial.aspx
http://www.quirksmode.org/js/dragdrop.html

读书人网 >Web前端

热点推荐