[转]Jquery作者John Resig自己封装的常用函数

//获取元素的样式值。   
 
function getStyle(elem,name){   
 
    if(elem.style[name]){   
 
        return elem.style[name];   
 
    }   
 
    else if(elem.currentStyle){   
 
        return elem.currentStyle[name];   
 
    }   
 
    else if(document.defaultView&&document.defaultView.getComputedStyle){   
 
        name=name.replace(/([A-Z])/g,"-$1");   
 
        name=name.toLowerCase();   
 
        var s=document.defaultView.getComputedStyle(elem,"");   
 
        return s&&s.getPropertyValue(name);   
 
    }   
 
    else{   
 
        return null  
 
    }   
 
}   
 
       
 
//获取元素相对于这个页面的x和y坐标。       
 
function pageX(elem){   
 
    return elem.offsetParent?(elem.offsetLeft+pageX(elem.offsetParent)):elem.offsetLeft;   
 
}   
 
function pageY(elem){   
 
    return elem.offsetParent?(elem.offsetTop+pageY(elem.offsetParent)):elem.offsetTop;   
 
}   
 
    
 
//获取元素相对于父元素的x和y坐标。           
 
function parentX(elem){   
 
    return elem.parentNode==elem.offsetParent?elem.offsetLeft:pageX(elem)-pageX(elem.parentNode);   
 
}   
 
function parentY(elem){   
 
    return elem.parentNode==elem.offsetParent?elem.offsetTop:pageY(elem)-pageY(elem.parentNode);   
 
}   
 
       
 
//获取使用css定位的元素的x和y坐标。   
 
function posX(elem){   
 
    return parseInt(getStyle(elem,"left"));   
 
}       
 
function posY(elem){   
 
    return parseInt(getStyle(elem,"top"));   
 
}   
 
       
 
//设置元素位置。       
 
function setX(elem,pos){   
 
    elem.style.left=pos+"px";   
 
}       
 
function setY(elem,pos){   
 
    elem.style.top=pos+"px";   
 
}   
 
       
 
//增加元素X和y坐标。       
 
function addX(elem,pos){   
 
    set(elem,(posX(elem)+pos));   
 
}   
 
function addY(elem,pos){   
 
    set(elem,(posY(elem)+pos));   
 
}   
 
       
 
//获取元素使用css控制大小的高度和宽度       
 
function getHeight(elem){   
 
    return parseInt(getStyle(elem,"height"));   
 
}   
 
function getWidth(elem){   
 
    return parseInt(getStyle(elem,"width"));   
 
}   
 
       
 
//获取元素可能,完整的高度和宽度   
 
function getFullHeight(elem){   
 
    if(getStyle(elem,"display")!="none"){   
 
        return getHeight(elem)||elem.offsetHeight;   
 
    }   
 
    else{   
 
        var old=resetCss(elem,{display:"block",visibility:"hidden",position:"absolute"});   
 
        var h=elem.clientHeight||getHeight(elem);   
 
        restoreCss(elem,old);   
 
        return h;   
 
    }   
 
}   
 
function getFullWidth(elem){   
 
    if(getStyle(elem,"display")!="none"){   
 
        return getWidth(elem)||elem.offsetWidth;   
 
    }   
 
    else{   
 
        var old=resetCss(elem,{display:"block",visibility:"hidden",position:"absolute"});   
 
        var w=elem.clientWidth||getWidth(elem);   
 
        restoreCss(elem,old);   
 
        return w;   
 
    }   
 
}   
 
       
 
//设置css,并保存旧的css   
 
function resetCss(elem,prop){   
 
    var old={};   
 
    for(var i in prop){   
 
        old[i]=elem.style[i];   
 
        elem.style[i]=prop[i];   
 
    }   
 
    return old;   
 
}   
 
function restoreCss(elem,prop){   
 
    for(var i in prop){   
 
        elem.style[i]=prop[i];   
 
    }   
 
}   
 
       
 
//显示和隐藏   
 
function show(elem){   
 
    elem.style.display=elem.$oldDisplay||" ";   
 
}   
 
function hide(elem){   
 
    var curDisplay=getStyle(elem,"display");   
 
    if(curDisplay!="none"){   
 
             elem.$oldDisplay=curDisplay;   
 
        elem.style.display="none";   
 
    }   
 
}   
 
       
 
//设置透明度       
 
function setOpacity(elem,num){   
 
    if(elem.filters){   
 
        elem.style.filter="alpha(opacity="+num+")";   
 
    }   
 
    else{   
 
            elem.style.opacity=num/100;   
 
    }   
 
}   
 
       
 
//滑动       
 
function slideDown(elem){   
 
    var h=getFullHeight(elem);   
 
    elem.style.height="0px";   
 
    show(elem);   
 
    for(var i=0;i<=100;i+=5){   
 
        new function(){   
 
                  var pos=i;   
 
                  setTimeout(function(){elem.style.height=(pos/100*h)+"px";},(pos*10));   
 
        }   
 
    }   
 
}   
 
       
 
//渐变   
 
function fadeIn(elem){       
 
         show(elem);   
 
         setOpacity(elem,0);   
 
    for(var i=0;i<=100;i+=5){   
 
        new function(){   
 
                  var pos=i;   
 
                  setTimeout(function(){setOpacity(elem,pos);},(pos+1)*10);   
 
        }   
 
    }   
 
}   
 
       
 
//获取鼠标光标相对于整个页面的位置。       
 
function getX(e){   
 
    e=e||window.event;   
 
    return e.pageX||e.clientX+document.body.scrollLeft;   
 
}   
 
function getY(e){   
 
    e=e||window.event;   
 
    return e.pageY||e.clientY+document.body.scrollTop;   
 
}   
 
       
 
//获取鼠标光标相对于当前元素的位置。   
 
function getElementX(e){   
 
    return (e&&e.layerX)||window.event.offsetX;   
 
}   
 
function getElementY(e){   
 
    return (e&&e.layerY)||window.event.offsetY;   
 
}   
 
       
 
//获取页面的高度和宽度   
 
function getPageHeight(){   
 
    var de=document.documentElement;   
 
    return document.body.scrollHeight||(de&&de.scrollHeight);   
 
    }   
 
function getPageWidth(){   
 
    var de=document.documentElement;   
 
    return document.body.scrollWidth||(de&&de.scrollWidth);   
 
}   
 
    
 
//获取滚动条的位置。   
 
function scrollX(){   
 
    var de=document.documentElement;   
 
    return self.pageXOffset||(de&&de.scrollLeft)||document.body.scrollLeft;   
 
}   
 
function scrollY(){   
 
    var de=document.documentElement;   
 
    return self.pageYOffset||(de&&de.scrollTop)||document.body.scrollTop;   
 
}   
 
       
 
//获取视口的高度和宽度。       
 
function windowHeight() {   
 
    var de = document.documentElement;   
 
    return self.innerHeight||(de && de.offsetHeight)||document.body.offsetHeight;   
 
}   
 
    
 
function windowWidth() {   
 
    var de = document.documentElement;   
 
    return self.innerWidth||( de && de.offsetWidth )||document.body.offsetWidth;   
 
}  

posted @ 2011-11-08 10:51  琥珀光  阅读(165)  评论(0编辑  收藏  举报