日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区

您的位置:首頁技術文章
文章詳情頁

JS面向對象編程實現的拖拽功能案例詳解

瀏覽:232日期:2024-05-22 13:06:49

本文實例講述了JS面向對象編程實現的拖拽功能。分享給大家供大家參考,具體如下:

原始的面向過程代碼:

<!DOCTYPE html><html> <head> <meta charset='UTF-8'> <style> #box {width: 100px; height: 100px; background: blue; position: absolute; } </style> <title>拖拽</title> <script> var oBox=null; var disX=0; var disY=0; window.onload=function(){oBox=document.getElementById(’box’);oBox.onmousedown=fnDown; }; //鼠標按下事件 function fnDown(ev){var oEvent = ev||event;disX = oEvent.clientX - oBox.offsetLeft;disY = oEvent.clientY - oBox.offsetTop;document.onmousemove = fnMove;document.onmouseup = fnUp; } //鼠標移動事件 function fnMove(ev){var oEvent=ev||event;oBox.style.left = oEvent.clientX - disX + ’px’;oBox.style.top = oEvent.clientY - disY + ’px’; } //鼠標抬起事件 function fnUp(){document.onmousemove = null;document.onmouseup = null; } </script> </head> <body> <div id='box'></div></body></html>

下面是面向對象的代碼

drag.js

/** * 拖拽 * @param {Object} id div的id */function Drag(id){ this.oBox = document.getElementById(id); this.disX = 0; this.disY = 0; var _this = this; this.oBox.onmousedown = function(){ _this.fnDown(); }}//鼠標按下Drag.prototype.fnDown = function(ev){ var oEvent = ev || event; this.disX = oEvent.clientX - this.oBox.offsetLeft; this.disY = oEvent.clientY - this.oBox.offsetTop; var _this = this; document.onmousemove = function(){ _this.fnMove(); }; document.onmouseup = function(){ _this.fnUp(); };}//鼠標移動Drag.prototype.fnMove = function(ev){ var oEvent= ev || event; this.oBox.style.left = oEvent.clientX - this.disX + ’px’; this.oBox.style.top = oEvent.clientY - this.disY + ’px’;}//鼠標抬起Drag.prototype.fnUp = function(){ document.onmousemove = null; document.onmouseup = null;}

drag.html

<!DOCTYPE html><html> <head> <meta charset='UTF-8'> <style> div {position: absolute; } </style> <title>拖拽</title> <script type='text/javascript' src='http://www.b3g6.com/js/drag.js' ></script> <script> window.onload = function(){var drag1 = new Drag('box1');var drag1 = new Drag('box2'); }; </script> </head> <body> <div style='background: red;width: 200px;height: 200px;'></div> <div style='background: blue;width: 100px;height: 100px;'></div></body></html>

JS面向對象編程實現的拖拽功能案例詳解JS面向對象編程實現的拖拽功能案例詳解

此拖拽有一個問題,就是沒有控制拖拽出邊界的問題。但我們又不想去修改代碼,那我們怎么做?學過java的應該都知道可以寫一個子類來做一些更加具體的操作,又保留了父類的功能,就是繼承。

html

<script type='text/javascript' src='http://www.b3g6.com/js/drag.js' ></script><script type='text/javascript' src='http://www.b3g6.com/js/dragLimit.js' ></script><script> window.onload = function(){ var drag1 = new Drag('box1'); var drag1 = new DragLimit('box2');//藍色是不會超出邊界的 };</script><body> <div style='background: red;width: 200px;height: 200px;'></div> <div style='background: blue;width: 100px;height: 300px;'></div></body>

DragLimit.js:DragLimit繼承自Drag,控制了不能出邊界

/** * 限制邊界的拖拽,繼承自Drag * @param {Object} id */function DragLimit(id){ Drag.call(this, id);}//繼承方法for(var p in Drag.prototype){ DragLimit.prototype[p] = Drag.prototype[p];}/** * 覆寫父類的鼠標移動方法,控制不能移出邊界 */DragLimit.prototype.fnMove = function(ev){ var oEvent= ev || event; var left = oEvent.clientX - this.disX; var top = oEvent.clientY - this.disY; //控制邊界 if(left < 0){ left = 0; } else if(left > document.documentElement.clientWidth-this.oBox.offsetWidth){ left = document.documentElement.clientWidth-this.oBox.offsetWidth; } if(top <= 0){ top = 0; } else if(top > document.documentElement.clientHeight-this.oBox.offsetHeight){ top = document.documentElement.clientHeight-this.oBox.offsetHeight; } this.oBox.style.left = left + ’px’; this.oBox.style.top = top + ’px’;}

感興趣的朋友可以使用在線HTML/CSS/JavaScript代碼運行工具:http://tools.jb51.net/code/HtmlJsRun測試上述代碼運行效果。

更多關于JavaScript相關內容感興趣的讀者可查看本站專題:《javascript面向對象入門教程》、《JavaScript錯誤與調試技巧總結》、《JavaScript數據結構與算法技巧總結》、《JavaScript遍歷算法與技巧總結》及《JavaScript數學運算用法總結》

希望本文所述對大家JavaScript程序設計有所幫助。

標簽: JavaScript
相關文章:
日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区
久久精品国产99国产| 免费人成精品欧美精品| 国产伦精品一区二区三区在线播放| 婷婷综合国产| 国产日产一区| 狂野欧美性猛交xxxx| 麻豆一区二区三| 欧美精品影院| 免费一级欧美在线观看视频 | 久久久久久久久丰满| 播放一区二区| 欧美日韩中文字幕一区二区三区| 五月天久久777| 免费视频最近日韩| 欧美一级一区| 老色鬼精品视频在线观看播放| а√天堂8资源中文在线| 波多视频一区| 红桃视频国产精品| 蜜臀精品一区二区三区在线观看| 婷婷精品在线| 精品视频国内| 99久久久久国产精品| 美女91精品| 国产探花一区| 亚洲深夜视频| 一区在线免费观看| 欧美日韩精品一区二区三区在线观看| 国产欧美一区二区精品久久久 | 久久午夜视频| 91成人福利| 国产一区福利| 欧美亚洲精品在线| 亚洲伊人影院| 国产福利一区二区精品秒拍| 美女av在线免费看| 免费国产自线拍一欧美视频| 久久国内精品| 99精品小视频| 日韩av一区二区三区| 91日韩免费| 蜜臀久久99精品久久久久久9| 麻豆中文一区二区| 久久精品导航| 日韩精品一区二区三区免费视频| 国产专区精品| 久久99伊人| 福利一区二区免费视频| 国产农村妇女精品一二区| 国产精久久久| 欧美精品黄色| 久久精品亚洲一区二区| 91精品成人| 国产欧美日韩在线一区二区| 久久国产亚洲| 欧美在线91| 激情欧美一区| 美女视频黄 久久| 激情五月色综合国产精品| 日韩黄色在线观看| 欧美日中文字幕| 国产精品极品国产中出| 亚洲国产一区二区三区在线播放| 你懂的国产精品永久在线| 国产日韩欧美中文在线| 亚洲人成在线网站| 色综合www| 国产日韩欧美三级| 蜜桃国内精品久久久久软件9| 日本午夜精品一区二区三区电影 | 好吊视频一区二区三区四区| 国产一区二区三区四区大秀| 性欧美精品高清| 亚洲综合电影| 国产日产一区| 日本欧美在线看| 色天使综合视频| 国产精品伦一区二区| 亚洲一区激情| 亚洲成人av观看| 免费日韩成人| 欧美日本二区| 免费成人在线观看| 免费精品国产的网站免费观看| 久久一区精品| 日韩精品五月天| 青青久久av| 精品一区视频| 欧美国产不卡| 亚洲精品观看| 国产亚洲精品自拍| 99久久久久国产精品| 久久亚洲道色| 国产伦一区二区三区| 亚洲欧洲国产精品一区| 美女毛片一区二区三区四区| 亚洲精品成人图区| 国内不卡的一区二区三区中文字幕| 欧美日韩亚洲一区在线观看| 亚洲欧洲日韩精品在线| 黄色亚洲免费| 欧美成人国产| 视频在线不卡免费观看| 欧美黑人做爰爽爽爽| 日韩欧美中文字幕电影| 美女视频黄免费的久久| 欧美精品国产一区| 日本精品国产| 日韩激情网站| 亚洲97av| 亚洲一区二区三区中文字幕在线观看| 欧美精品一区二区久久| 99久久久久国产精品| 久久久一本精品| 久久尤物视频| 久久免费影院| 精品视频在线观看网站| 国产精品中文| 国产精品久久久免费| 国产精品一级| 国产欧美日韩精品一区二区免费 | 久久网站免费观看| 91亚洲国产高清| 国产精品久久观看| 岛国精品一区| 国产精品高颜值在线观看| 国产精品夜夜夜| 国产精品4hu.www| 美日韩一区二区三区| 精品国产亚洲日本| 亚洲天堂一区二区| 久久国产日韩| 欧美精品一卡| 免费视频一区二区| 日本少妇精品亚洲第一区| 久久国产三级| 精品亚洲成人| 丝袜av一区| 91精品观看| 亚洲精品激情| 麻豆精品蜜桃视频网站| 国产欧美日韩一级| 久久久久久网| 欧美日韩免费观看一区=区三区| 婷婷精品进入| 亚洲精品高潮| 久久只有精品| 999久久久精品国产| 日本色综合中文字幕| 欧美国产精品| 亚洲天堂av影院| 亚洲精品123区| 日本不卡视频在线| 久久精品色播| 欧美日韩尤物久久| 蜜臀精品一区二区三区在线观看| 最新国产精品久久久| 日韩福利视频网| 久久女人天堂| 精品一区欧美| 亚洲毛片视频| 国产成人精品一区二区三区免费| 欧美二区视频| 欧美一区二区三区久久| 国产福利电影在线播放| 红桃视频国产一区| 国产情侣一区在线| 久久激情中文| 日韩精品91亚洲二区在线观看| 国产一区二区三区四区| 激情六月综合| 日韩三级一区| 色一区二区三区| 亚洲欧美日韩在线观看a三区| 中文字幕在线高清| 亚洲色图网站| 电影91久久久| 蜜桃久久精品一区二区| 精品伊人久久久| 蜜臀久久99精品久久久画质超高清 | 日韩国产一区| 免费黄网站欧美| 91视频一区| 亚洲精品影视| 精品欧美视频| 天堂成人国产精品一区| 精品国产黄a∨片高清在线| 制服诱惑一区二区| 欧美.日韩.国产.一区.二区| 国产乱人伦精品一区| 日韩午夜电影| 91欧美在线| 国产视频网站一区二区三区| 国产一区日韩一区| 国产极品模特精品一二| 亚洲高清久久| 国产一区二区三区四区五区传媒| 人人精品人人爱| 99免费精品| 国产精品一区二区三区www|