日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > java >内容正文

java

Javascript实现最简跨平台面向对象拖拽

發布時間:2025/3/15 java 39 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Javascript实现最简跨平台面向对象拖拽 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

?

一、開篇

拖拽已經是個Javascript的老話題了,但是也是最經典的問題之一。在這里,我用面向對象的方法實現了簡單的拖拽,這是做復雜js效果的基礎。

二、原理

拖拽的原理很簡單,就是捕獲鼠標事件,作出應有的相應。

需要處理的鼠標事件有三個:mousedown mousemove mouseup,下面分別介紹在各個事件需要處理一些什么事情。

1、?mousedown

(1)?????? 將鼠標所點擊的對象position設置為absolute,這樣才可以通過設置topleft的值讓元素動起來;

(2)?????? 獲得鼠標點擊的這個時刻鼠標與拖動對象邊界的坐標差(offsetXoffsetY),以便在拖動的時候來確定拖動對象的位置。


(3)?????? 注冊documentmousemove事件

2、?mousemove

(1)?????? 通過offsetXoffsetY以及鼠標的即時位置來確定被拖動對象的即時位置。

3、?mouseup

(1)?????? 刪除document注冊的mousemove事件

三、實現

主要的代碼如下:

?

function?Drag(oHandle,oContainer){
????
if(typeof?Drag.zIndex?==?"undefined")
????????Drag.zIndex?
=?1000;
????
var?handle?=?oHandle;
????
var?container?=?oContainer;
????
var?offsetX?=?0;
????
var?offsetY?=?0;
????
var?isDragging?=?false;
????

???? var?mouseDown?=?function(){
????????oEvent?
=?oEventUtil.getEvent();
????????Drag.zIndex
++;
????????container.style.zIndex?
=?Drag.zIndex;
????????
if(oEvent.button?==?1?||?oEvent.button?==?0){
????????????container.style.position?
=?'absolute';
????????????offsetX?
=??oEvent.pageX?-?container.offsetLeft;
????????????offsetY?
=?oEvent.pageY?-?container.offsetTop;
????????????
if(handle.innerHTML?==?""){
????????????????handle.innerHTML?
=?"?";
????????????};
????????????oEventUtil.addEventHandler(document,
"mousemove",mouseMove);
????????????isDragging?
=?true;
????????}
????};
????

??? var?mouseMove?=?function(){
????????oEvent?
=?oEventUtil.getEvent();
????????
if(isDragging){
????????????container.style.top?
=?(oEvent.pageY?-?offsetY)?+?'px';
????????????container.style.left?
=?(oEvent.pageX?-?offsetX)?+?'px';
????????}
????};

????
var?mouseUp?=?function(){
????????isDragging?
=?false;
????????oEventUtil.removeEventHandler(document,
"mousemove",mouseMove);
????};
????
????oEventUtil.addEventHandler(handle,
"mousedown",mouseDown);
????oEventUtil.addEventHandler(handle,
"mouseup",mouseUp);
}

?

考慮到很多拖拽都是移動拖動條整個外框也要一起移動,在實例化這個類的時候就傳遞兩個參數,一個是拖動條的對象,一個是外框對象。

如果要使用很簡單,代碼如下:

window.onload?=?function(){
????
var?drag1?=?new?Drag(document.getElementById("header"),document.getElementById("container"));
????
var?drag?=?new?Drag(document.getElementById("Div2"),document.getElementById("Div1"));
}

?


四、注意幾點

1、這里使用了對事件進行過封裝的oEventUtil,這樣使得拖拽的結構看起來更清晰。oEventUtil的具體代碼可以參看我以前寫的一篇博客,也可以直接下載本頁的實例。

2、鼠標的三個事件所注冊的對象是不一樣的,mousedownmouseup都要注冊到拖動條這個對象上,而mousemove必須注冊到document上,這樣拖拽才能正常工作。因為如果把mousemove注冊到拖動條上的話,鼠標移動過快就會移出拖動條,立刻就失去了mousemove的響應,而注冊到document上就不會出現這個問題,因為鼠標一直都在document上移動,一直都會相應。

五、實例下載

?點此下載示例?

轉載于:https://www.cnblogs.com/LongWay/archive/2008/09/03/1282492.html

總結

以上是生活随笔為你收集整理的Javascript实现最简跨平台面向对象拖拽的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 欧美一区视频在线 | 亚洲a级精品 | 蜜桃麻豆视频 | 亚洲日本在线观看 | 97caoporn| 久久久久爱 | 欧美熟妇另类久久久久久不卡 | 欧美精品一区二区三区四区 | 黄色一级影片 | 亚洲综合色av | 欧美日本韩国 | 麻豆av免费在线观看 | 黄色a级免费 | 亚洲AV无码精品色 | 成人免费高清在线观看 | 全部孕妇毛片丰满孕妇孕交 | 私人午夜影院 | 色婷婷激情 | a三级黄色片 | 国产又黄又粗 | 激情av中文字幕 | 18男女无套免费视频 | julia一区| 大肉大捧一进一出好爽 | 久久久久久久久久久久久国产 | 成人免费a级片 | 经典av在线 | av超碰在线观看 | 国产午夜免费 | 极品色av影院 | 禁漫天堂黄漫画无遮挡观看 | 天天5g天天爽免费观看 | 欧美性猛交xxxx乱大交俱乐部 | 亚洲成人自拍视频 | 激情小视频在线观看 | 丰满少妇乱子伦精品看片 | 69堂在线观看 | 欧美一区2区三区4区公司 | 四虎一国产精品一区二区影院 | 精品久久9999 | 国产精品美女在线观看 | 国产性生活网站 | 一区欧美 | av资源中文在线 | 欧美日韩六区 | www.日本精品 | 欧美va在线观看 | 中文字幕免费在线 | 男人插入女人下面视频 | 国产精品无码内射 | 国产人成精品 | www 在线观看视频 | 成a人片亚洲日本久久 | 亚洲风情亚aⅴ在线发布 | 中文字幕精品视频在线观看 | 久久精品无码一区二区三区 | 国内精品小视频 | 久久中文字幕无码 | 免费一级片 | 六月丁香激情综合 | 国产女教师bbwbbwbbw | 国产一区二区三区四区在线观看 | 欧美高清精品一区二区 | 人妖性做爰aaaa | 亚洲精品高清无码视频 | 久久激情片 | 激情欧美一区二区三区精品 | 一本色道久久综合无码人妻 | 加勒比精品在线 | 国产精品久久久久久久久久小说 | 夜夜操网址 | 日本精品久久久久久久 | 91插插插插插插插插 | 婷婷五月综合久久中文字幕 | 国产精品久久精品三级 | 偷拍亚洲视频 | 亚洲无av | 无码国产精品一区二区高潮 | 影音先锋中文字幕人妻 | 国产精品人妖 | 国产成人a∨ | 美女亚洲一区 | www.555国产精品免费 | 国产主播av在线 | 国产亚洲精品久久久久久青梅 | 国产精品久久久久久久久晋中 | 国模人体私拍xvideos | 毛片无码一区二区三区a片视频 | 亚洲成人另类 | 91精品国产乱码久久久 | 美女88av | 国产精品一卡二卡三卡 | 中文字幕码精品视频网站 | 男女激情在线观看 | 99在线精品免费视频 | 国产熟妇久久777777 | 亚洲免费视频网站 | 解开乳罩喂领导吃奶 | 欧洲性开放大片 |