2013-08-23 136 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

相關問題