Для выполнения этой задачи нужно всего лишь несколько вещей, которые вам нужно сделать и понять. Во-первых, понимание того, что цветовое пространство RGB - это не тот, который вы хотите для этой задачи - HSV или HSL намного лучше. Поскольку браузеры рады работать с HSL, мы будем использовать его.
Далее, если вы посмотрите на канал H в цветовом пространстве HSL, вы увидите, что там присутствует точная полоса цветов. Синий имеет оттенок около 240 °, а красный - один из 0 °.
Это означает, что мы хотим сопоставить диапазон [min..max] с оттенками [240..0] (да, отображение «назад») Имея это в виду, мы можем установить создавая функцию, которая будет выполнять сопоставление для нас и возвращает допустимую строку цвета.
function calcColor(min, max, val)
{
var minHue = 240, maxHue=0;
var curPercent = (val - min)/(max-min);
var colString = "hsl(" + ((curPercent * (maxHue-minHue)) + minHue) + ",100%,50%)";
return colString;
}
Сначала мы установили два конца тонов, которые мы хотим использовать. Далее мы выясним, где находится в текущем диапазоне текущее значение. Наконец, мы ставим себя в том же положении, что и в диапазоне Hue, а не в диапазоне ввода пользователем.
Показан простой пример его использования.
<!DOCTYPE html>
<html>
<head>
<script>
"use strict";
function newEl(tag){return document.createElement(tag);}
window.addEventListener('load', onDocLoaded, false);
function onDocLoaded()
{
for (var i=0; i<10; i++)
{
var elem = newEl('div');
elem.style.backgroundColor = calcColor(0, 9, i);
elem.className = "rgb";
document.body.appendChild(elem);
}
}
function calcColor(min, max, val)
{
var minHue = 240, maxHue=0;
var curPercent = (val - min)/(max-min);
var colString = "hsl(" + ((curPercent * (maxHue-minHue)) + minHue) + ",100%,50%)";
return colString;
}
</script>
<style>
.rgb
{
width: 16px;
height: 16px;
display: inline-block;
}
</style>
</head>
<body>
</body>
</html>
преобразовать их в шестнадцатеричный? попробуйте this.http: //stackoverflow.com/questions/57803/how-to-convert-decimal-to-hex-in-javascript – Giri
Нет, я хочу создать цветовой код на основе значения, max, min. – user6217823