国产成人精品久久免费动漫-国产成人精品天堂-国产成人精品区在线观看-国产成人精品日本-a级毛片无码免费真人-a级毛片毛片免费观看久潮喷

您的位置:首頁技術(shù)文章
文章詳情頁

JS面向?qū)ο缶幊虒崿F(xiàn)的拖拽功能案例詳解

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

本文實例講述了JS面向?qū)ο缶幊虒崿F(xiàn)的拖拽功能。分享給大家供大家參考,具體如下:

原始的面向過程代碼:

<!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; }; //鼠標(biāo)按下事件 function fnDown(ev){var oEvent = ev||event;disX = oEvent.clientX - oBox.offsetLeft;disY = oEvent.clientY - oBox.offsetTop;document.onmousemove = fnMove;document.onmouseup = fnUp; } //鼠標(biāo)移動事件 function fnMove(ev){var oEvent=ev||event;oBox.style.left = oEvent.clientX - disX + ’px’;oBox.style.top = oEvent.clientY - disY + ’px’; } //鼠標(biāo)抬起事件 function fnUp(){document.onmousemove = null;document.onmouseup = null; } </script> </head> <body> <div id='box'></div></body></html>

下面是面向?qū)ο蟮拇a

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(); }}//鼠標(biāo)按下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(); };}//鼠標(biāo)移動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’;}//鼠標(biāo)抬起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.cgvv.com.cn/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面向?qū)ο缶幊虒崿F(xiàn)的拖拽功能案例詳解JS面向?qū)ο缶幊虒崿F(xiàn)的拖拽功能案例詳解

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

html

<script type='text/javascript' src='http://www.cgvv.com.cn/js/drag.js' ></script><script type='text/javascript' src='http://www.cgvv.com.cn/js/dragLimit.js' ></script><script> window.onload = function(){ var drag1 = new Drag('box1'); var drag1 = new DragLimit('box2');//藍(lán)色是不會超出邊界的 };</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];}/** * 覆寫父類的鼠標(biāo)移動方法,控制不能移出邊界 */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測試上述代碼運行效果。

更多關(guān)于JavaScript相關(guān)內(nèi)容感興趣的讀者可查看本站專題:《javascript面向?qū)ο笕腴T教程》、《JavaScript錯誤與調(diào)試技巧總結(jié)》、《JavaScript數(shù)據(jù)結(jié)構(gòu)與算法技巧總結(jié)》、《JavaScript遍歷算法與技巧總結(jié)》及《JavaScript數(shù)學(xué)運算用法總結(jié)》

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

標(biāo)簽: JavaScript
相關(guān)文章:
主站蜘蛛池模板: 在线观看国产精品日本不卡网 | 高清亚洲 | 熟女毛片 | 久久在线综合 | 日韩国产欧美成人一区二区影院 | 中文字幕天堂久久精品 | 美国一级欧美三级 | 亚洲精品手机在线观看 | 亚洲va老文色欧美黄大片人人 | 99精品视频在线观看免费 | 亚洲欧美成人综合在线 | 日本www视频在线观看 | 欧美在线成人免费国产 | 成人看片免费 | 成人爽爽大片在线观看 | 免费一级毛片不卡在线播放 | 亚洲精品一区二区三区网址 | 96精品视频在线播放免费观看 | 欧美精品亚洲精品日韩专区 | 泰国情欲片寂寞的寡妇在线观看 | 免费看香港一级毛片 | 久久久久久久一线毛片 | 亚洲久草 | 婷婷色综合久久五月亚洲 | 精品国产免费第一区二区 | 91久久精品青青草原伊人 | 偷看各类wc女厕嘘在线观看 | 国产永久在线观看 | 成人在线免费观看网站 | 国产毛片久久久久久国产毛片 | 日韩在线视频不卡一区二区三区 | 手机看片1024精品国产 | 成人在线观看不卡 | 一级毛片视频免费 | 国产91啦| 欧美性极品hd高清视频 | 亚洲人成人毛片无遮挡 | 久久综合狠狠综合久久综合88 | 亚洲一级毛片视频 | 国产成人亚洲精品91专区高清 | 91香蕉成人免费网站 |