Мне нужно получить значение цвета на 50% более светлой версии существующего шестнадцатеричного цвета. Однако он должен быть непрозрачным на 100%, я не могу использовать opacity
, rgba
, hexa
или hsla
.
Сценарий:
Я рисую маршруты на карте, каждый из которых имеет свой цвет, на основе жестко заданного массива из 48 возможных шестнадцатеричных значений.
Когда один из этих маршрутов редактируется, он должен отображаться как "отключенный" (50 % исходного цвета).
В дизайне экрана эталонными значениями были #9775fa
для цвета маршрута (один из цветов в массиве) и #d5c7fd
для отключенного цвета. Этот второй цвет был получен дизайнером путем нанесения белого слоя с непрозрачностью 50% поверх основного цвета.
Я попытался получить то же самое значение с помощью JS, сначала используя функцию осветления, затем функцию HSL и, наконец, осветляя вручную каждое из значений RGB основного цвета. Никто из них толком не работал.
Используя осветление, добавив 62 света, я получил близкое значение, но не точное. Использование HSL и осветление вручную на 50% тоже не сработало.
Это значения, которые у меня есть:
Base color: #9775fa
"Disabled color": #d5c7fd
Lighten by 62: #d5b3ff
HSL 50%: #e3b0ff
Ligheting 50% by hand: #e3b0ff
Итак, в конце концов, реальный вопрос заключается в том, можно ли этого достичь?
Вот "игровая площадка" и полный код моих экспериментов ( второй столбец — это эталонный цвет "disabled".
Большое спасибо!