Как преобразовать неопределенное количество вхождений rgb в строке в шестнадцатеричный код в JavaScript?
Fireworks CS6 включает в себя панель, которая копирует свойства CSS3 выбранного объекта.
Однако код слишком многословен и запутан, поэтому я хотел бы написать расширение на JavaScript, которое его очистит.
Я сделал все, что мне нужно, кроме выяснения, как преобразовать любое количество значений rgb в их меньшие эквиваленты в шестнадцатеричном коде.
Например, типичная строка, которую он возвращает для градиентов, может включать это:
background: -moz-linear-gradient(50% 0% -87deg, rgb(0,0,0) 0%, rgb(0,255,64) 28%, rgb(0,177,122) 40%, rgb(0,0,255) 68%, rgb(37,37,230) 76%, rgb(153,153,153) 100%);
background: -ms-linear-gradient(-87deg, rgb(0,0,0) 0%, rgb(0,255,64) 28%, rgb(0,177,122) 40%, rgb(0,0,255) 68%, rgb(37,37,230) 76%, rgb(153,153,153) 100%);
background: -o-linear-gradient(-87deg, rgb(0,0,0) 0%, rgb(0,255,64) 28%, rgb(0,177,122) 40%, rgb(0,0,255) 68%, rgb(37,37,230) 76%, rgb(153,153,153) 100%);
background: -webkit-gradient(linear,50% 0%,55% 100%, color-stop(0, rgb(0,0,0)), color-stop(0.28, rgb(0,255,64)), color-stop(0.4, rgb(0,177,122)), color-stop(0.68, rgb(0,0,255)), color-stop(0.76, rgb(37,37,230)), color-stop(1, rgb(153,153,153)));
background: -webkit-linear-gradient(-87deg, rgb(0,0,0) 0%, rgb(0,255,64) 28%, rgb(0,177,122) 40%, rgb(0,0,255) 68%, rgb(37,37,230) 76%, rgb(153,153,153) 100%);
background: linear-gradient(-87deg, rgb(0,0,0) 0%, rgb(0,255,64) 28%, rgb(0,177,122) 40%, rgb(0,0,255) 68%, rgb(37,37,230) 76%, rgb(153,153,153) 100%);
border-color: rgb(198,34,221);
У меня уже есть функция, которая преобразует значения r, g, b в их шестнадцатеричный эквивалент, но я не уверен, как бы я прошел цикл по строке и изолировал компоненты rgb и преобразовал каждый из них.
1 ответ
Если вы хотите захватить только этот точный синтаксис - rgb с тремя десятичными числами без пробелов, то string.replace(/rgb\((\d+),(\d+),(\d+)\)/g, yourFunction)
Сделаю. Первый параметр будет всей последовательностью rgb(), а следующие три будут числами R, G и B. Вам нужно будет вернуть новую строку, чтобы заменить весь rgb().