2013-03-30 25 views
0

已經有很多關於確定JavaScript中的背景顏色,但我沒有看到這個問題處理:讓我們說我有一個空的文件,沒有別的,沒有風格。 getcomputedstyle爲這兩個元素,背景顏色是「透明的」。但是那是什麼顏色?用戶選擇的默認值,通常是白色,但可以是任何東西。所以沒有辦法找出那是什麼?看起來像在DOM中的缺陷。任何方式來確定透明背景顏色CSS

+0

有效顏色取決於底下的元素。在透明元素的範圍內可能有多種不同的背景顏色。 – Pointy

+0

@點子,我可能不明白這裏被問到的是什麼,你能幫助一下嗎? – gdoron

+0

其「白色」(通常)在「身體」和其他元素的情況下采取「父」的顏色 – Jashwant

回答

2

檢查出tricks this guy used.在本質上,獲得真實顏色的唯一方法是繼續處理父元素,直到找到提供顏色定義的元素。

的方法稱爲用於與ID someid的 元件時上述返回 '透明',但有兩個例外:

Safari瀏覽器將返回 「RGBA(0,0,0,0)」,其意味着透明, ,因爲第四個值表示不透明度爲0. Konqueror 3.5將返回「#000000」,它是黑色的,同時也是Konqueror的已知錯誤。我試着用getPropertyCSSValue,但 ,一個是完全borked ...

現在,如果你想要檢索的 元素的「真實」的背景顏色,你必須遞歸向上移動層次結構,直到你找到 一個沒有透明背景的元素。你必須在文件body中停止 而假定爲背景色爲白色。

+1

......只要元素使用「固定」,「絕對」或「相對」來定位,此技術就會下降。 – Pointy

+0

@Pointy代碼中的什麼會導致這些技術在這些元素上失敗? –

+1

問題是,只看DOM並不能告訴你實際上在透明元素後面放置了什麼元素。元素本身可以位於頁面上的任何位置,而不管DOM說什麼,並且不是透明元素的祖先的元素可能在它後面。 – Pointy

0

透明色是rgba(0,0,0,0)。它是A = 0的任何RGB,即Alpha必須設置爲0.