효 과 는 그림 과 같다
데모 코드:
드래그궤적 실행 var isIE = (document.all)?true:false; var $ID = function(id){ return "string"==typeof id?document.getElementById(id):id; } var Class = { create:function(){ return function(){ this.initilize.apply(this,arguments); } } } var Extend = function(destination, source){ for(var property in source){ destination[property] = source[property]; } } var Bind = function(object,fun){ var args = Array.prototype.slice.call(arguments).slice(2); return function(){ return fun.apply(object,args); } } var BindAsEventListener = function(object,fun){ var args = Array.prototype.slice.call(arguments).slice(2); return function(event){ return fun.apply(object,[event||window.event].concat(args)); } } function addEventHandler(oTarget, sEventType, fnHandler) { if (oTarget.addEventListener) { oTarget.addEventListener(sEventType, fnHandler, false); } else if (oTarget.attachEvent) { oTarget.attachEvent("on" + sEventType, fnHandler); } else { oTarget["on" + sEventType] = fnHandler; } }; function removeEventHandler(oTarget, sEventType, fnHandler) { if (oTarget.removeEventListener) { oTarget.removeEventListener(sEventType, fnHandler, false); } else if (oTarget.detachEvent) { oTarget.detachEvent("on" + sEventType, fnHandler); } else { oTarget["on" + sEventType] = null; } }; function getNodePosition(node,type){//type="left"or"top" var nodeTemp = node; var l = 0; var t = 0; while(nodeTemp!=document.body&&nodeTemp!=null){ l += nodeTemp.offsetLeft; t += nodeTemp.offsetTop; nodeTemp = nodeTemp.offsetParent; } if(type.toLowerCase()=="left") return l; else return t; } //앞 에는 보통 base.js 로var MyDrag=Class.create()를 봉 합 니 다.MyDrag.prototype = { initilize:function(obj){ this.Obj = $ID(obj); this._x = this._y = 0; this._xx = this._yy = 0;//이동 기록 좌표 this.Obj.style.position="absolute";this._pos = []; this._ifSavePos = true; this._t = null; this._speed = 10; this._indexMove = 0;//전역 MoveIndex this.fnStart = BindAsEventListener(this,this.Start); this._fnMove = BindAsEventListener(this,this.Move); this._fnStop = Bind(this,this.Stop); addEventHandler(this.Obj,"mousedown",this._fnStart); }, Start:function(oEvent){ if(!this._ifSavePos) this._pos = []; this.Drag = this.Obj.cloneNode(true); if(isIE) this.Drag.style.filter = "alpha(opacity=50)"; else this.Drag.style.opacity = "0.5"; this.Obj.parentNode.appendChild(this.Drag); this._left1 = this._xx = getNodePosition(this.Obj,"left"); this._top1 = this._yy = getNodePosition(this.Obj,"top"); this._x = oEvent.clientX - this.Obj.offsetLeft; this._y = oEvent.clientY - this.Obj.offsetTop; addEventHandler(document,"mousemove",this._fnMove); addEventHandler(document,"mouseup",this._fnStop); this._t = setInterval(Bind(this,this.SavePos),10); }, SavePos:function(){/좌표 점 this. 기록pos.push(this._xx + "_" + this._yy); }, Move:function(oEvent){ if(isIE) oEvent.returnValue = false; this._xx = oEvent.clientX - this._x; this._yy = oEvent.clientY - this._y; this.Drag.style.left = this._xx + "px"; this.Drag.style.top = this._yy + "px"; }, Stop:function(){ removeEventHandler(document,"mousemove",this._fnMove); removeEventHandler(document,"mouseup",this._fnStop); this.Obj.parentNode.removeChild(this.Drag); this.Obj.style.left = this._xx + "px"; this.Obj.style.top = this._yy + "px"; clearInterval(this._t); this._fnCloneMove = Bind(this,this.CloneMove); this._t = setTimeout(this._fnCloneMove,50); }, CloneMove:function(){ if(this._indexMove<6){ new ObjMove({x1:this._left1,y1:this._top1,x2:this._xx,y2:this._yy,pos:this._pos}); this._indexMove++; this._t = setTimeout(this._fnCloneMove,50); }else{ clearTimeout(this._t); this._indexMove = 0; } } } var ObjMove = Class.create(); ObjMove.prototype = { initilize:function(options){ this.SetOptions(options); this.Obj = document.createElement("DIV"); this.Obj.style.cssText = "position:absolute;left:"+ this.options.x1 +"px;top:"+ this.options.y1 +"px;width:100px;height:100px;background-color:#f60;fliter:alpha(opacity=100);opacity:1;"; document.body.appendChild(this.Obj); this.Move2(); }, SetOptions:function(options){this.options={/기본 값 x1:0,y1:0,x2:0,y2:0,pos:[]};Extend(this.options, options || {}); }, Move2:function(){ this._indexMove = 0; this._fnMovePos = Bind(this,this.MovePos); this._t = setInterval(this._fnMovePos,10); }, MovePos:function(){ if(this._indexMove>=this.options.pos.length){ this.options.pos = []; document.body.removeChild(this.Obj); clearInterval(this._t); }else{ this.Obj.style.left = this.options.pos[this._indexMove].split("_")[0] + "px"; this.Obj.style.top = this.options.pos[this._indexMove].split("_")[1] + "px"; } this._indexMove++; } } onload = function(){ var myDrag = new MyDrag("div1"); $ID("rad1").onclick = function(){ myDrag._ifSavePos = true; } $ID("rad2").onclick = function(){ myDrag._ifSavePos = false; } } 그 작은 사각형 을 몇 초 동안 마음대로 드래그 하 십시오.
궤적 기억 하지 않 기
[Ctrl+A 전체 선택:
외부 Js 를 도입 하려 면 페이지 를 새로 고침 해 야 실행 할 수 있 습 니 다.]
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
jquery 드래그 div
*jquery 라이브러리 내 다운로드로 다운로드
=============================================================/감청 이벤트와 리셋
====================...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.