<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Code Couch &#187; Graphical</title>
	<atom:link href="http://www.codecouch.com/category/graphical/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.codecouch.com</link>
	<description>The ramblings of two code monkeys</description>
	<lastBuildDate>Mon, 09 Jan 2012 21:11:09 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.2.1</generator>
		<item>
		<title>Creating a coloured gradient background without images</title>
		<link>http://www.codecouch.com/2006/05/creating-a-coloured-gradient-background-without-images/</link>
		<comments>http://www.codecouch.com/2006/05/creating-a-coloured-gradient-background-without-images/#comments</comments>
		<pubDate>Wed, 03 May 2006 10:33:23 +0000</pubDate>
		<dc:creator>Dan</dc:creator>
				<category><![CDATA[Graphical]]></category>
		<category><![CDATA[Demos]]></category>
		<category><![CDATA[JavaScript]]></category>

		<guid isPermaLink="false">http://www.codecouch.com/?p=97</guid>
		<description><![CDATA[If you want to dynamically create a gradient background without using images, this code does the job and is flexible for most needs.]]></description>
			<content:encoded><![CDATA[<p><strong>Update:</strong> This article was written long before CSS gradient support was widespread. I&#8217;d strongly advise using CSS to create gradients in an modern web browswer!</p>
<p>Here&#8217;s some code to dynamically create a gradient background without using images. The width and/or height of each colour band, as well as the total number of colour bands can be easily changed.</p>
<p>You can use &#8220;createGradientV&#8221; to create a vertical gradient (North to South), or &#8220;createGradientH&#8221; to create a horizontal gradient (West to East). Each of the functions takes one or more sets of 4 parameters, documented in the code.</p>
<p>To add more colour bands, simply add more sets of parameters  to the relevant &#8220;createGradient&#8221; method calls.</p>
<p>This code has been tested working on IE/Win 6, NN/Win 7, Opera/Win 7, FF/Win, FF/Mac, and Safari/Mac. It does NOT work on IE/Mac (tested on version 5.22).</p>

<div class="wp_syntax_outer"><div class="wp_syntax"><div class="wp_syntax_inner"><pre class="javascript">&lt;!DOCTYPE html PUBLIC &quot;-//W3C//DTD XHTML 1.1 Strict//EN&quot; &quot;http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd&quot;&gt;
&lt;html xmlns=&quot;http://www.w3.org/1999/xhtml&quot; lang=&quot;en&quot; xml:lang=&quot;en&quot;&gt;
&lt;head&gt;
    &lt;meta http-equiv=&quot;content-type&quot; content=&quot;text/html; charset=iso-8859-1&quot; /&gt;
    &lt;meta http-equiv=&quot;content-language&quot; content=&quot;en&quot; /&gt;
    &lt;title&gt;Gradient Background&lt;/title&gt;
&nbsp;
    &lt;style type=&quot;text/css&quot;&gt;
        body {
            padding: 0px;
            margin: 20px;
            background-color: #00CCFF;
        }
&nbsp;
        #fadeBandsV {
            position: absolute;
            left: 0px;
            top: 0px;
            width: 100%;
            height: 80px;
            z-index: 1;
        }
&nbsp;
        #fadeBandsH {
            position: absolute;
            left: 0px;
            top: 0px;
            width: 100%;
            z-index: 1;
        }
&nbsp;
        #fadeBandsV div {
            overflow: hidden;
            position: absolute;
            width: 100%;
        }
&nbsp;
        #fadeBandsH div {
            overflow: hidden;
            position: absolute;
            height: 200px;
        }
&nbsp;
        #pageContent {
            position: relative;
            z-index: 2;
        }
    &lt;/style&gt;
&nbsp;
    <span class="sy0">&lt;</span>script type<span class="sy0">=</span><span class="st0">&quot;text/javascript&quot;</span><span class="sy0">&gt;</span>
    <span class="sy0">&lt;!--</span>
&nbsp;
        <span class="co1">// do not call this function directly - use createGradientV or createGradientH instead</span>
        <span class="kw2">function</span> createGradient<span class="br0">&#40;</span>direction<span class="sy0">,</span> args<span class="br0">&#41;</span> <span class="br0">&#123;</span>
            <span class="kw2">var</span> bandSets <span class="sy0">=</span> args.<span class="me1">length</span> <span class="sy0">/</span> <span class="nu0">4</span><span class="sy0">;</span>
            <span class="kw2">var</span> startPos <span class="sy0">=</span> <span class="nu0">0</span><span class="sy0">;</span>
&nbsp;
            <span class="kw1">for</span> <span class="br0">&#40;</span><span class="kw2">var</span> bandSetLoop<span class="sy0">=</span><span class="nu0">0</span><span class="sy0">;</span> bandSetLoop<span class="sy0">&lt;</span>bandSets<span class="sy0">;</span> bandSetLoop<span class="sy0">++</span><span class="br0">&#41;</span> <span class="br0">&#123;</span>
                fadeFromColour <span class="sy0">=</span> args<span class="br0">&#91;</span>bandSetLoop <span class="sy0">*</span> <span class="nu0">4</span><span class="br0">&#93;</span><span class="sy0">;</span>
                fadeToColour <span class="sy0">=</span> args<span class="br0">&#91;</span>bandSetLoop <span class="sy0">*</span> <span class="nu0">4</span> <span class="sy0">+</span> <span class="nu0">1</span><span class="br0">&#93;</span><span class="sy0">;</span>
                bandSize <span class="sy0">=</span> args<span class="br0">&#91;</span>bandSetLoop <span class="sy0">*</span> <span class="nu0">4</span> <span class="sy0">+</span> <span class="nu0">2</span><span class="br0">&#93;</span><span class="sy0">;</span>
                fadeSteps <span class="sy0">=</span> args<span class="br0">&#91;</span>bandSetLoop <span class="sy0">*</span> <span class="nu0">4</span> <span class="sy0">+</span> <span class="nu0">3</span><span class="br0">&#93;</span><span class="sy0">;</span>
&nbsp;
                <span class="co1">// calculate stepped colour values for each band</span>
                <span class="kw2">var</span> colourSteps <span class="sy0">=</span> <span class="br0">&#91;</span>fadeFromColour.<span class="me1">concat</span><span class="br0">&#40;</span><span class="br0">&#41;</span><span class="br0">&#93;</span><span class="sy0">;</span>                <span class="co1">// ensure first colour is the start colour</span>
                <span class="kw1">for</span> <span class="br0">&#40;</span><span class="kw2">var</span> bandLoop<span class="sy0">=</span><span class="nu0">1</span><span class="sy0">;</span> bandLoop<span class="sy0">&lt;</span>fadeSteps<span class="sy0">;</span> bandLoop<span class="sy0">++</span><span class="br0">&#41;</span> <span class="br0">&#123;</span>
                    colourSteps<span class="br0">&#91;</span>bandLoop<span class="br0">&#93;</span> <span class="sy0">=</span> <span class="br0">&#91;</span><span class="br0">&#93;</span><span class="sy0">;</span>
                    <span class="kw1">for</span> <span class="br0">&#40;</span><span class="kw2">var</span> rgbLoop<span class="sy0">=</span><span class="nu0">0</span><span class="sy0">;</span> rgbLoop<span class="sy0">&lt;</span><span class="nu0">3</span><span class="sy0">;</span> rgbLoop<span class="sy0">++</span><span class="br0">&#41;</span> <span class="br0">&#123;</span>
                        colourSteps<span class="br0">&#91;</span>bandLoop<span class="br0">&#93;</span><span class="br0">&#91;</span>rgbLoop<span class="br0">&#93;</span> <span class="sy0">=</span> Math.<span class="me1">round</span><span class="br0">&#40;</span>colourSteps<span class="br0">&#91;</span>bandLoop<span class="sy0">-</span><span class="nu0">1</span><span class="br0">&#93;</span><span class="br0">&#91;</span>rgbLoop<span class="br0">&#93;</span> <span class="sy0">+</span> <span class="br0">&#40;</span><span class="br0">&#40;</span>fadeToColour<span class="br0">&#91;</span>rgbLoop<span class="br0">&#93;</span> <span class="sy0">-</span> colourSteps<span class="br0">&#91;</span>bandLoop<span class="sy0">-</span><span class="nu0">1</span><span class="br0">&#93;</span><span class="br0">&#91;</span>rgbLoop<span class="br0">&#93;</span><span class="br0">&#41;</span> <span class="sy0">/</span> <span class="br0">&#40;</span>fadeSteps <span class="sy0">-</span> bandLoop<span class="br0">&#41;</span><span class="br0">&#41;</span><span class="br0">&#41;</span><span class="sy0">;</span>
                    <span class="br0">&#125;</span>
                <span class="br0">&#125;</span>
&nbsp;
                <span class="co1">// now draw each band</span>
                <span class="kw1">if</span> <span class="br0">&#40;</span>direction <span class="sy0">==</span> <span class="st0">'V'</span><span class="br0">&#41;</span> <span class="br0">&#123;</span>
                    <span class="kw1">for</span> <span class="br0">&#40;</span><span class="kw2">var</span> bandLoop<span class="sy0">=</span><span class="nu0">0</span><span class="sy0">;</span> bandLoop<span class="sy0">&lt;</span>fadeSteps<span class="sy0">;</span> bandLoop<span class="sy0">++</span><span class="br0">&#41;</span> <span class="br0">&#123;</span>
                        document.<span class="me1">getElementById</span><span class="br0">&#40;</span><span class="st0">'fadeBandsV'</span><span class="br0">&#41;</span>.<span class="me1">appendChild</span><span class="br0">&#40;</span>aDiv <span class="sy0">=</span> document.<span class="me1">createElement</span><span class="br0">&#40;</span><span class="st0">'div'</span><span class="br0">&#41;</span><span class="br0">&#41;</span><span class="sy0">;</span>
                        aDiv.<span class="me1">style</span>.<span class="me1">height</span> <span class="sy0">=</span> bandSize <span class="sy0">+</span> <span class="st0">'px'</span><span class="sy0">;</span>
                        aDiv.<span class="me1">style</span>.<span class="me1">top</span> <span class="sy0">=</span> startPos <span class="sy0">+</span> <span class="br0">&#40;</span>bandSize <span class="sy0">*</span> bandLoop<span class="br0">&#41;</span> <span class="sy0">+</span> <span class="st0">'px'</span><span class="sy0">;</span>
                        aDiv.<span class="me1">style</span>.<span class="me1">backgroundColor</span> <span class="sy0">=</span> <span class="st0">'rgb('</span> <span class="sy0">+</span> colourSteps<span class="br0">&#91;</span>bandLoop<span class="br0">&#93;</span><span class="br0">&#91;</span><span class="nu0">0</span><span class="br0">&#93;</span> <span class="sy0">+</span> <span class="st0">','</span> <span class="sy0">+</span> colourSteps<span class="br0">&#91;</span>bandLoop<span class="br0">&#93;</span><span class="br0">&#91;</span><span class="nu0">1</span><span class="br0">&#93;</span> <span class="sy0">+</span> <span class="st0">','</span> <span class="sy0">+</span> colourSteps<span class="br0">&#91;</span>bandLoop<span class="br0">&#93;</span><span class="br0">&#91;</span><span class="nu0">2</span><span class="br0">&#93;</span> <span class="sy0">+</span> <span class="st0">')'</span><span class="sy0">;</span>
                    <span class="br0">&#125;</span>
                <span class="br0">&#125;</span> <span class="kw1">else</span> <span class="br0">&#123;</span>
                    <span class="kw1">for</span> <span class="br0">&#40;</span><span class="kw2">var</span> bandLoop<span class="sy0">=</span><span class="nu0">0</span><span class="sy0">;</span> bandLoop<span class="sy0">&lt;</span>fadeSteps<span class="sy0">;</span> bandLoop<span class="sy0">++</span><span class="br0">&#41;</span> <span class="br0">&#123;</span>
                        document.<span class="me1">getElementById</span><span class="br0">&#40;</span><span class="st0">'fadeBandsH'</span><span class="br0">&#41;</span>.<span class="me1">appendChild</span><span class="br0">&#40;</span>aDiv <span class="sy0">=</span> document.<span class="me1">createElement</span><span class="br0">&#40;</span><span class="st0">'div'</span><span class="br0">&#41;</span><span class="br0">&#41;</span><span class="sy0">;</span>
                        aDiv.<span class="me1">style</span>.<span class="me1">width</span> <span class="sy0">=</span> bandSize <span class="sy0">+</span> <span class="st0">'px'</span><span class="sy0">;</span>
                        aDiv.<span class="me1">style</span>.<span class="me1">left</span> <span class="sy0">=</span> startPos <span class="sy0">+</span> <span class="br0">&#40;</span>bandSize <span class="sy0">*</span> bandLoop<span class="br0">&#41;</span> <span class="sy0">+</span> <span class="st0">'px'</span><span class="sy0">;</span>
                        aDiv.<span class="me1">style</span>.<span class="me1">backgroundColor</span> <span class="sy0">=</span> <span class="st0">'rgb('</span> <span class="sy0">+</span> colourSteps<span class="br0">&#91;</span>bandLoop<span class="br0">&#93;</span><span class="br0">&#91;</span><span class="nu0">0</span><span class="br0">&#93;</span> <span class="sy0">+</span> <span class="st0">','</span> <span class="sy0">+</span> colourSteps<span class="br0">&#91;</span>bandLoop<span class="br0">&#93;</span><span class="br0">&#91;</span><span class="nu0">1</span><span class="br0">&#93;</span> <span class="sy0">+</span> <span class="st0">','</span> <span class="sy0">+</span> colourSteps<span class="br0">&#91;</span>bandLoop<span class="br0">&#93;</span><span class="br0">&#91;</span><span class="nu0">2</span><span class="br0">&#93;</span> <span class="sy0">+</span> <span class="st0">')'</span><span class="sy0">;</span>
                    <span class="br0">&#125;</span>
                <span class="br0">&#125;</span>
                startPos <span class="sy0">+=</span> fadeSteps <span class="sy0">*</span> bandSize<span class="sy0">;</span>
            <span class="br0">&#125;</span>
        <span class="br0">&#125;</span>
&nbsp;
        <span class="co1">// createGradientV - creates a vertical gradient (North to South)</span>
        <span class="co1">// Parameters: createGradientV takes a single set, or multiple sets of, 4 arguments:</span>
        <span class="co1">//         argument 1: fadeFromColour = an array of R,G,B colours to fade from (for example, [0, 0, 255] == #0000FF)</span>
        <span class="co1">//         argument 2: fadeToColour = an array of R,G,B colours to fade to (for example, [0, 204, 255] == #00CCFF)</span>
        <span class="co1">//         argument 3: bandHeight = height of each colour band</span>
        <span class="co1">//         argument 4: fadeSteps = number of colour bands used for the gradient (should be at least 2)</span>
        <span class="kw2">function</span> createGradientV<span class="br0">&#40;</span><span class="br0">&#41;</span> <span class="br0">&#123;</span>
            <span class="kw1">if</span> <span class="br0">&#40;</span>arguments.<span class="me1">length</span> <span class="sy0">&lt;</span> <span class="nu0">1</span> <span class="sy0">||</span> arguments.<span class="me1">length</span> <span class="sy0">%</span> <span class="nu0">4</span> <span class="sy0">!=</span> <span class="nu0">0</span><span class="br0">&#41;</span> <span class="br0">&#123;</span>
                <span class="kw3">alert</span><span class="br0">&#40;</span><span class="st0">'Incorrect usage. Number of parameters must be a multiple of 4!'</span><span class="br0">&#41;</span><span class="sy0">;</span>
                <span class="kw1">return</span><span class="sy0">;</span>
            <span class="br0">&#125;</span>
            createGradient<span class="br0">&#40;</span><span class="st0">'V'</span><span class="sy0">,</span> arguments<span class="br0">&#41;</span><span class="sy0">;</span>
        <span class="br0">&#125;</span>
&nbsp;
        <span class="co1">// createGradientH - creates a horizontal gradient (West to East)</span>
        <span class="co1">// Parameters: createGradientH takes a single set, or multiple sets of, 4 arguments:</span>
        <span class="co1">//         argument 1: fadeFromColour = an array of R,G,B colours to fade from (for example, [0, 0, 255] == #0000FF)</span>
        <span class="co1">//         argument 2: fadeToColour = an array of R,G,B colours to fade to (for example, [0, 204, 255] == #00CCFF)</span>
        <span class="co1">//         argument 3: bandHeight = height of each colour band</span>
        <span class="co1">//         argument 4: fadeSteps = number of colour bands used for the gradient (should be at least 2)</span>
        <span class="kw2">function</span> createGradientH<span class="br0">&#40;</span><span class="br0">&#41;</span> <span class="br0">&#123;</span>
            <span class="kw1">if</span> <span class="br0">&#40;</span>arguments.<span class="me1">length</span> <span class="sy0">&lt;</span> <span class="nu0">1</span> <span class="sy0">||</span> arguments.<span class="me1">length</span> <span class="sy0">%</span> <span class="nu0">4</span> <span class="sy0">!=</span> <span class="nu0">0</span><span class="br0">&#41;</span> <span class="br0">&#123;</span>
                <span class="kw3">alert</span><span class="br0">&#40;</span><span class="st0">'Incorrect usage. Number of parameters must be a multiple of 4!'</span><span class="br0">&#41;</span><span class="sy0">;</span>
                <span class="kw1">return</span><span class="sy0">;</span>
            <span class="br0">&#125;</span>
            createGradient<span class="br0">&#40;</span><span class="st0">'H'</span><span class="sy0">,</span> arguments<span class="br0">&#41;</span><span class="sy0">;</span>
        <span class="br0">&#125;</span>
&nbsp;
        <span class="kw2">function</span> drawGradient<span class="br0">&#40;</span><span class="br0">&#41;</span> <span class="br0">&#123;</span>
            createGradientV<span class="br0">&#40;</span><span class="br0">&#91;</span><span class="nu0">255</span><span class="sy0">,</span> <span class="nu0">0</span><span class="sy0">,</span> <span class="nu0">0</span><span class="br0">&#93;</span><span class="sy0">,</span> <span class="br0">&#91;</span><span class="nu0">255</span><span class="sy0">,</span> <span class="nu0">255</span><span class="sy0">,</span> <span class="nu0">0</span><span class="br0">&#93;</span><span class="sy0">,</span> <span class="nu0">3</span><span class="sy0">,</span> <span class="nu0">50</span><span class="sy0">,</span> <span class="br0">&#91;</span><span class="nu0">255</span><span class="sy0">,</span> <span class="nu0">255</span><span class="sy0">,</span> <span class="nu0">0</span><span class="br0">&#93;</span><span class="sy0">,</span> <span class="br0">&#91;</span><span class="nu0">0</span><span class="sy0">,</span> <span class="nu0">0</span><span class="sy0">,</span> <span class="nu0">255</span><span class="br0">&#93;</span><span class="sy0">,</span> <span class="nu0">3</span><span class="sy0">,</span> <span class="nu0">50</span><span class="sy0">,</span> <span class="br0">&#91;</span><span class="nu0">0</span><span class="sy0">,</span> <span class="nu0">0</span><span class="sy0">,</span> <span class="nu0">255</span><span class="br0">&#93;</span><span class="sy0">,</span> <span class="br0">&#91;</span><span class="nu0">0</span><span class="sy0">,</span> <span class="nu0">204</span><span class="sy0">,</span> <span class="nu0">255</span><span class="br0">&#93;</span><span class="sy0">,</span> <span class="nu0">3</span><span class="sy0">,</span> <span class="nu0">50</span><span class="br0">&#41;</span><span class="sy0">;</span>
            createGradientH<span class="br0">&#40;</span><span class="br0">&#91;</span><span class="nu0">255</span><span class="sy0">,</span> <span class="nu0">0</span><span class="sy0">,</span> <span class="nu0">0</span><span class="br0">&#93;</span><span class="sy0">,</span> <span class="br0">&#91;</span><span class="nu0">255</span><span class="sy0">,</span> <span class="nu0">255</span><span class="sy0">,</span> <span class="nu0">255</span><span class="br0">&#93;</span><span class="sy0">,</span> <span class="nu0">3</span><span class="sy0">,</span> <span class="nu0">50</span><span class="sy0">,</span> <span class="br0">&#91;</span><span class="nu0">255</span><span class="sy0">,</span> <span class="nu0">255</span><span class="sy0">,</span> <span class="nu0">255</span><span class="br0">&#93;</span><span class="sy0">,</span> <span class="br0">&#91;</span><span class="nu0">0</span><span class="sy0">,</span> <span class="nu0">0</span><span class="sy0">,</span> <span class="nu0">255</span><span class="br0">&#93;</span><span class="sy0">,</span> <span class="nu0">3</span><span class="sy0">,</span> <span class="nu0">50</span><span class="br0">&#41;</span><span class="sy0">;</span>
        <span class="br0">&#125;</span>
&nbsp;
    <span class="co1">//--&gt;</span>
    <span class="sy0">&lt;/</span>script<span class="sy0">&gt;</span>
&lt;/head&gt;
&nbsp;
&lt;body onload=&quot;drawGradient();&quot;&gt;
    &lt;div id=&quot;fadeBandsV&quot;&gt;&lt;/div&gt;
    &lt;div id=&quot;fadeBandsH&quot;&gt;&lt;/div&gt;
    &lt;div id=&quot;pageContent&quot;&gt;
        &lt;h1&gt;A test heading&lt;/h1&gt;
        &lt;p&gt;Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Cras lorem. Proin laoreet fringilla sem. Pellentesque malesuada, urna tristique ornare feugiat, turpis wisi ultrices nisl, ac vulputate dolor justo non sapien. Sed fermentum velit. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Etiam at nulla. Maecenas tortor nulla, adipiscing eget, auctor sed, cursus id, quam. Suspendisse at sem nonummy orci lobortis ultrices. Proin odio est, dictum id, dictum nec, ullamcorper sit amet, sem. Proin ullamcorper lacus vitae risus. Nulla feugiat posuere erat. In nec est ac eros lacinia congue. Suspendisse potenti. In a ipsum rhoncus ipsum volutpat consectetuer.&lt;/p&gt;
        &lt;p&gt;Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Cras lorem. Proin laoreet fringilla sem. Pellentesque malesuada, urna tristique ornare feugiat, turpis wisi ultrices nisl, ac vulputate dolor justo non sapien. Sed fermentum velit. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Etiam at nulla. Maecenas tortor nulla, adipiscing eget, auctor sed, cursus id, quam. Suspendisse at sem nonummy orci lobortis ultrices. Proin odio est, dictum id, dictum nec, ullamcorper sit amet, sem. Proin ullamcorper lacus vitae risus. Nulla feugiat posuere erat. In nec est ac eros lacinia congue. Suspendisse potenti. In a ipsum rhoncus ipsum volutpat consectetuer.&lt;/p&gt;
    &lt;/div&gt;
&lt;/body&gt;
&lt;/html&gt;</pre></div></div></div>

<div class="tweetthis" style="text-align:left;"><p> <a target="_blank" rel="nofollow" class="tt" href="http://twitter.com/intent/tweet?text=Creating+a+coloured+gradient+background+without+images+http%3A%2F%2Fis.gd%2FhHbaph" title="Post to Twitter"><img class="nothumb" src="http://www.codecouch.com/wp-content/plugins/tweet-this/icons/en/twitter/tt-twitter-big4.png" alt="Post to Twitter" /></a></p></div>]]></content:encoded>
			<wfw:commentRss>http://www.codecouch.com/2006/05/creating-a-coloured-gradient-background-without-images/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

