2009-12-31 21 views
0

J'écris une animation en surbrillance personnalisée avec Scriptaculous qui comprend un éclat CSS3. Je reçois le style box-shadow et j'ai besoin de le diviser à la valeur alpha de rgba, puis de varier cette valeur pour que l'ombre disparaisse.Une chaîne CSS - sélectionnez tout jusqu'à la troisième virgule

$('fresh').style.MozBoxShadow 

serait de retour

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

1.0 est la valeur alpha. Je dois le diviser pour que je puisse configurer:

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

Tous les chiffres peuvent être un nombre quelconque de chiffres longs, je ne peux pas utiliser substring (et c'est tout ce que je sais vraiment :)). Pouvez-vous aider?

Répondre

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

Ce serait mieux et plus propre par programmation, sans analyser une chaîne.

Si je comprends le droit logic, vous devriez être en mesure d'atteindre la couleur directement via

$('fresh').style.MozBoxShadowColor 

qui va vous faire économiser une partie de celui-ci.

Je suis également assez sûr qu'il est possible d'accéder au composant "alpha" d'une couleur par programmation, mais je ne sais pas comment.

+0

Vous penseriez donc, mais il revient non défini. Je suppose que c'est pourquoi ils sont toujours sous des préfixes spécifiques au fournisseur. –

+0

Ah merde. D'accord. Et quand je Google, quelle est la seule chose qui arrive? Cette même réponse. Avec qui les patrons de SO dorment-ils chez Google? :) –

2

Eh bien, vous pouvez toujours utiliser substring, parce que vous pouvez connaître le lastIndexOf(','), par exemple:

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," 
// ...