javascript --获取css样式最终的属性值

来源:互联网 发布:finder for mac 编辑:程序博客网 时间:2024/06/07 08:00

在dom元素中使用css属性,可能会遇到两个问题,一是javascript要求在设置任何几何属性是必须明确尺寸单位,同时,任何几何属性都回返回表示元素样式的字符串数值(比如1000px而非100)

二是如果一个元素是100像素高,想获取他的当前高度,如果希望从样式属性中就能得到100px这样的精确结果,但是有时候并不能如愿。这是因为在使用样式表或者行内css所预设的样式信息并不能精确可靠的反应到当前的样式属性中。

如下例:

[c-sharp] view plaincopy
  1. <html>  
  2.   
  3. <head>  
  4.   
  5. <title></title>  
  6. <mce:style><!--  
  7.  p{height:100px;}  
  8. --></mce:style><style mce_bogus="1"> p{height:100px;}</style>  
  9. <mce:script type="text/javascript"><!--  
  10. function getStyle(elem,name)  
  11. {  
  12.     if(elem.style[name])  
  13.         return elem.style[name];  
  14.     else if(elem.currentStyle)  
  15.     {  
  16.         return elem.currentStyle[name];  
  17.           
  18.     }  
  19.     else if(document.defaultView&&document.defaultView.getComputedStyle)  
  20.     {  
  21.         name=name.replace(/[A-Z]/g,"-$1");  
  22.         name=name.toLowerCase();  
  23.         var s=document.defaultView.getComputedStyle(elem,"");  
  24.         return s&&s.getPropertyValue(name);  
  25.           
  26.     }  
  27.     else return null;  
  28. }  
  29. window.onload=function()  
  30. {  
  31.     var p=document.getElementsByTagName("p")[0];  
  32.     alert(p.style.height+"should be null");  
  33.     alert(getStyle(p,"height")+"should be 100px");  
  34. }  
  35. // --></mce:script>  
  36. </head>  
  37.   
  38. <body>  
  39. <p> i should be 100px stall.</p>  
  40. </body>  
  41.   
  42. </html>  

你就会发现css最终值不等于样式对象值得情况发生了。

如果地到元素的最终css样式值:可以同过下面这个通用函数得到:

[c-sharp] view plaincopy
  1. function getStyle(elem,name)  
  2. {  
  3.     if(elem.style[name])  
  4.         return elem.style[name];  
  5.     else if(elem.currentStyle)  
  6.     {  
  7.         return elem.currentStyle[name];  
  8.           
  9.     }  
  10.     else if(document.defaultView&&document.defaultView.getComputedStyle)  
  11.     {  
  12.         name=name.replace(/[A-Z]/g,"-$1");  
  13.         name=name.toLowerCase();  
  14.         var s=document.defaultView.getComputedStyle(elem,"");  
  15.         return s&&s.getPropertyValue(name);  
  16.           
  17.     }  
  18.     else return null;  
  19. }  

在这个函数里,单位默认的事px,忽略其他的计量单位。

原创粉丝点击