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

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

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

如下例:

[c-sharp]  view plain copy
  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.οnlοad=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 plain copy
  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,忽略其他的计量单位。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值