Учитывая, что многие ответы лишь частично отвечают на вопрос (от RGB до HEX или наоборот), я решил опубликовать свой частичный ответ.
У меня была похожая проблема, и я хотел сделать что-то вроде этого: ввести любой допустимый цвет CSS (HSL (a), RGB (a), HEX или имя цвета) и 1. иметь возможность добавлять или удалять альфа-значение , 2. вернуть объект rgb (a). Я написал плагин именно для этой цели. Его можно найти на GitHub (для этого требуется jQuery, но при желании вы можете его разветвить и сделать ванильную версию). Вот демонстрационная страница . Вы можете попробовать для себя и увидеть результат, сгенерированный на лету.
Я скопирую и вставлю параметры здесь:
RGB Generator принимает один аргумент, цвет и предоставляет три параметра: asObject, addAlpha и removeAlpha. Если три параметра не указаны, цвет RGB будет возвращен в виде строки.
$.rgbGenerator("white")
// Will return rgb(255,255,255)
Обратите внимание, что по умолчанию включены альфа-компоненты. Если входное значение содержит альфа-значение, вывод будет в формате RGBa.
$.rgbGenerator("hsla(0,100%,50%,0.8)")
// Will return rgba(255,0,0,0.8)
Вы можете отключить это поведение, установив для параметра removeAlpha значение true. Это удалит любое альфа-значение из исходного цвета HSLa или RGBa.
$.rgbGenerator("hsla(0,100%,50%,0.8)", {removeAlpha: true})
// Will return rgb(255,0,0)
Если, с другой стороны, вы хотите добавить альфа-канал, вы можете сделать это, установив для addAlpha любое значение в диапазоне от 0 до 1. Если вход имеет непрозрачный цвет, альфа-значение будет добавлено. Если он прозрачный, предоставленное значение перезапишет альфа-компонент ввода.
$.rgbGenerator("hsl(0,100%,50%)", {addAlpha: 0.4})
// Will return rgba(255,0,0,0.4)
$.rgbGenerator("hsla(0,100%,50%,0.8)", {addAlpha: 0.4})
// Will return rgba(255,0,0,0.4)
Наконец, также возможно вывести цвет RGB (a) как объект. Он будет состоять из r, g, b и, необязательно, a.
$.rgbGenerator("hsla(0,100%,50%,0.8)", {asObject: true})
/* Will return
{
"r": 255,
"g": 0,
"b": 0,
"a": 0.8
}
*/
$.rgbGenerator("hsla(0,100%,50%,0.8)", {asObject: true}).r
// Will return 255