GetStyle By CSS

  我们知道通过

    document.getElementById("argument"); //argument(元素);

    value = argument.style.width;的方式可以轻松获取  或者读写该argument的样式(宽度)。但是我们知道这个属性是在<HMTL>标签中的,那么如果我们argument的样式写在CSS中呢?我们就需要用别的方法来获取它的样式值.那么,我们就要用到

    getComputedStyle("argument",":after") .width  //谷歌、火狐等非IE内核浏览器

    argumet.currentStyle.width  //IE浏览器获取样式

    这两种方法来获取CSS文件中的样式值。那么我们可以通过下面的方法来判别浏览器以及获取并return出我们要的值。

 1 <!DOCTYPE html>
 2 <html>
 3 <head>
 4 <meta charset="utf-8">
 5 <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
 6 <title>GetStyle</title>
 7 <meta name="description" content="">
 8 <meta name="keywords" content="">
 9 <link href="" rel="stylesheet">
10 <style>
11     .box{
12         width: 200px;
13         background: gray;
14     }
15 </style>
16 </head>
17 <body>
18     <div class="box" id="box" style="height:200px">
19         
20     </div>
21 </body>
22 <script>
23     var obox = document.getElementById("box");
24     function getStyle (ele,prop) {
25         var value;
26         if(prop in document.body.style){
27             if(window.getComputedStyle){
28                 value = getComputedStyle(ele,null)[prop];
29             }else{
30                 value = obox.currentStyle.width;
31             }    
32         }else{
33             value = ele.style[prop];
34         }
35         value = parseFloat(value);
36         return value;
37     }
38     alert(getStyle(obox,"width"));
39     alert(getStyle(obox,"height"));
40 </script>
41 </html>

    经过网上查询(原文地址:http://blog.163.com/hongshaoguoguo@126/blog/static/180469812013217101436660/)

      了解到getComputedStyle与style的区别

        1、只读与可写
        getComputedStyle方法是只读的,只能获取样式,不能设置;而element.style能读能写。
        2、获取的对象范围
      getComputedStyle方法获取的是最终应用在元素上的所有CSS属性对象(即使没有CSS代码,也会把默认的祖宗八代都显示出来);而  element.style只能获取元素style属性中的Style样式。因此对于一个光秃秃的元素<p>,getComputedStyle方法返回对象中length属性值(如果有)就是190+(据我测试FF:192, IE9:195, Chrome:253, 不同环境结果可能有差异), 而element.style就是0。
            getComputedStyle与currentStyle
      currentStyle是IE浏览器自己的一个属性,其与element.style可以说是近亲,至少在使用形式上类似,element.currentStyle,差别在于element.currentStyle返回的是元素当前应用的最终CSS属性值(包括外链CSS文件,页面中嵌入的<style>属性等)。
因此,从作用上将,getComputedStyle方法与currentStyle属性走的很近,形式上则style与currentStyle走的近。不过,currentStyle属性貌似不支持伪类样式获取,这是与getComputedStyle方法的差异,也是jQuery css()方法无法体现的一点。
            getPropertyValue方法
      getPropertyValue方法可以获取CSS样式申明对象上的属性值(直接属性名称),例如:
        window.getComputedStyle(element, null).getPropertyValue("float");
      用getPropertyValue方法不必可以驼峰书写形式(不支持驼峰写法),例如:style.getPropertyValue("border-top-left-radius");
      兼容性:getPropertyValue方法IE9+以及其他现代浏览器都支持,对于IE6-8有另外一套方案
posted @ 2014-11-21 11:55  熊猫asH5  阅读(251)  评论(0编辑  收藏  举报