/ it Задачи / Задача с цветами на чистом JavaScript

Задача с цветами на чистом JavaScript

Задача с цветами на чистом JavaScript

1 762 · 25 июля 2017 в 18:28 ·
Отличная задача, которая проверить ваши знания в программировании на JS. Также подобная функция может пригодиться вам при создании ваших веб проектов.
Суть задачи сводиться к тому, что вам необходимо создать свою собственную функцию на JS, которая будет принимать цвет в HEX формате (например, #fafafa), а также градус затемнения. В итоге она будет возвращать новый цвет, который темнее или же светлее на градус затемнения. 

Пример выполнения задачи

Вы можете выбрать цвет, а также ввести градус затемнения или же осветления. Если число положительное, то цвет будет светлее, если негативное, то цвет будет темнее.

Если поле с выбор цвета не отображается, значит браузер не поддерживает этот тег. Вам стоит зайти с другого бразуера, к примеру Google Chrome.

Градус задается в диапазоне от -100 и до 100.


Затемнить

Пример затемнения заднего фона

Решение задания

Задача безусловно сложная и её выполнение совсем не простое. Мы приведем лишь код функций, которую можно вызывать, передавая два параметра и получать нужный результат. Итак, вот она:
function shaderColor (color, percent) {
   var num = parseInt (color.slice (1), 16); 
   var amt = Math.round(2.55 * percent);
   var R = (num >> 16) + amt;
   var G = (num >> 8 & 0x00FF) + amt;
   var B = (num & 0x0000FF) + amt;
   var new_color = ("#" + (0x1000000 + 
      (R < 255 ? R < 1 ? 0 : R : 255) * 0x10000 + 
      (G < 255 ? G < 1 ? 0 : G : 255) * 0x100 + 
      (B < 255 ? B < 1 ? 0 : B : 255)).toString (16).slice (1))
   return new_color;
}

Что же здесь происходит?

Сначала мы создаем переменную num, в которою помещаем переданный цвет. При этом конвертируем его в число и удаляем первый символ решетку. В переменную amt помещаем процент, умноженный на 2.55. Это необходимо для добавления его к каждому из цветов RGB, что мы как раз и делаем в следующих строках. Далее мы все соединяем воедино и приводим все к строке. При этом, идут проверки на то, что цвет не может быть темнее черного или же светлее белого.

Больше интересных новостей