Last active
June 15, 2017 14:49
-
-
Save artlantis/3d85aa2998b230cb46da to your computer and use it in GitHub Desktop.
Animated Background Color
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
/** | |
* Animated Background Color | |
* Author : Joan Claret | |
* URL : https://github.com/JoanClaret/html5-canvas-animation | |
*/ | |
var colors = new Array( | |
[62,35,255], | |
[60,255,60], | |
[255,35,98], | |
[45,175,230], | |
[255,0,255], | |
[255,128,0]); | |
var step = 0; | |
//color table indices for: | |
// current color left | |
// next color left | |
// current color right | |
// next color right | |
var colorIndices = [0,1,2,3]; | |
//transition speed | |
var gradientSpeed = 0.002; | |
function updateGradient() | |
{ | |
if ( $===undefined ) return; | |
var c0_0 = colors[colorIndices[0]]; | |
var c0_1 = colors[colorIndices[1]]; | |
var c1_0 = colors[colorIndices[2]]; | |
var c1_1 = colors[colorIndices[3]]; | |
var istep = 1 - step; | |
var r1 = Math.round(istep * c0_0[0] + step * c0_1[0]); | |
var g1 = Math.round(istep * c0_0[1] + step * c0_1[1]); | |
var b1 = Math.round(istep * c0_0[2] + step * c0_1[2]); | |
var color1 = "rgb("+r1+","+g1+","+b1+")"; | |
var r2 = Math.round(istep * c1_0[0] + step * c1_1[0]); | |
var g2 = Math.round(istep * c1_0[1] + step * c1_1[1]); | |
var b2 = Math.round(istep * c1_0[2] + step * c1_1[2]); | |
var color2 = "rgb("+r2+","+g2+","+b2+")"; | |
$('.gradient').css({ | |
background: "-webkit-gradient(linear, left top, right top, from("+color1+"), to("+color2+"))"}).css({ | |
background: "-moz-linear-gradient(left, "+color1+" 0%, "+color2+" 100%)"}); | |
step += gradientSpeed; | |
if ( step >= 1 ) | |
{ | |
step %= 1; | |
colorIndices[0] = colorIndices[1]; | |
colorIndices[2] = colorIndices[3]; | |
//pick two new target color indices | |
//do not pick the same as the current one | |
colorIndices[1] = ( colorIndices[1] + Math.floor( 1 + Math.random() * (colors.length - 1))) % colors.length; | |
colorIndices[3] = ( colorIndices[3] + Math.floor( 1 + Math.random() * (colors.length - 1))) % colors.length; | |
} | |
} | |
setInterval(updateGradient,10); |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Hello, Can we make only two colors?