首页 > 代码库 > 获取样式

获取样式

1.获取最终样式

 <script>        //获取非行间样式(style标签里的样式或者link css文件里的样式),obj是元素,attr是样式名        function getStyle(obj,attr){             //针对IE             if(obj.currentStyle){                  return obj.currentStyle[attr];                             //由于函数传过来的attr是字符串,所以得用[]来取值             }else{                  //针对非IE                  return window.getComputedStyle(obj,false)[attr];             }        }        /*             获取或者设置css属性                */        function css(obj,attr,value){             if(arguments.length == 2){                  return getStyle(obj,attr);             }else{                       obj.style[attr] = value;             }        }    </script>

 

2.getComputedStyle和currrentStyle都是获取元素的最终css,获取行间样式可以用getComputedStyle或者currentStyle,也可以直接style.attr;但是获取非行间样式只能用getComputedStyle或者currentStyle

 

3.window.getComputedStyle(ele,null)等价于document.defaultView.getComputedStyle(ele,null);

在gecko 2.0之前的第二个参数是必须设置的,第二个参数是一个伪元素,如果没有伪元素,设置为null.如果第二个参数为null,获取到的是当前元素的样式,如果是伪元素,获得的是伪元素的样式

<style>div{    width:200px;    height:200px;    background-color:#FC9;    font-size:20px;    text-align:center;    }div:after{    content:"This is after";    display:block;    width:100px;    height:100px;    background-color:#F93;    margin:0 auto;    line-height:50px;        }</style><body>    <div id=‘myDiv‘>        This is div    </div>      <input id=‘btn‘ type="button" value=‘getStyle‘/>      <script>        var btn = document.querySelector(#btn);        btn.onclick = function(){            var div = document.querySelector(#myDiv);            var styleObj = window.getComputedStyle(div,after);            console.log(styleObj[width]);        }    </script></body>

 

打印出伪元素:after的width 100px;

 4.

  4.1 getComputedStyle和currentStyle是只读的,而element.style是读写的

  4.2getComputedStyle和currentStyle获取的是最终应用在元素上的css对象,即使没有css代码,也会列出默认的属性,而element.style只能获取style属性中设置的css样式

5.getPropertyValue

     (1).getPropertyValue的方法在CSSStyleDeclaration对象的prototype中,而CSSStyleDeclaration对象是通过getComputedStyle得到的。

     (2).getPropertyValue里面的参数是CSS属性名字符串,而且CSS属性名不能是驼峰式表示的,比如width,backgroun-color,height,text-align都行,但是backgroundColor,textAlign这种驼峰表示的CSS属性名,getPropertyValue不能识别

     (3).

         obj.currentStyle[‘margin-left‘] 有效

         obj.currentStyle[‘marginLeft‘]  有效    

         window.getComputedStyle(obj,null)[‘margin-left‘]  有效

         window.getComputedStyle(obj,null)[‘marginLeft‘]  有效

         window.getComputedStyle(obj,null).getPropertyValue(‘margin-left‘)  有效

         window.getComputedStyle(obj,null).getPropertyValue(‘marginLeft‘)   无效

         obj.currentStyle.width   有效

         obj.currentStyle.background-color 无效

         obj.currentStyle.backgroundColor  有效

         window.getComputedStyle(obj,null).width  有效

         window.getComputedStyle(obj,null).background-color  无效

         window.getComputedStyle(obj,null).backgroundColor 有效

综上,就是带有"-"的属性不能直接点出来,所以有getPropertyValue方法来处理,但是可以用[]来取代getPropertyValue

6.document.defaultView和window的关系

document.defaultView返回当前document对象所关联的window对象,如果没有,返回null;

 

 
 
 

获取样式