Color Changing Background on Scroll

Josh Guffey
2 min readSep 3, 2015

--

While working on a project (I’ll be announcing soon!) at Collective Ray, our design team wanted a nice color-changing background. Now, I know we could have used a static gradient, or simply faded between sections, but I thought it would be cool if the background changed as the user scrolled down the page, in a fixed manner. Usually when I meet a challenge like this, the first thing I do is check to see if anyone else has already done it, and of course in no time I found this jsfiddle of a jQuery powered implementation: http://jsfiddle.net/cgspicer/V4qh9/. It’s great, but we needed a bit more. The current version only supports fades between two colors so I forked the code and expanded on it a little bit.

Installing

You’ll need jQuery, jquery.color-2.1.0.js, and the bits of HTML/CSS/JS included in this jsfiddle.

Make it your own.

In the fiddle, I use `<section>` elements to mark the content boundaries, but you can use any element you want by changing the selector on line 8, and the corresponding CSS and HTML. The array of strings in the call to `scrollColors` (line 16) is where we store the colors we’d like to transition to. Remember to change the CSS background-color property for body (our color-change target) to match the first element in this array, or you’ll still get the bright pink color when the page first loads.

Thanks to the jQuery Color plugin, hex, rgb, and even rgba values are allowed. This can yield some cool effects when layered over an image or video. The alpha channel in RGBA is animated just like the other color channels, so you could have a sold color change opacity with scroll.

Enjoy!

--

--