JS拖拽-面向对象拖拽-继承
1 //普通拖拽 2 /* 3 * CSS 4 */ 5 #div1{ width:100px; height:100px; position:absolute; background:red; cursor:move;} 6 7 /* 8 *HTML 9 */ 10 <div id="div1"></div> 11 12 13 /* 14 *JavaScript 15 */ 16 window.onload = function (){ 17 var oDiv = document.getElementById("div1"); 18 oDiv.onmousedown = function(ev){ 19 var oEvent = ev || event; //事件处理函数 ev是FF 20 var disX = oEvent.clientX - oDiv.offsetLeft; 21 var disY = oEvent.clientY - oDiv.offsetTop; 22 doucment.onmousemove = function (ev){ 23 var oEvent = ev || event; 24 var l = oEvent.clientX - this.disX; 25 var t = oEvent.clientY - this.disY; 26 oDiv.style.left = l + "px"; 27 oDiv.style.top = t + "px"; 28 document.title = l + " , " + t; //坐标 29 return false; //阻止火狐默认事件 30 } 31 document.onmouseup = function (){ 32 document.onmousemove = null; 33 document.onmouseup = null; 34 } 35 } 36 }
1 //面向对象拖拽 2 /* 3 *CSS 4 */ 5 #div1{ width:100px; height:100px; position:absolute; background:red; cursor:move;} 6 #div2{ width:100px; height:100px; position:absolute; background:yellow; cursor:pointer;} 7 8 /* 9 *HTML 10 */ 11 <div id="div1"></div> 12 <div id="div2"></div> 13 14 /* 15 *Javascript 16 */ 17 window.onload = function (){ 18 19 new Darg("div1"); 20 new Darg("div2"); 21 22 } 23 function Darg(id){ 24 var _this = this; 25 this.oDiv = document.getElementById(id); 26 this.oDiv.onmousedown = function (ev){ 27 _this.ondown(ev); 28 } 29 } 30 Darg.prototype.ondown = function(ev){ 31 var _this = this; 32 var oEvent = ev || event; 33 this.disX = oEvent.clientX - this.oDiv.offsetLeft; 34 this.disY = oEvent.clientY - this.oDiv.offsetTop; 35 document.onmousemove = function (ev){ 36 _this.onmove(ev); 37 } 38 document.onmouseup = function (){ 39 _this.onup(); 40 } 41 } 42 Darg.prototype.onmove = function(ev){ 43 var oEvent = ev || event; 44 var l = oEvent.clientX - this.disX; 45 var t = oEvent.clientY - this.disY; 46 this.oDiv.style.left = l + "px"; 47 this.oDiv.style.top = t + "px"; 48 document.title = l + " , " + t; 49 return false; 50 } 51 Darg.prototype.onup = function(){ 52 document.onmousemove = null; 53 document.onmouseup = null; 54 }
1 //面向对象拖拽-继承 2 /* 3 *CSS 4 */ 5 #div1{ width:100px; height:100px; position:absolute; background:red; cursor:move;} 6 #div2{ width:100px; height:100px; position:absolute; background:yellow; cursor:pointer;} 7 8 /* 9 *HTML 10 */ 11 <div id="div1"></div> 12 <div id="div2"></div> 13 14 /* 15 *Javascript 16 */ 17 window.onload = function (){ 18 19 new Darg("div1"); 20 new extendsDarg("div2"); 21 22 } 23 //面向对象拖拽开始 24 function Darg(id){ 25 var _this = this; 26 this.oDiv = document.getElementById(id); 27 this.oDiv.onmousedown = function (ev){ 28 _this.ondown(ev); 29 } 30 } 31 Darg.prototype.ondown = function(ev){ 32 var _this = this; 33 var oEvent = ev || event; 34 this.disX = oEvent.clientX - this.oDiv.offsetLeft; 35 this.disY = oEvent.clientY - this.oDiv.offsetTop; 36 document.onmousemove = function (ev){ 37 _this.onmove(ev); 38 } 39 document.onmouseup = function (){ 40 _this.onup(); 41 } 42 } 43 Darg.prototype.onmove = function(ev){ 44 var oEvent = ev || event; 45 var l = oEvent.clientX - this.disX; 46 var t = oEvent.clientY - this.disY; 47 this.oDiv.style.left = l + "px"; 48 this.oDiv.style.top = t + "px"; 49 document.title = l + " , " + t; 50 return false; 51 } 52 Darg.prototype.onup = function(){ 53 document.onmousemove = null; 54 document.onmouseup = null; 55 } 56 //面向对象拖拽结束 57 58 //这里开始继承 59 function extendsDarg(id){ 60 Darg.call(this,id); 61 } 62 for(i in Darg.prototype){ 63 extendsDarg.prototype[i] = Darg.prototype[i]; 64 } 65 extendsDarg.prototype.onmove = function(ev){ 66 var oEvent = ev || event; 67 var l = oEvent.clientX - this.disX; 68 var t = oEvent.clientY - this.disY; 69 if(l<0){ 70 l = 0; 71 }else if(l>document.documentElement.clientWidth - this.oDiv.offsetWidth){ 72 l = document.documentElement.clientWidth - this.oDiv.offsetWidth; 73 } 74 if(t<0){ 75 t = 0; 76 }else if(t>document.documentElement.clientHeight - this.oDiv.offsetHeight){ 77 t = document.documentElement.clientHeight - this.oDiv.offsetHeight; 78 } 79 this.oDiv.style.left = l + "px"; 80 this.oDiv.style.top = t + "px"; 81 document.title = l + " , " + t; 82 return false; 83 }