JS實現(xiàn)的簡易拖放效果示例
本文實例講述了JS實現(xiàn)的簡易拖放效果。分享給大家供大家參考,具體如下:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=gb2312" /> <title>簡易拖放效果</title> </head> <body> <script type="text/JavaScript"> <!-- var isIE = (document.all) ? true : false;// 是否ie var $ = function (id) { //返回id對象 return "string" == typeof id ? document.getElementById(id) : id; }; var Class = { // 帶構(gòu)造方法的類 create: function() { return function() { this.initialize.apply(this, arguments); } //用apply應用下面的initialize初始化屬性 } } var Extend = function(destination, source) { //繼承 for (var property in source) { destination[property] = source[property]; } } var Bind = function(object, fun) { return function() { return fun.apply(object, arguments); } } /** 用object對象調(diào)用fun參數(shù)是event||window event **/ var BindAsEventListener = function(object, fun) { return function(event) { return fun.call(object, (event || window.event)); } } /** 添加幀聽器事件 @oTarget 目標對象 @sEventType 事件類型 @fnHandler 目標觸發(fā)事件對象 **/ function addEventHandler(oTarget, sEventType, fnHandler) { if (oTarget.addEventListener) { oTarget.addEventListener(sEventType, fnHandler, false);//firefox } else if (oTarget.attachEvent) { oTarget.attachEvent("on" + sEventType, fnHandler);//ie } else { oTarget["on" + sEventType] = fnHandler;//other } }; /** 清除添加的幀聽器事件 @oTarget 目標對象 @sEventType 事件類型 @fnHandler 目標觸發(fā)事件對象 **/ 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; } }; /*------------------------------相關(guān)模型構(gòu)造完畢-----------------------------------*/ //拖放程序 var SimpleDrag = Class.create(); SimpleDrag.prototype = { //拖放對象,觸發(fā)對象,初始化 initialize: function(drag) { this.Drag = $(drag); this._x = this._y = 0; this._fM = BindAsEventListener(this, this.Move);//_fM方法就是應用MOVE方法參數(shù)是event||window.event this._fS = Bind(this, this.Stop);//_fS類方法就是Stop方法 this.Drag.style.position = "absolute"; this.Drag.style.cursor = "move"; addEventHandler(this.Drag, "mousedown", BindAsEventListener(this, this.Start)); }, //準備拖動 Start: function(oEvent) { this._x = oEvent.clientX - this.Drag.offsetLeft; this._y = oEvent.clientY - this.Drag.offsetTop; addEventHandler(document, "mousemove", this._fM); addEventHandler(document, "mouseup", this._fS); }, //拖動 Move: function(oEvent) { this.Drag.style.left = oEvent.clientX - this._x + "px"; this.Drag.style.top = oEvent.clientY - this._y + "px"; }, //停止拖動 Stop: function() { removeEventHandler(document, "mousemove", this._fM); removeEventHandler(document, "mouseup", this._fS); } }; // --> </script> <div id="idDrag" style="border:5px solid #0000FF; background:#C4E3FD; width:50px; height:50px;"></div> <script type="text/javascript"> <!-- new SimpleDrag("idDrag"); // --> </script> </body> </html>
更多關(guān)于JavaScript相關(guān)內(nèi)容感興趣的讀者可查看本站專題:《JavaScript切換特效與技巧總結(jié)》、《JavaScript查找算法技巧總結(jié)》、《JavaScript動畫特效與技巧匯總》、《JavaScript錯誤與調(diào)試技巧總結(jié)》、《JavaScript數(shù)據(jù)結(jié)構(gòu)與算法技巧總結(jié)》、《JavaScript遍歷算法與技巧總結(jié)》及《JavaScript數(shù)學運算用法總結(jié)》
希望本文所述對大家JavaScript程序設(shè)計有所幫助。
相關(guān)文章
重學 JS:為啥 await 不能用在 forEach 中詳解
這篇文章主要介紹了重學 JS:為啥 await 不能用在 forEach 中,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2019-04-04JavaScript遍歷數(shù)組的三種方法map、forEach與filter實例詳解
這篇文章主要介紹了JavaScript遍歷數(shù)組的三種方法map、forEach與filter,結(jié)合實例形式詳細分析了javascript針對數(shù)組遍歷的map、forEach與filter三種方法相關(guān)操作技巧與注意事項,需要的朋友可以參考下2019-02-02javascript 文字上下間隔滾動的代碼 符合WEB標準 腳本之家修正版
javascript 文字上下間隔滾動的代碼 符合WEB標準 腳本之家修正版,這里提供了兩個版本,第二個在firefox下運行有些問題大家可以修改下,第一個的高度問題,已經(jīng)修正,其實就是簡單的加了css樣式。2009-12-12十個開發(fā)人員面臨的最常見的JavaScript問題總結(jié)
今天,JavaScript?是幾乎所有現(xiàn)代?Web?應用的核心。這就是為什么JavaScript問題,以及找到導致這些問題的錯誤,是?Web?發(fā)者的首要任務(wù)。本文總結(jié)了十個常見的問題及解決方法,需要的可以參考一下2022-11-11