首页 > 其他 > 详细

兼容的获取样式的函数getStyle()

时间:2015-03-08 01:20:29      阅读:565      评论:0      收藏:0      [点我收藏+]

想要得到某个元素的某个样式属性,可以用:

1 <div id="div01" style="color:red">123</div>
2 
3 var ele = document.getElementById("div01");
4 console.log(ele.style.color);

 

但这样只能得到写在元素上的行内样式,对于link进来的样式文件或<style></style>中写的样式是获取不到的。

标准浏览器提供了一个getComputedStyle函数,具体用法是:

1 // 第一个参数为要获取样式的节点,第二个参数为伪类,如:hover,如果没有就填false或null.返回CSSStyleDeclaration对象;
2 window.getComputedStyle(element,伪类)
3 
4 //可以通过属性名来获得需要的样式,下面就得到了元素的字体颜色
5 window.getComputedStyle(ele,false)["color"];

 

可IE不支持,但它提供了一个currentStyle对象,得到的结果和getComputedStyle差不多

1 // IE下通过这种方式也可以得到元素的字体颜色
2 ele.currentStyle["color"];

 

综合上面的情况,我们做一下兼容便可以得到靠谱的解决方法!

1 function getStyle(ele,name){
2   if (ele.currentStyle) { // IE下的处理
3       return ele.currentStyle[name];
4   } else { // 标准浏览器处理
5        return getComputedStyle(ele, false)[name]; 
6   }  
7 }

 

再去获取div01的样式的时候就很方便了!

完整代码如下:

 1 <!DOCTYPE html>
 2 <html lang="en">
 3 <head>
 4     <meta charset="UTF-8">
 5     <title>demo</title>
 6   <style>
 7     #div01{font-size:16px;}
 8   </style>
 9 </head>
10 <body>
11     <div id="div01" style="color:red">123</div>
12   <script>
13   function getStyle(ele,name){
14       if (ele.currentStyle) {
15         return ele.currentStyle[name];
16       } else {
17         return getComputedStyle(ele, false)[name]; 
18       }
19   }
20 
21   var ele = document.getElementById("div01");
22 
23   console.log(getStyle(ele,"color")); // rgb(255, 0, 0)
24   console.log(getStyle(ele,"fontSize")); // 16px
25 
26   </script>
27 </body>
28 </html>

 

兼容的获取样式的函数getStyle()

原文:http://www.cnblogs.com/tyson/p/4321197.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!