js获取html元素宽度的思考

分两种情况讨论:

1、使用内联样式,即直接把CSS写在HTML元素的style属性中

[xhtml]  view plain copy
  1. <div id="d1" style="width:100px;height:200px;">             
  2. </div>  
 

 

通过以下js代码可以获取width等属性,

[javascript]  view plain copy
  1. alert(document.getElementById('d1').style.width);//100px  
 

 

在firefox,ie,opera,safari,chrome上都可以取得到宽度和高度值。

2、使用嵌入、链入或引入样式表(非内联样式),这时候通过element.style.width是获取不到的

[xhtml]  view plain copy
  1. <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">  
  2. <html>  
  3.   <head>  
  4.     <title>b.html</title>     
  5.     <meta http-equiv="keywords" content="keyword1,keyword2,keyword3">  
  6.     <meta http-equiv="description" content="this is my page">  
  7.     <meta http-equiv="content-type" content="text/html; charset=UTF-8">  
  8.     <mce:style type="text/css"><!--  
  9.         #d2 {  
  10.             width:400px;  
  11.             height:200px;  
  12.             border:5px solid gray;  
  13.             padding:5px;  
  14.         }  
  15.       
  16. --></mce:style><style type="text/css" mce_bogus="1">     #d2 {  
  17.             width:400px;  
  18.             height:200px;  
  19.             border:5px solid gray;  
  20.             padding:5px;  
  21.         }  
  22.     </style>      
  23.     <mce:script type="text/javascript"><!--  
  24.         window.onload=function(){  
  25.               
  26.             //2、使用嵌入、链入或引入样式表(非内联样式)  
  27.               
  28.             //ie:通过currentStyle           
  29.             alert(document.getElementById('d2').currentStyle.width);//400px ie  
  30.               
  31.             //ff,safari,opera,chrome:通过window.getComputedStyle  
  32.             var el=document.getElementById('d2');  
  33.             alert(window.getComputedStyle(el,null).style.width);//400px safari,opera,chrome  
  34.         }  
  35.       
  36. // --></mce:script>  
  37.   </head>  
  38.     
  39.   <body>        
  40.         <div id="d2"></div>  
  41.   </body>  
  42. </html>  
 

最后封装到一个方法中,

 

[javascript]  view plain copy
  1. function getRealStyle(el,cssName)  
  2. {                 
  3.     var len=arguments.length, sty, f, fv;  
  4.                       
  5.     'currentStyle' in el ? sty=el.currentStyle : 'getComputedStyle' in window   
  6.                          ? sty=window.getComputedStyle(el,null) : null;  
  7.                                           
  8.     if(cssName==="opacity" && document.all){  
  9.         f = el.filters;  
  10.         f && f.length>0 && f.alpha ? fv=f.alpha.opacity/100 : fv=1;                    
  11.         return fv;  
  12.     }     
  13.     cssName==="float" ? document.all ? cssName='styleFloat' : cssName='cssFloat' : cssName;   
  14.     sty = (len==2) ? sty[cssName] : sty;                                  
  15.     return sty;  
  16. }     
 

 

如果只想获取元素的style对象,则只传第一个参数,第二个参数是获取该对象style属性为styName的值。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值