2010-01-13 58 views
2

是否有一種簡單的跨瀏覽器方式來獲取PrototypeJS中元素的計算樣式,而不檢查document.defaultView ...和其他屬性? ......使代碼看起來像原型JS中的簡單getComputedStyle?

var elt = $$('.xyz')[k], 
    border = elt.getComputedStyle('border-bottom-width') 

PrototypeJs提供getDimensions-Width,並-Height方法,返回計算尺寸,但有沒有辦法讓其他計算樣式,如邊框,背景等

我發現getComputedStyle有幾個獨立的implementations,但是可能有PrototypeJS的補丁/插件會這樣做嗎?

回答

4

原型的getStyle方法封裝大多數跨瀏覽器的計算工作作風你正在尋找:

var bgColor = $(element).getStyle('background-color'); 

從文檔:

這個方法查找CSS屬性 的元素是否應用 內聯或樣式表中。它的工作原理 周圍瀏覽器的不一致性 關於浮動,不透明度,這 返回之間0(完全 透明)和1(完全不透明), 位置屬性的值(左,上,右 和底部)和獲取 尺寸時(寬度或高度)隱藏的 元素。

然而,這種方法將不返回在Internet Explorer < = 8樣式表中的應用的樣式,因爲它使用的getComputedStyle()方法,其是用於版本8和較低的不正確的方法:http://www.quirksmode.org/dom/w3c_css.html

+1

但它只返回內聯樣式。 – 2010-01-13 12:17:45

+1

@culebron:不,它返回計算樣式,並納入樣式表中定義的樣式。請自己檢查源代碼:http://prototypejs.org/assets/2009/8/31/prototype.js(搜索getStyle)。你會在那裏找到'getComputedStyle'。 – JPot 2010-01-13 12:19:27

+0

但是這不是完全的跨瀏覽器,IE <= 8需要.currentStyle,而不是.getComputedStyle()。檢查你自己:http://www.quirksmode.org/dom/w3c_css.html – 2011-04-27 16:00:17

1

不是我所知道的。

這可能是因爲「獲得計算風格」的實現是如此不同以至於幾乎不可能保證統一的結果(這使得它們在跨瀏覽器框架中無用)。

例如,如果我在this question中瞭解到獲取跨瀏覽器計算的字體大小並不總是可能的。

+0

是的, 我已經看到了它。這個問題顯示在第一頁的第一頁,當谷歌搜索「原型js得到計算風格」 – 2010-01-13 11:42:04

+0

大多數(所有?)js庫有一個函數獲取特定屬性的計算/當前樣式。看到我的答案爲原型的方式。 – JPot 2010-01-13 12:18:01