2010-01-01 68 views
3

我正在嘗試編寫JavaScript工具以處理某種顏色的項目。在測試頁上,我使用內聯樣式設置顏色以模仿目標頁面,但是當頁面呈現時,使用CSS rgb()函數指定顏色。以rgb()形式停止Firefox渲染內聯顏色

HTML嘗試模擬GMail容器我想更改背景顏色。當我檢查Firebug中的元素時,顏色顯示爲rgb()。

<div style="width: 100%; height: 30px; border: 1px solid black; 
    background: #6694E3 none repeat scroll 0 0;">  
</div> 

我怎樣才能阻止顏色被從#6694E3轉換爲rgb(102, 148, 227)

+0

你能展示一個代碼樣本:你在做什麼以及值在兩種格式之間切換的時間? – Eilon 2010-01-01 01:17:51

+0

@Eilon,看我添加的例子。 – ProfK 2010-01-01 08:29:34

回答

3

檢出this script將rgb()表示法轉換爲十六進制。

+0

+1獲得靈感。我真正需要的是將十六進制轉換爲RGB(以字符串形式)的腳本,因此我可以對內聯樣式文本使用jQuery篩選器。 – ProfK 2010-01-01 08:43:08

+0

James Fuller的評論稱價值觀是錯誤的。 '如果你使用rgb值(120,120,240),你的代碼將返回#F07878,這是主要是紅色的,而不是顯性的藍色' – 2015-08-05 23:35:38

+0

@Jomar作者似乎已經修復了錯誤? – 2015-08-06 05:46:08

1

這不是一種轉換,它只是表達同一事物的一種不同方式。如果你想檢查一個特定的顏色,你將不得不首先用rgb格式表示它,然後進行檢查。據我所知,一個DOM元素返回的CSS值是無論如何 - 你不能改變格式。

+0

爲什麼當我在Firebug中查看GMail元素時,顏色顯示爲十六進制,但是當我查看自己的頁面時,它們顯示爲rgb? – ProfK 2010-01-01 08:28:48

0

您可能正在通過螢火蟲來查看該值,該螢火蟲會在控制檯中將所有顏色轉換爲RGB形式。這並不意味着它在DOM中發生了變化。

+0

我認爲它在DOM中發生了變化,至少在3.5中 - 我最近修復了由此問題導致的JS錯誤,代碼正在尋找計算機樣式的十六進制值,並且它正在獲得rgb,並且無法匹配。 – robertc 2010-01-01 02:35:01

+0

是的,計算computedStyle時,很多值都轉換爲等效單位。 – bobince 2010-01-01 02:56:38

+0

firebug與此無關,Safari和Chrome都渲染style.color爲「rgb(r,g,b)」,而不是像IE一樣將IE渲染爲十六進制字符串「#rrggbb」 – 2010-06-17 09:41:22