一個(gè)很酷的拖動(dòng)層的js類,兼容IE及Firefox
自己優(yōu)化修改了網(wǎng)上的一個(gè)JS拖動(dòng)類,增加了拖動(dòng)時(shí)顯示半透明的特效。 http://www.fzitv.net/article/16122.htm
注意,本文類中的Cminfo類請 查看:
http://www.fzitv.net/article/18760.htm
//*********************************移動(dòng)層 函數(shù) 開始*******************************************
//生成拖動(dòng)層很簡單,只需要(參數(shù)之一如果是數(shù)組表示局部拖動(dòng),arr[0]表示拖動(dòng)層,arr[1]表示整體)
//new divDrag(['test'], [getObject('test31'),getObject('test3')], getObject('test1') ,getObject('test2') ,[getObject('test41'),getObject('test4')]);
//記得有拖動(dòng)屬性的層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);
}
//*********************************移動(dòng)層 函數(shù) 結(jié)束*******************************************
- javascript html5 canvas實(shí)現(xiàn)可拖動(dòng)省份的中國地圖
- js 鼠標(biāo)拖動(dòng)對象 可讓任何div實(shí)現(xiàn)拖動(dòng)效果
- js實(shí)現(xiàn)可拖動(dòng)DIV的方法
- 比較精簡的Javascript拖動(dòng)效果函數(shù)代碼
- javascript 事件處理、鼠標(biāo)拖動(dòng)效果實(shí)現(xiàn)方法詳解
- JS高級拖動(dòng)技術(shù) setCapture,releaseCapture
- js實(shí)現(xiàn)圖片拖動(dòng)改變順序附圖
- html+javascript實(shí)現(xiàn)可拖動(dòng)可提交的彈出層對話框效果
- javascript之可拖動(dòng)的iframe效果代碼
- javascript html5輕松實(shí)現(xiàn)拖動(dòng)功能
相關(guān)文章
js捕獲鼠標(biāo)右鍵菜單中的粘帖事件實(shí)現(xiàn)代碼
突發(fā)奇想比如點(diǎn)擊菜單中的粘帖后事件如何捕獲,如下圖所示,用的jQuery中的paste事件,如想獲得粘帖文本要使用setTimeout控制下時(shí)間,感興趣的朋友可以參考下2013-04-04
javaScript函數(shù)中執(zhí)行C#代碼中的函數(shù)方法總結(jié)
這篇文章介紹了javaScript函數(shù)中執(zhí)行C#代碼中的函數(shù)方法總結(jié),有需要的朋友可以參考一下2013-08-08
JS生成不重復(fù)的隨機(jī)數(shù)組的簡單實(shí)例
下面小編就為大家?guī)硪黄狫S生成不重復(fù)的隨機(jī)數(shù)組的簡單實(shí)例。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2016-07-07
javascript 通用loading動(dòng)畫效果實(shí)例代碼
這篇文章主要介紹了javascript 通用loading動(dòng)畫效果實(shí)例代碼,有需要的朋友可以參考一下2014-01-01
javascript用defineProperty實(shí)現(xiàn)簡單的雙向綁定方法
這篇文章主要介紹了javascript用defineProperty實(shí)現(xiàn)簡單的雙向綁定方法,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-04-04
JavaScript實(shí)現(xiàn)隨機(jī)產(chǎn)生字符串的方法分享
這篇文章主要為大家詳細(xì)介紹了JavaScript中實(shí)現(xiàn)隨機(jī)產(chǎn)生字符串的方法,文中的示例代碼簡潔易懂,對我們學(xué)習(xí)JavaScript有一定的幫助,需要的可以參考一下2022-11-11
微信小游戲之使用three.js 繪制一個(gè)旋轉(zhuǎn)的三角形
three.js是一個(gè)可以使用javascript繪制3d圖形的庫,它對WebGL的api進(jìn)行封裝,使開發(fā)更加方便,就像jQuery對DOM的api進(jìn)行封裝一樣。這篇文章主要介紹了微信小游戲之使用three.js 繪制一個(gè)旋轉(zhuǎn)的三角形,需要的朋友可以參考下2019-06-06

