js 获取width为auto时的实际宽度

要获取div运行时的width,需要用到currentStyle(IE),defaultView(FF) 样式值 

function getStyle( elem, name ) {  
     //如果该属性存在于style[]中,则它最近被设置过(且就是当前的)  
     if (elem.style[name])  
         return elem.style[name];  
     //否则,尝试IE的方式  
     else if (elem.currentStyle)  
         return elem.currentStyle[name];  
     //或者W3C的方法,如果存在的话  
     else if (document.defaultView && document.defaultView.getComputedStyle) {  
         //它使用传统的"text-Align"风格的规则书写方式,而不是"textAlign"  
         name = name.replace(/([A-Z])/g,"-$1");  
         name = name.toLowerCase();  
         //获取style对象并取得属性的值(如果存在的话)  
         var s = document.defaultView.getComputedStyle(elem,"");  
         return s && s.getPropertyValue(name);  
     //否则,就是在使用其它的浏览器  
     } else  
     return null;  
}  

而在IE下如果width设置的事auto,则得到的还是auto

可以通过offsetWidth计算得到,width=offsetWidth - 边框宽度即可;offsetWidth在不设置width属性时也可以拿到的

var widthTemp=getStyle(target,"width");
		if(widthTemp=="auto"||(!widthTemp)){
		   widthTemp=target.offsetWidth-5;
		}



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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值