2009-12-31 69 views
0

我正在用包含CSS3發光的Scriptaculous編寫自定義高光動畫。我得到了箱形陰影樣式,需要將其分割爲rgba alpha值,然後改變該值以使陰影消失。一個CSS字符串 - 選擇第三個逗號的所有東西

$('fresh').style.MozBoxShadow 

將返回

0 0 20px rgba(163, 238, 71, 1.0) 

1.0是alpha值。我需要拆分它,這樣我可以設置:

$('fresh').style.MozBoxShadow = everythingBeforeAlphaValue + anAlphaValueIVaryWithJS + ')'; 

所有數字可以是任何數量的長數字,所以我不能使用substring(這就是我所知道的:))。你能幫我嗎?

回答

2
var mozBoxShadow = $('fresh').style.MozBoxShadow; 
var everythingBeforeAlphaValue = /.*?rgba\((?:\d*,\s*){3}/.exec(mozBoxShadow)[0]; 
1

這會更好,更清潔地完成編程,而不需要解析字符串。

如果我理解正確的logic,你應該能夠通過

$('fresh').style.MozBoxShadowColor 

,要達到直接的顏色會爲你節省它的一個組成部分。

我也很確定可以以編程方式訪問顏色的「alpha」組件,但我不知道如何。

+0

你會這樣想,但它回來未定義。我想這就是爲什麼他們仍然在供應商特定的前綴下。 – 2009-12-31 02:31:52

+0

啊廢話。好吧。當我Google時,唯一出現的是什麼?這個答案。誰在S​​O的老闆在谷歌睡覺? :) – 2009-12-31 02:49:29

2

嗯,你仍然可以使用substring,因爲你可以知道lastIndexOf(','),例如:

var str = "0 0 20px rgba(163, 238, 71, 1.0)"; 

var everythingBeforeAlphaValue = str.substring(0, str.lastIndexOf(',') + 1); 
// "0 0 20px rgba(163, 238, 71," 
// ... 
相關問題