/** 
 | 
 * Created by maggie on 16/9/23. 
 | 
 */ 
 | 
  
 | 
//访问js下浏览器窗口的盒子模型属性 
 | 
  
 | 
//这个方法有两种用法 
 | 
//1.只传一个参数attr 则就是访问这个参数对应的属性值 
 | 
//2.传2个参数,就是要修改attr属性值(不管你想修改哪个属性, 
 | 
// 其实只能修改scrollTop和scrollLeft的值) 
 | 
  
 | 
function win(attr,value) { 
 | 
    if(typeof value==="undefined") 
 | 
    { 
 | 
        //只有一个attr值,没有Value值意味着是要获得属性的值 
 | 
  
 | 
       var v= document.documentElement[attr]|| document.body[attr]; 
 | 
  
 | 
       return v; 
 | 
    } 
 | 
    //设置 
 | 
    document.documentElement[attr]=value; 
 | 
    document.body[attr]=value; 
 | 
  
 | 
} 
 | 
  
 | 
//获得页面中任何一个元素的顶部边框距离body的顶部边框的距离 
 | 
function offset(curElement) { 
 | 
    var  totalLeft=0;//最终保存这个元素距离body边界的长度 
 | 
    var  totalTop=0; 
 | 
    var  parent=curElement.offsetParent; 
 | 
  
 | 
    totalLeft+=curElement.offsetLeft; 
 | 
    totalTop+=curElement.offsetTop; 
 | 
    while(parent) 
 | 
    { 
 | 
         //首先累加父级参照物的边框 
 | 
        totalLeft+=parent.clientLeft; 
 | 
        totalTop+=parent.clientTop; 
 | 
  
 | 
        totalLeft+=parent.offsetLeft; 
 | 
        totalTop+=parent.offsetTop; 
 | 
        parent=parent.offsetParent; 
 | 
    } 
 | 
    return {left:totalLeft,top:totalTop}; 
 | 
} 
 | 
  
 | 
//获取某个元素的任意一个样式的值 
 | 
function  getCss(curEle,attr) { 
 | 
    var val=null,reg=null; 
 | 
    if(window.getComputedStyle) 
 | 
//    if("getComputedStyle" in window) 
 | 
//    if(typeof window.getComputedStyle ==="function") 
 | 
//    if(navigator.userAgent.indexOf("MS IE")===-1) 
 | 
    { 
 | 
        val=window.getComputedStyle(curEle,null)[attr]; 
 | 
    }else 
 | 
    { 
 | 
        if(attr==="opacity") 
 | 
        { 
 | 
            val=curEle.currentStyle["filter"]; 
 | 
           //progid:DXImageTransform.Microsoft.Alpha(Opacity=100)" 
 | 
            reg=/Alpha\(Opacity=(\d+(\.\d+)?)\)$/i; 
 | 
            val=reg.test(val)?reg.exec(val)[1]/100:1; 
 | 
            return val; 
 | 
        }else 
 | 
        { 
 | 
            val= curEle.currentStyle[attr]; 
 | 
        } 
 | 
    } 
 | 
    //使用正则表达式测试属性值是不是数字+单位的形式 
 | 
     reg=/^(-?\d+(\.\d+)?)(px|pt|em|rem)?$/i; 
 | 
     val=reg.test(val)?parseFloat(val):val; 
 | 
    return val; 
 | 
} 
 | 
  
 | 
function setCss(curEle,attr,value) { 
 | 
    if(attr==="float") 
 | 
    { 
 | 
        curEle.style.cssFloat=value; 
 | 
        curEle.style.styleFloat=value; 
 | 
        return; 
 | 
    } 
 | 
    if(attr==="opacity") 
 | 
    { 
 | 
        curEle["style"]["opacity"]=value; 
 | 
        curEle["style"]["filter"]="Alpha(opacity="+value*100+")"; 
 | 
        return; 
 | 
    } 
 | 
    //自动给数值的属性添加单位 
 | 
    // width height top bottom left right margin padding 
 | 
    //marginTop marginLeft  marginRight marginBottom 
 | 
    //paddingTop ...... 
 | 
    var reg=/^(width|height|top|bottom|left|right|((margin|padding)(Top|Left|Right|Bottom)?))$/; 
 | 
    if(reg.test(attr)) 
 | 
    { 
 | 
        if(!isNaN(value)) 
 | 
        { 
 | 
            value+="px"; 
 | 
        } 
 | 
    } 
 | 
    curEle["style"][attr]=value; 
 | 
  
 | 
} 
 | 
  
 | 
//一次设置多个属性的方法 
 | 
   //  setMultCss(box,  {width:400px,height:300px,backgroud:#c1c1c1}) 
 | 
function   setMultCss(curEle, attrObj) { 
 | 
  
 | 
    // attrObj =  attrObj|| 0; 
 | 
    // if(attrObj.toString()!=="[object Object]") 
 | 
    // { 
 | 
    //     return; 
 | 
    // } 
 | 
  
 | 
    for(var key in attrObj) 
 | 
    { 
 | 
          if(attrObj.hasOwnProperty(key)) 
 | 
          { 
 | 
              setCss(curEle,key,attrObj[key]); 
 | 
          } 
 | 
    } 
 | 
  
 | 
} 
 | 
  
 | 
//2个参数时,  curEle  attr 获取attr属性的值 
 | 
// 
 | 
//3个参数时   curEle attr  value 设置一个attr属性的值 
 | 
//           curEle  obj 设置多个属性的值 
 | 
  
 | 
function css(curEle) 
 | 
{ 
 | 
    var argTwo =   arguments[1]; 
 | 
    if(typeof argTwo ==="string") 
 | 
    { 
 | 
         //判断有没有第3个参数 
 | 
        var argThree=arguments[2]; 
 | 
        if(typeof argThree==="undefined") 
 | 
        { 
 | 
            //是获取css属性 
 | 
            return getCss(curEle,argTwo); 
 | 
        } 
 | 
        //有第3个参数 那么就是调用setCss 
 | 
        setCss(curEle,argTwo,argThree); 
 | 
        return; 
 | 
    } 
 | 
    //是2个参数 并且第2个参数是obj类型  所以应该是设置多个css属性 
 | 
    argTwo =  argTwo|| 0; 
 | 
    if(argTwo.toString()!=="[object Object]") 
 | 
    { 
 | 
        return; 
 | 
    } 
 | 
    setMultCss(curEle,argTwo); 
 | 
} 
 |