一個很酷的拖動層的js類,兼容IE及Firefox
更新時間:2009年06月23日 12:50:53 作者:
自己優(yōu)化修改了網(wǎng)上的一個JS拖動類,增加了拖動時顯示半透明的特效。
自己優(yōu)化修改了網(wǎng)上的一個JS拖動類,增加了拖動時顯示半透明的特效。 http://www.dbjr.com.cn/article/16122.htm
注意,本文類中的Cminfo類請 查看:
http://www.dbjr.com.cn/article/18760.htm
復(fù)制代碼 代碼如下:
//*********************************移動層 函數(shù) 開始*******************************************
//生成拖動層很簡單,只需要(參數(shù)之一如果是數(shù)組表示局部拖動,arr[0]表示拖動層,arr[1]表示整體)
//new divDrag(['test'], [getObject('test31'),getObject('test3')], getObject('test1') ,getObject('test2') ,[getObject('test41'),getObject('test4')]);
//記得有拖動屬性的層position:absolute;
Array.prototype.extend = function(C){for(var B=0,A=C.length;B<A;B++){this.push(C[B]);}return this;}
function divDrag()
{
var A,B,gCn;
var zIndex = 1;
this.dragStart = function(e)
{
e = e||window.event;
if((e.which && (e.which!=1))||(e.button && (e.button!=1))){return;}
var pos = this.gPos;
gCn = this.parent||this;
if(document.defaultView)
{
_top = document.defaultView.getComputedStyle(gCn,null).getPropertyValue("top");
_left = document.defaultView.getComputedStyle(gCn,null).getPropertyValue("left");
}
else
{
if(gCn.currentStyle)
{
_top = gCn.currentStyle["top"];
_left = gCn.currentStyle["left"];
}
}
pos.ox = (e.pageX||(e.clientX+document.documentElement.scrollLeft))-parseInt(_left);
pos.oy = (e.pageY||(e.clientY+document.documentElement.scrollTop))-parseInt(_top);
if(!!A)
{
if(document.removeEventListener)
{
document.removeEventListener("mousemove",A,false);
document.removeEventListener("mouseup",B,false);
}
else
{
document.detachEvent("onmousemove",A);
document.detachEvent("onmouseup",B);
}
}
A = this.dragMove.create(this);
B = this.dragEnd.create(this);
if(document.addEventListener)
{
document.addEventListener("mousemove",A,false);
document.addEventListener("mouseup",B,false);
}
else
{
document.attachEvent("onmousemove",A);
document.attachEvent("onmouseup",B);
}
gCn.style.zIndex = (++zIndex);
}
this.dragMove = function(e)
{
e = e||window.event;
var pos = this.gPos;
gCn = this.parent||this;
gCn.style.top = (e.pageY||(e.clientY+document.documentElement.scrollTop))-parseInt(pos.oy)+'px';
gCn.style.left = (e.pageX||(e.clientX+document.documentElement.scrollLeft))-parseInt(pos.ox)+'px';
try{if(CMInfo.Bs_Name=='IE'){gCn.style.filter = "alpha(opacity=70)";}else{gCn.style.opacity = "0.7";}}catch(e){}
this.stop(e);
}
this.dragEnd = function(e)
{
var pos = this.gPos;
e = e||window.event;
if((e.which && (e.which!=1))||(e.button && (e.button!=1))){return};
gCn = this.parent||this;
if(!!(this.parent)){this.style.backgroundColor = pos.color;}
try{if(CMInfo.Bs_Name=='IE'){gCn.style.filter = "alpha(opacity=100)";}else{gCn.style.opacity = 1;}}catch(e){}
if(document.removeEventListener)
{
document.removeEventListener("mousemove",A,false);
document.removeEventListener("mouseup",B,false);
}
else
{
document.detachEvent("onmousemove",A);
document.detachEvent("onmouseup",B);
}
A = null;
B = null;
gCn.style.zIndex = (++zIndex);
this.stop(e);
}
this.shiftColor = function()
{
this.style.backgroundColor="#EEEEEE";
}
this.position = function (e)
{
var t=e.offsetTop;
var l=e.offsetLeft;
while(e=e.offsetParent)
{
t += e.offsetTop;
l += e.offsetLeft;
}
return {x:l,y:t,ox:0,oy:0,color:null}
}
this.stop = function(e)
{
if(e.stopPropagation){e.stopPropagation();}else{e.cancelBubble=true;}
if(e.preventDefault){e.preventDefault();}else{e.returnValue=false;}
}
this.create = function(bind)
{
var B = this;
var A = bind;
return function(e){return B.apply(A,[e]);}
}
this.dragStart.create = this.create;
this.dragMove.create = this.create;
this.dragEnd.create = this.create;
this.shiftColor.create = this.create;
this.initialize = function()
{
for(var A=0,B=arguments.length;A<B;A++)
{
C=arguments[A];
if(!(C.push)){C = [C];}
gC = (typeof(C[0])=='object')?C[0]:(typeof(C[0])=='string'?getObject(C[0]):null);
if(!gC){continue};
gC.gPos = this.position(gC);
gC.dragMove = this.dragMove;
gC.dragEnd = this.dragEnd;
gC.stop = this.stop;
if(!!C[1])
{
gC.parent = C[1];
gC.gPos.color = gC.style.backgroundColor;
}
if(gC.addEventListener)
{
gC.addEventListener("mousedown",this.dragStart.create(gC),false);
if(!!C[1]){gC.addEventListener("mousedown",this.shiftColor.create(gC),false); }
}
else
{
gC.attachEvent("onmousedown",this.dragStart.create(gC));
if(!!C[1]){gC.attachEvent("onmousedown",this.shiftColor.create(gC));}
}
}
}
this.initialize.apply(this,arguments);
}
//*********************************移動層 函數(shù) 結(jié)束*******************************************
您可能感興趣的文章:
- javascript html5 canvas實現(xiàn)可拖動省份的中國地圖
- js 鼠標(biāo)拖動對象 可讓任何div實現(xiàn)拖動效果
- js實現(xiàn)可拖動DIV的方法
- 比較精簡的Javascript拖動效果函數(shù)代碼
- javascript 事件處理、鼠標(biāo)拖動效果實現(xiàn)方法詳解
- JS高級拖動技術(shù) setCapture,releaseCapture
- js實現(xiàn)圖片拖動改變順序附圖
- html+javascript實現(xiàn)可拖動可提交的彈出層對話框效果
- javascript之可拖動的iframe效果代碼
- javascript html5輕松實現(xiàn)拖動功能
相關(guān)文章
JavaScript(js)設(shè)置默認輸入焦點(focus)
常常會在回復(fù)和引用里使用此功能,即單擊回復(fù)或引用,如讓輸入焦點出現(xiàn)在留言輸入框中,如果使用錨來定位,輸入焦點就不能激活了,需要了解的朋友可以參考下2012-12-12微信小程序使用slider設(shè)置數(shù)據(jù)值及switch開關(guān)組件功能【附源碼下載】
這篇文章主要介紹了微信小程序使用slider設(shè)置數(shù)據(jù)值及switch開關(guān)組件功能,結(jié)合實例形式分析了slider組件及switch組件的功能與使用方法,并附帶源碼供讀者下載參考,需要的朋友可以參考下2017-12-12JavaScript位置參數(shù)實現(xiàn)原理及過程解析
這篇文章主要介紹了JavaScript位置參數(shù)實現(xiàn)原理及過程解析,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下2020-09-09web開發(fā)js字符串拼接占位符及conlose對象Api詳解
本篇文章主要為大家介紹了web開發(fā)中字符串的拼接,占位符的使用以及conlose對象Api的使用,有需要的朋友可以借鑒參考下,希望可以有所幫助2021-09-09