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

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

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

瀏覽:236日期: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://m.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://m.b3g6.com/js/drag.js' ></script><script type='text/javascript' src='http://m.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久久,三上悠亚国产精品一区二区三区
男人操女人的视频在线观看欧美| 欧美亚洲福利| 97精品97| 1024精品一区二区三区| 国产精品普通话对白| 国产模特精品视频久久久久| 日韩在线成人| 国产成人精品福利| 亚洲电影在线| 日韩精品视频一区二区三区| 成人在线视频区| 欧美专区一区二区三区| 国产欧美三级| 久久蜜桃av| 色8久久久久| 色婷婷色综合| 久久午夜精品| 国产一区二区三区日韩精品| 国产精品毛片在线看| 麻豆国产欧美日韩综合精品二区| 国产第一亚洲| 久久福利毛片| 国产夫妻在线| 亚洲精品乱码久久久久久蜜桃麻豆 | 99久久精品网站| 中文在线日韩| 国产美女高潮在线| 亚洲精品少妇| 五月激情久久| 国产视频一区二| 亚洲91视频| 日韩精品成人在线观看| 日韩毛片视频| 日本强好片久久久久久aaa| 日韩久久电影| 欧美在线精品一区| 美女毛片一区二区三区四区| 国产精品xvideos88| 99综合视频| 天堂√中文最新版在线| 日韩av一区二| 99在线精品免费视频九九视| av中文资源在线资源免费观看| 在线看片日韩| 久久精品一区二区不卡| 国产精品高清一区二区| 影音先锋国产精品| 超级白嫩亚洲国产第一| 欧美亚洲国产日韩| 老司机精品久久| av亚洲一区二区三区| 国产精品地址| 亚洲18在线| 国产亚洲欧洲| 久久久久国产| 高清日韩中文字幕| 7777精品| 免费在线观看一区二区三区| 日韩精品欧美| 久久久久久久久成人| 日本不卡视频在线观看| 欧美va亚洲va日韩∨a综合色| 欧美国产日韩电影| 蜜臀91精品一区二区三区| 久久久人人人| 97精品一区| 精品日本视频| 国产精品欧美在线观看| 美女久久网站| 欧美大黑bbbbbbbbb在线| 日韩欧美1区| 成人在线视频免费| 久久精品伊人| 麻豆精品蜜桃视频网站| 国产欧美一区二区色老头| 亚洲精品观看| 亚洲一区二区三区高清| 久久激情网站| 日韩啪啪电影网| 欧美激情国产在线| 精品欧美视频| 国产成人精品一区二区三区免费 | 国产精品一区三区在线观看| 亚洲精品成人一区| 亚洲乱码久久| 亚洲精品女人| 亚洲香蕉久久| 亚洲三级网址| 日韩激情av在线| 日韩中文字幕无砖| 四虎精品永久免费| 日韩午夜视频在线| 青青草精品视频| 欧美日本久久| 国产亚洲电影| 国产精品v一区二区三区| 麻豆91精品视频| 精品不卡一区| 97在线精品| 久久国产主播| 国产综合欧美| 欧美日韩三区| 天堂av在线一区| 亚洲三级国产| 欧美日韩中文| 欧美aaaaaa午夜精品| 狠狠久久伊人| 国产资源在线观看入口av| 伊人网在线播放| 99久久久久国产精品| 亚洲精品1区| 日本一区福利在线| 美女国产一区二区三区| av免费不卡国产观看| 欧美亚洲国产激情| 日韩一区二区免费看| 天堂成人免费av电影一区| 香蕉久久一区| 精品一区二区三区四区五区| 日韩精品91| 久久成人国产| 国产麻豆一区二区三区精品视频| 美女av一区| 视频小说一区二区| 亚洲在线电影| 欧美一级二级视频| 成人午夜毛片| 国产亚洲亚洲| 日本99精品| 精品亚洲a∨| 99精品小视频| 亚洲视频二区| 麻豆91精品视频| 自由日本语亚洲人高潮| 日韩在线视频一区二区三区| 麻豆传媒一区二区三区| 激情五月综合| 日韩美女国产精品| 久久久久久自在自线| 美女精品网站| 欧美国产精品| 狠狠操综合网| 国产精品入口久久| 日韩不卡视频在线观看| 久久午夜视频| 久久亚洲人体| 免费成人网www| 91欧美极品| 久久三级视频| 91精品国产自产观看在线 | 国产探花在线精品一区二区| 国产精品久久久久久久久妇女| 婷婷亚洲五月| 久久a爱视频| 一区免费在线| 欧美精品aa| 国产精品普通话对白| 国产欧美午夜| 精品一区三区| 精品中文字幕一区二区三区| 亚洲欧美日韩综合国产aⅴ| 乱一区二区av| 免费观看在线综合色| 国产一区福利| 亚洲v天堂v手机在线| а√在线中文在线新版| 在线一区二区三区视频| 吉吉日韩欧美| 亚州精品视频| 欧美日韩一区二区综合| 国产欧美日韩精品高清二区综合区 | 亚洲成人精选| 捆绑调教美女网站视频一区| 日韩精品一二三| 亚洲精品成人图区| 日韩精品视频网| 亚洲成人精选| 日本一区二区高清不卡| 日韩精品乱码av一区二区| av一区二区高清| 色一区二区三区四区| 青青草91视频| 久久先锋影音| 婷婷激情一区| 国产精品天堂蜜av在线播放| 免费黄网站欧美| 欧美a级片一区| 国产精品久久久久久久久妇女| 日韩一区精品| 亚洲免费一区二区| 亚洲日本网址| 久久精品国产在热久久| 日本久久一区| 久久高清免费观看| 欧美搞黄网站| 中文另类视频| 波多野结衣久久精品| 国产精品二区影院| 日本不卡视频在线| 亚洲专区在线|