最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

工作需要寫的一個(gè)js拖拽組件

 更新時(shí)間:2011年07月28日 08:02:32   作者:  
工作需要寫的一個(gè)js拖拽組件,需要的朋友可以參考下代碼。
復(fù)制代碼 代碼如下:

/*
*使用方法:
* var d = new Drag({id:'dragPannel',maxLeft:500,maxTop:200});
* d.ready();
*請(qǐng)注意:
* 拖動(dòng)對(duì)象的left和top樣式必須寫在其style屬性里邊
*
*/
//矯正調(diào)用者。將 fn 作為 newObj 的方法調(diào)用
function repairCaller(newObj, fn){
return function(){
return fn.apply(newObj, arguments);
}
}
function Drag( config ){
this.moveTarget = T.dom.get( config.id );
this.startLeft = parseInt(this.moveTarget.style.left); //每次拖動(dòng)開始時(shí)被拖動(dòng)對(duì)象的 left,top
this.startTop = parseInt(this.moveTarget.style.top);
this.startClientX = this.startLeft; //保存拖動(dòng)開始時(shí)事件的 clientX, clientY
this.startClientY = this.startTop;
this.MAX_LEFT = config.maxLeft||document.documentElement.clientWidth - this.moveTarget.offsetWidth; //元素可以移動(dòng)的最大范圍
this.MAX_TOP = config.maxTop||document.documentElement.clientHeight - this.moveTarget.offsetHeight;
this.lock = true;
}
Drag.prototype.ready = function(){
//綁定事件
T.bind(document, "mousedown", repairCaller(this,this.down));
T.bind(document, "mousemove", repairCaller(this,this.move));
T.bind(document, "mouseup", repairCaller(this,this.stop));
}
Drag.prototype.down = function(){
//取得事件對(duì)象
var event = T.event.getEvent(arguments[0]),
target = T.event.getTarget(event);
if (target == this.moveTarget){
this.lock = false;
//在事件開始時(shí)保存各種坐標(biāo)位置
this.startLeft = parseInt(this.moveTarget.style.left);
this.startTop = parseInt(this.moveTarget.style.top);
this.startClientX = event.clientX;
this.startClientY = event.clientY;
}
};
Drag.prototype.move = function(){
if(!this.lock ){
//取得事件對(duì)象
var event = T.event.getEvent(arguments[0]),
target = T.event.getTarget(event);
if(target == this.moveTarget){
//如有選擇內(nèi)容,清除之
//window.getSelection ? window.getSelection().removeAllRanges() : document.selection.empty();
//湊數(shù)拖動(dòng)范圍有沒超過最大限制
var realLeft = this.startLeft + event.clientX - this.startClientX, //實(shí)際的移動(dòng)范圍
realTop = this.startTop + event.clientY - this.startClientY,
rightLeft , rightTop; //正確的 left, top 取值
rightLeft = realLeft > this.MAX_LEFT ? this.MAX_LEFT : ( realLeft > 0 ? realLeft : 0 );
rightTop = realTop > this.MAX_TOP ? this.MAX_TOP : ( realTop > 0 ? realTop : 0 );
this.moveTarget.style.left = rightLeft + "px";
this.moveTarget.style.top = rightTop + "px";
}
else{
this.lock = true;
}
}
};
Drag.prototype.stop = function(){
this.lock = true
};

后記:
在寫的過程中非常需要注意的幾點(diǎn)是:
1、拖動(dòng)層的 position、left 和 top 必須寫在 style 里
2、移動(dòng)過程中設(shè)置 left 和 top 要帶單位,否則不起作用
3、多級(jí) div 嵌套時(shí)需要給父 div 加 over-flow:hidden 樣式
完畢!

相關(guān)文章

  • 屏蔽網(wǎng)頁右鍵復(fù)制和ctrl+c復(fù)制的js代碼

    屏蔽網(wǎng)頁右鍵復(fù)制和ctrl+c復(fù)制的js代碼

    解決的方法就是直接把網(wǎng)頁保存下來然后刪掉下面這段js代碼,然后就可以正常用右鍵菜單,也可以通過設(shè)置瀏覽器的安全級(jí)別到最高級(jí)別來解決問題
    2013-01-01
  • TypeScript命名空間講解

    TypeScript命名空間講解

    這篇文章主要介紹了TypeScript命名空間,TypeScript 是 JavaScript 的一個(gè)超集,支持 ECMAScript 6 標(biāo)準(zhǔn)。由微軟開發(fā)的自由和開源的編程語言。設(shè)計(jì)目標(biāo)是開發(fā)大型應(yīng)用,它可以編譯成純 JavaScript,編譯出來的 JavaScript 可以運(yùn)行在任何瀏覽器上,下面來看詳細(xì)內(nèi)容吧

    2021-12-12
  • uniapp中uni.request(OBJECT)接口請(qǐng)求封裝實(shí)例代碼

    uniapp中uni.request(OBJECT)接口請(qǐng)求封裝實(shí)例代碼

    在開發(fā)的時(shí)候經(jīng)常會(huì)用到前端請(qǐng)求后端接口,每次的請(qǐng)求都會(huì)出現(xiàn)地址不一樣,參數(shù)不一樣,方式不一樣等等情況,下面這篇文章主要給大家介紹了關(guān)于uniapp中uni.request(OBJECT)接口請(qǐng)求封裝的相關(guān)資料,需要的朋友可以參考下
    2022-12-12
  • JavaScript正則獲取地址欄中參數(shù)的方法

    JavaScript正則獲取地址欄中參數(shù)的方法

    這篇文章主要介紹了JavaScript正則獲取地址欄中參數(shù)的方法,涉及javascript基于正則的字符串截取操作相關(guān)實(shí)現(xiàn)技巧,需要的朋友可以參考下
    2017-03-03
  • js中base64與file之間的轉(zhuǎn)換方法

    js中base64與file之間的轉(zhuǎn)換方法

    這篇文章主要給大家介紹了關(guān)于js中base64與file之間的轉(zhuǎn)換方法,最近項(xiàng)目中需要實(shí)現(xiàn)把圖片的base64編碼轉(zhuǎn)成file文件的功能,然后再上傳至服務(wù)器,需要的朋友可以參考下
    2023-09-09
  • 監(jiān)控用戶是否關(guān)閉瀏覽器的js代碼

    監(jiān)控用戶是否關(guān)閉瀏覽器的js代碼

    BS系統(tǒng)一個(gè)非常煩人的地方是不知道用戶什么時(shí)候關(guān)閉瀏覽器離開系統(tǒng).這里,我們采用onbeforeunload參數(shù)監(jiān)控用戶是否關(guān)閉瀏覽器.
    2009-08-08
  • JavaScript實(shí)現(xiàn)繼承的7種方式總結(jié)

    JavaScript實(shí)現(xiàn)繼承的7種方式總結(jié)

    用官方點(diǎn)的話講繼承是面向?qū)ο笕筇卣髦?,可以使得子類具有父類的屬性和方法,同時(shí)還可以在子類中重新定義以及追加屬性和方法。本文整理了JavaScript實(shí)現(xiàn)繼承的7種方式,需要的可以了解一下
    2023-04-04
  • javascript attachEvent和addEventListener使用方法

    javascript attachEvent和addEventListener使用方法

    attachEvent與addEventListener區(qū)別 適應(yīng)的瀏覽器版本不同,同時(shí)在使用的過程中要注意
    2009-03-03
  • JavaScript生成二維數(shù)組的多種方法小結(jié)

    JavaScript生成二維數(shù)組的多種方法小結(jié)

    我經(jīng)常在面試中問候:你能用?JavaScript?生成一個(gè)二維數(shù)組嗎?這個(gè)問題看似簡(jiǎn)單,實(shí)際上卻能揭示出面試者對(duì)?JavaScript?的熟練程度,天,就讓我們一起來探索這個(gè)問題背后的答案,揭開生成二維數(shù)組的多種秘密,需要的朋友可以參考下
    2024-04-04
  • javascript制作坦克大戰(zhàn)全紀(jì)錄(2)

    javascript制作坦克大戰(zhàn)全紀(jì)錄(2)

    上文我們簡(jiǎn)單的完成了坦克大戰(zhàn)的雛形,本文我們來繼續(xù)完善坦克大戰(zhàn),接下來我們來學(xué)習(xí)制作地圖和碰撞檢測(cè)方面的問題。
    2014-11-11

最新評(píng)論

彩票| 梨树县| 项城市| 溧阳市| 雷波县| 铜鼓县| 贺兰县| 威远县| 大兴区| 彰化市| 洛南县| 都安| 华亭县| 怀仁县| 嘉义县| 八宿县| 咸丰县| 沙坪坝区| 新营市| 乐陵市| 潢川县| 横山县| 贵定县| 辰溪县| 阿尔山市| 峨眉山市| 上犹县| 仙游县| 沙田区| 乳山市| 屏东市| 柘荣县| 洛南县| 资溪县| 瑞安市| 喀什市| 隆昌县| 宝坻区| 成武县| 嘉峪关市| 荆门市|