Не преобразовывать цвета в RGB?

При назначении цвета hsl с помощью Javascript он не применяется как цвет HSL, а преобразуется в RGB.

document.body.style.backgroundColor = "hsl(0,100%,50%)"
document.body.style.backgroundColor; // "rgb(255, 0, 0)"

Я надеялся назначить цвет HSL, а затем изменить насыщенность и яркость после факта, но я не могу сделать это легко, так как он преобразуется в RGB.

Есть ли способ предотвратить его преобразование в RGB или необходимо вручную преобразовать его обратно в HSL?


person Eastonium    schedule 01.08.2016    source источник
comment
вам нужно будет либо 1) сохранить значение HSL в переменной, либо 2) преобразовать значение RGB в HSL: см. это   -  person Ryan Wheale    schedule 01.08.2016
comment
С какой целью вы хотите сохранить цвета HSL? Экраны могут отображать только RGB, поэтому визуально нет никакой разницы, если только вы не пытаетесь создать печатные документы, для которых потребуются цвета CMYK — я видел их только в черновике CSS4.   -  person TheThirdMan    schedule 01.08.2016
comment
Будет ли это полезно? stackoverflow.com/questions/2353211/hsl-to-rgb -преобразование-цвета   -  person Ason    schedule 01.08.2016
comment
@TheThirdMan Я надеялся сохранить формат HSL, чтобы я мог легко изменить насыщенность и яркость / яркость постфактум для динамической веб-страницы.   -  person Eastonium    schedule 01.08.2016
comment
Понятно... хотя в CSS цветовой код HSL на самом деле должен быть, например, единственным значением hsl(0,100%,50%), поэтому нет простого способа получить к нему доступ постфактум. Может быть, вам следует вместо этого использовать переменные? Вы также можете установить атрибуты для элемента, к которому хотите применить цвет фона, и повторно применять CSS всякий раз, когда вы изменяете эти атрибуты.   -  person TheThirdMan    schedule 01.08.2016
comment
@TheThirdMan Я думаю, что в моем случае лучше использовать атрибут, который предназначен для элемента svg. Элементы svg принимают заливку стиля или атрибута, которая определяет цвет. Спасибо за это предложение!   -  person Eastonium    schedule 01.08.2016
comment
В случае SVG атрибуты действительно то, что я бы рекомендовал. Пожалуйста, рассмотрите возможность публикации своего решения в качестве ответа и примите его, чтобы вопрос был удален из очереди без ответа, и другим было бы легче найти решение проблемы, если они наткнутся на эту страницу!   -  person TheThirdMan    schedule 01.08.2016
comment
Аналогичный вопрос был задан год назад, но ответов не было: /вопросы/30440423/   -  person jabbett    schedule 02.08.2016


Ответы (1)


Для элементов SVG вы можете использовать атрибут вместо стиля для цвета «заливки», и он сохранит формат HSL.

Что касается элементов в целом, то сохранение значения HSL в качестве переменной или атрибута для получения при изменении/повторном применении цвета может быть самым простым решением.

person Eastonium    schedule 02.08.2016