Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Programmatic gradient stops with Javascript

Working with Javascript (jQuery), given 2 color values (2033ff and 3300a0 for example) how can I determine certain gradient stops between them?

Reason being is, I intend on using an array of color values:

    0 => '000000'
 8400 => 'f0ff00'
44000 => '2033ff'
68400 => '3300a0'

There being 86400 seconds in a day, 12:00AM maps to 0, and 11:59PM maps to 86399. As time passes, the background color of a specified element changes to the appropriate color in gradient list via window.setInterval(function(e){ ... }, 1000). For example 2:32:11PM = 52331, which from the example would be somewhere between 2033ff and 3300a0.

I don't need to populate the array with the values (unless that would be easier) but instead use the index and value as references.

like image 772
Dan Lugg Avatar asked Jul 12 '26 07:07

Dan Lugg


1 Answers

Just do a linear interpolation:

Given 2033ff and 3300a0 as start and end you'll do:

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;
like image 168
nico Avatar answered Jul 13 '26 21:07

nico



Donate For Us

If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!