使用Javascript(jQuery),给出2个颜色值(例如2033ff
和3300a0
)如何确定它们之间的某些渐变停止?
原因是,我打算使用一组颜色值:
0 => '000000'
8400 => 'f0ff00'
44000 => '2033ff'
68400 => '3300a0'
一天有86400秒,12:00 AM映射到0,晚上11:59映射到86399.随着时间的推移,指定元素的背景颜色通过{{1}更改为渐变列表中的相应颜色}。例如window.setInterval(function(e){ ... }, 1000)
,示例中的2:32:11PM = 52331
位于2033ff
和3300a0
之间。
我不需要使用值填充数组(除非这更容易),而是使用索引和值作为引用。
答案 0 :(得分:6)
只需进行线性插值:
鉴于2033ff和3300a0作为开始和结束,你将做:
red1 = 0x2033ff >> 16;
green1 = (0x2033ff >> 8) & 0xFF;
blue1 = 0x2033ff & 0xFF;
red2 = 0x3300a0 >> 16;
green2 = (0x3300a0 >> 8) & 0xFF;
blue2 = 0x3300a0 & 0xFF;
time = 0.3 // This should be between 0 and 1
outred = time * red1 + (1-time) * red2;
outgreen = time * green1 + (1-time) * green2;
outblue = time * blue1 + (1-time) * blue2;
答案 1 :(得分:4)
我编写了库RainbowVis-JS作为将数字映射到颜色的通用解决方案。对于您的示例,您将使用:
var rainbow = new Rainbow();
rainbow.setSpectrum('2033ff', '3300a0');
rainbow.setNumberRange(1, 86400);
var colour = rainbow.colourAt(52331); // 2c14c5