2013-08-23 169 views
3

检查width属性是否足以确保我的DOM元素具有严格的正宽度,还是应该检查CSS规则(我只查找具有固定数量像素的元素作为CSS规则,没有%宽度)。检查元素宽度的最佳方法是什么?

if (element.offsetWidth && element.offsetWidth > 0) // do stuff 

OR

if ((element.offsetWidth && element.offsetWidth > 0) 
    || (element.style && element.style.width 
     && int(element.style.width.replace("px", ""), 10)>0) // do stuff 

我宁愿去的第一个,但我想,以确保设置CSS规则也将设置width属性。

---- ----编辑

其实offsetWidth似乎比width在任何情况下。我将width更改为offsetWidth

它是否使第二个选项(检查CSS)毫无价值?

+0

你怎么能有一个负面的无线DTH? –

+0

我想避免零宽度的元素。 –

+0

啊。我认为零是“积极的”,因为它是非负的。更清楚地说,“确保DOM元素的宽度大于零”? –

回答

3

element.offsetWidth应该足够了 - 不,检查style元素就没有必要

1

我认为,如果你检查元素

window.getComputedStyle(element).width 

的计算样式,你可以放心的返回值是正确的,并且比应用的css规则更精确(比如说你在外部css文件宽度中:0!important);它将覆盖内联的一个,并且不会通过el.style.width

+0

取决于需要支持哪些浏览器:http://caniuse.com/getcomputedstyle – lbstr

+0

谢谢,那太棒了。不幸的是对这个功能的支持还是有点太稀缺了,所以我可以安全地使用它。 –

+0

对于旧的IE浏览器(它们甚至是浏览器?),你可以使用element.currentStyle - 注意,它有时(尽管不常见)失败。 – Sgoldy

相关问题