检查元素宽度的最佳方法是什么?

3

检查width属性是否足以确保我的DOM元素具有严格正面宽度,还是我还应该检查CSS规则(我只寻找具有固定像素数作为CSS规则的元素,没有百分比宽度)。

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

或者

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的第二个选项毫无价值?


你怎么可能有负宽度? - André Dion
我想避免零宽度元素。 - Mad Echet
啊。我认为零是“正”的,因为它是非负的。也许更清楚的说法是,“确保DOM元素的宽度大于零”? - Chris Baker
你说得对,已经进行了编辑。谢谢。 - Mad Echet
2个回答

3

element.offsetWidth 应该足够 - 不需要检查 style 元素


1
我认为如果您检查元素的计算样式
window.getComputedStyle(element).width

你可以放心,返回的值是正确的,比应用的css规则更准确(假设你在外部css文件中有width: 0!important;,它会覆盖内联样式,但不会被el.style.width报告给你)。

取决于需要支持哪些浏览器:http://caniuse.com/getcomputedstyle - lbstr
谢谢,太好了。不幸的是,对于这个功能的支持还有点稀少,所以我不能安全地使用它。 - Mad Echet
对于旧版IE(它们甚至还算浏览器吗?),您可以使用element.currentStyle -- 请注意,它有时会失败(虽然不常见)。 - Sgoldy

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接