Home >Web Front-end >JS Tutorial >A cool js class for dragging layers, compatible with IE and Firefox_javascript skills

A cool js class for dragging layers, compatible with IE and Firefox_javascript skills

WBOY
WBOYOriginal
2016-05-16 18:51:031091browse

I optimized and modified a JS drag class on the Internet, and added a translucent special effect when dragging. http://www.jb51.net/article/16122.htm
Note, please check the Cminfo class in this category:
http:/ /www.jb51.net/article/18760.htm

Copy code The code is as follows:

//************************************Move layer function starts**** ******************************************
//Generating a drag layer is very simple, Just need (if one of the parameters is an array, it means partial drag, arr[0] means drag layer, arr[1] means overall)
//new divDrag(['test'], [getObject('test31' ),getObject('test3')], getObject('test1') ,getObject('test2') ,[getObject('test41'),getObject('test4')]);
//Remember to drag Attribute layer position:absolute;
Array.prototype.extend = function(C){for(var B=0,A=C.length;Bfunction 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"); if( gCn.currentStyle)
                                                                                                  🎜>                                                                                = (e.pageX||(e.clientX document.documentElement.scrollLeft))-parseInt(_left); (_top);
if(!!A)
if(document.removeEventListener)
("mousemove",A,false);
document .removeEventListener("mouseup",B,false);
document.detachEvent("onmouseup",B ); 🎜> {
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        {
            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);
}
//*********************************移动层 函数 结束*******************************************
Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn