2009-12-31 2 views
0

Я пишу пользовательскую анимацию выделения с помощью Scriptaculous, которая включает в себя сияние CSS3. Я получаю стиль box-shadow и должен разбить его на значение альфа-диапазона rgba, а затем изменить это значение, чтобы заставить тень исчезать.Строка CSS - выберите все до третьей запятой

$('fresh').style.MozBoxShadow 

вернется

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

1.0 является альфа-значение. Мне нужно разбить его, так что я могу установить:

$('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 

Это будет вам сэкономить одну часть.

Я также уверен, что можно получить доступ к «альфа-компоненту» цвета программно, но я не знаю, как это сделать.

+0

Можно подумать, что это так, но это возвращается неопределенным. Полагаю, именно поэтому они все еще находятся в определенных префиксах поставщиков. –

+0

Ах дерьмо. Отлично. И когда я Google это, что это единственное, что приходит? Это самый ответ. Кто такие боссы SO, которые спали в Google? :) –

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," 
// ... 
Смежные вопросы