<?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>Paul Hayes &#187; parallax</title>
	<atom:link href="http://www.paulrhayes.com/tag/parallax/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.paulrhayes.com</link>
	<description>The web musings and experiments of.</description>
	<lastBuildDate>Sun, 06 Nov 2011 11:31:18 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Auto-scrolling Parallax Effect without JavaScript</title>
		<link>http://www.paulrhayes.com/2009-04/auto-scrolling-parallax-effect-without-javascript/</link>
		<comments>http://www.paulrhayes.com/2009-04/auto-scrolling-parallax-effect-without-javascript/#comments</comments>
		<pubDate>Thu, 02 Apr 2009 07:40:16 +0000</pubDate>
		<dc:creator>Paul Hayes</dc:creator>
				<category><![CDATA[Experiments]]></category>
		<category><![CDATA[css3]]></category>
		<category><![CDATA[parallax]]></category>
		<category><![CDATA[transitions]]></category>
		<category><![CDATA[webkit]]></category>

		<guid isPermaLink="false">http://www.fofronline.com/?p=48</guid>
		<description><![CDATA[Recreating the infamous parallax without scripting, using only CSS3.]]></description>
			<content:encoded><![CDATA[<p>Here’s another quick CSS3/WebKit transitions project in the controversial realm of CSS animation. This time I have opted to recreate the popular parallax effect using multiple background images on a single element and the <code>-webkit-transition</code> property (<a href="http://webkit.org/specs/CSSVisualEffects/CSSTransitions.html">documentation</a>). I have based this on Chris Coyier’s <a href="http://css-tricks.com/3d-parralax-background-effect/">parallax tutorial</a>, reusing the star images with permission, the technique itself was coined by <a href="http://clearleft.com/is/paulannett/">Paul Annett</a> (explanation on <a href="http://thinkvitamin.com/features/how-to-recreate-silverbacks-parallax-effect/">Think Vitamin</a>). If you’re not quite sure what parallax is, then Chris and Paul both go into some depth to explain it and <a href="http://en.wikipedia.org/wiki/Parallax">Wikipedia</a> is always helpful.<br />
<span id="more-48"></span></p>
<h3>Result</h3>
<p><a href="/experiments/parallax/#experiment">Experiment: Auto-scrolling CSS3 Parallax Effect</a><br />
Experiment works in Safari 4 Beta and Google Chrome. No JavaScript necessary.</p>
<p class="center"><img src="http://host.trivialbeing.org/up/fofrOnlineAutoScrollingParallax.jpg" alt="Correctly rendered background images for parallax effect" /></p>
<h3>How To</h3>
<p>The HTML markup is fairly simple, one DIV for the background and another for the content, the example uses CSS3’s multiple backgrounds, so no need for extra markup to accommodate all those other images:</p>
<pre class='prettyprint'>
&lt;div id=&quot;background&quot;&gt;&lt;/div&gt;
&lt;div id=&quot;content&quot;&gt;
	Content
&lt;/div&gt;
</pre>
<p>For the CSS the background container is set to a fixed position (for convenience more than anything) and spread across the bottom of the page using the top, left, bottom and right properties. The background images are defined using the background shorthand property with multiple declarations being comma delimited, the first being the top-most. Each of the images has a different position defined in percentage, so as the size of the container changes (e.g. on window resize) the images move disproportionately to each other; creating the impressive parallax effect.</p>
<pre class='prettyprint'>
#background {
	background: url('../images/foreground.png') 5% 5%,
		url('../images/midground.png') 20% 20%,
		url('../images/background.png') 90% 110%;
}
</pre>
<p>Ordinarily this effect is only seen when the page is re-sized or JavaScript is used for animation. My first approach to animation via CSS was to apply the transition to the background-positions, with background-position being an <em>animatable</em> property as defined in the proposed specification. However this doesn’t yet work in the latest WebKit nightly build (r42142), it is a <a href="https://bugs.webkit.org/show_bug.cgi?id=23219">known</a> <a href="http://farukat.es/bugs/webkit-background-pos-trans.html">bug</a>.</p>
<p>As an alternate route, albeit a temporary one, I have opted to use transitions to animate the left-most edge of the background container (for instance from 0px to –100px). This gradually alters the overall width of the container causing the backgrounds to shift disproportionately as per their percentages, creating the parallax effect. With a large enough duration and left position the effect appears to be continuous.</p>
<pre class='prettyprint'>
#background {
	left: 0;
	-webkit-transition: left 300s linear;
}

#experiment:target #background {
	left: -5000px;
}</pre>
<p>To make things a bit more fun I’ve increased the ‘flying speed’ when the mouse hovers over the background area. The final CSS looks like this:</p>
<pre class='prettyprint'>
#background {
	background: url('../images/foreground.png') 5% 5%,
		url('../images/midground.png') 20% 20%,
		url('../images/background.png') 90% 110%;
	top: 218px;
	left: 0;
	right: 0;
	bottom: 0;
	position: fixed;
	-webkit-transition: left 300s linear;
}

#experiment:target #background {
	left: -5000px;
}

#experiment:hover #background {
	left: -9999px;
}
</pre>
]]></content:encoded>
			<wfw:commentRss>http://www.paulrhayes.com/2009-04/auto-scrolling-parallax-effect-without-javascript/feed/</wfw:commentRss>
		<slash:comments>18</slash:comments>
		</item>
	</channel>
</rss>

