<?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>devness &#187; CSS</title>
	<atom:link href="http://devness.com/tag/css/feed/" rel="self" type="application/rss+xml" />
	<link>http://devness.com</link>
	<description>Just another WordPress weblog</description>
	<lastBuildDate>Wed, 01 Jul 2009 21:41:37 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.8</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<xhtml:meta xmlns:xhtml="http://www.w3.org/1999/xhtml" name="robots" content="noindex" />
		<item>
		<title>Playing with Sprites and jQuery: animated menu</title>
		<link>http://devness.com/2009/06/playing-with-sprites-and-jquery-animated-menu/</link>
		<comments>http://devness.com/2009/06/playing-with-sprites-and-jquery-animated-menu/#comments</comments>
		<pubDate>Tue, 23 Jun 2009 14:09:42 +0000</pubDate>
		<dc:creator>dmoena</dc:creator>
				<category><![CDATA[jQuery]]></category>
		<category><![CDATA[web design]]></category>
		<category><![CDATA[web development]]></category>
		<category><![CDATA[CSS]]></category>
		<category><![CDATA[sprites]]></category>

		<guid isPermaLink="false">http://devness.com/?p=54</guid>
		<description><![CDATA[Sprites are widely used on big sites (Yahoo!, Google, Amazon and more) but rarely for &#8220;normal&#8221; projects. I think this is due to two questions that usually stop us when it comes to learn something new: &#8220;how difficult will be to learn this thing?&#8221; and &#8220;will I even use it?&#8221;. Well, I hope to help [...]]]></description>
			<content:encoded><![CDATA[<p>Sprites are widely used on big sites (Yahoo!, Google, Amazon and more) but rarely for &#8220;normal&#8221; projects. I think this is due to two questions that usually stop us when it comes to learn something new: &#8220;how difficult will be to learn this thing?&#8221; and &#8220;will I even use it?&#8221;. Well, I hope to help you with both questions by showing you how easy is to work with sprites/jQuery and how much this would help you to make a difference in your work, for instance by making a nice animated menu like this one:</p>
<p><script type="text/javascript" src="http://devness.com/wp-content/uploads/2009/06/animatedmenudemo.js"></script></p>
<link rel="stylesheet" href="http://devness.com/wp-content/uploads/2009/06/animatedmenudemo.css" type="text/css" media="screen" />
<style>
.item {
    padding:1px;
}
</style>
<div>
<div class="item">
<div id="parent" class="object"></div>
<div id="parentmask" class="mask"></div>
<p>             <a href="#" rel="var xr=20; var xl=6.6;" style="position:absolute;margin-top:-8px">Parents</a>
</div>
<div class="item">
<div id="girl" class="object"></div>
<div id="girlmask" class="mask"></div>
<p>	<a href="#" rel="var xr=47.5; var xl=33;" style="position:absolute;margin-top:-8px">Girls</a>
</div>
<div class="item">
<div id="boy" class="object"></div>
<div id="boymask" class="mask"></div>
<p>	<a href="#" style="position:absolute;margin-top:-8px">Boys</a>
</div>
<div class="item">
<div id="kid" class="object"></div>
<div id="kidmask" class="mask"></div>
<p>	<a href="#" style="position:absolute;margin-top:-8px">Kids</a>
</div>
</div>
<p><span id="more-54"></span></p>
<h2>Our goal</h2>
<p>We want to build an animated menu based on sprites just like previous one. In particular, we will use animated elements to make a more attractive menu, but without using flash or another technology different from JavaScript (jQuery in particular), one image file (otherwise wouldn&#8217;t justify use ) and a calculator.</p>
<h2>Simulating movement</h2>
<p><img class="alignleft" title="steps" src="http://devness.com/wp-content/uploads/2009/06/steps.gif" alt="" /> At the sample menu we can see our tiny people running when you put the mouse pointer over their &#8220;action zone&#8221;. This is accomplished just like any animated image: switching from one image to another and repeating this cycle as long as our character must to run.</p>
<p>In this case we use 4 steps, each one with its respective image (actually we can use only 3 images since we need to repeat one of them during the cycle). Now, lets take this to the sprites world.</p>
<h2>Locating an element over the sprite</h2>
<p>Working with sprites means that we need to know where is every element related to our animation, but in terms of %.</p>
<p>To calculate this as an approximation, we need to know the image&#8217;s width and where our target starts. With this two numbers, we just need to apply simple math to get what we want. </p>
<p><img class="alignleft" title="steps" src="http://devness.com/wp-content/uploads/2009/06/location.gif" alt="" />Previous image is 183 pixels width and second step starts at pixel number 57. So, we should be using approximately 31.15% (57/183 = 0.3115) for every instance of second step (we will probably need to adjust this value a little).</p>
<p><br/><br />
<img class="alignleft" title="steps" src="http://devness.com/wp-content/uploads/2009/06/people.gif" alt="" />By the way, take into account that you can use images as big as this one and even use some subsets (not recommended if you want to save bandwidth). I will leave this image that big so you can play with it.</p>
<h2>Masking</h2>
<p><img class="alignleft" title="steps" src="http://devness.com/wp-content/uploads/2009/06/masking.gif" alt="" />Sprites is all about showing only what you need to show and this is done by masking or hiding what you don&#8217;t want to show. In other words, you need to know the size of every element in order to force it. In this case we can use a 13 x 20 pixels rectangle to show only one frame.</p>
<h2>CSS + HTML</h2>
<p>We can do the first part of our menu by using CSS+HTML and by &#8220;first part&#8221; I mean the static one. By using HTML we set the main structure, consisting of 3 div elements (one main container, one for masking and one for the animated element) and one a (hyperlink) element.</p>
<div class="codesnip-container" >
<div class="codesnip" style="font-family: monospace;"><span class="sc2"><a href="http://december.com/html/4/element/div.html"><span class="kw2">&lt;div</span></a> <span class="kw3">class</span>=<span class="st0">&quot;item&quot;</span><span class="kw2">&gt;</span></span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="sc2"><a href="http://december.com/html/4/element/div.html"><span class="kw2">&lt;div</span></a> <span class="kw3">id</span>=<span class="st0">&quot;doctor&quot;</span> <span class="kw3">class</span>=<span class="st0">&quot;object&quot;</span><span class="kw2">&gt;</span></span><span class="sc2"><span class="kw2">&lt;/div&gt;</span></span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="sc2"><a href="http://december.com/html/4/element/div.html"><span class="kw2">&lt;div</span></a> <span class="kw3">id</span>=<span class="st0">&quot;doctormask&quot;</span> <span class="kw3">class</span>=<span class="st0">&quot;mask&quot;</span><span class="kw2">&gt;</span></span><span class="sc2"><span class="kw2">&lt;/div&gt;</span></span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="sc2"><a href="http://december.com/html/4/element/a.html"><span class="kw2">&lt;a</span></a> <span class="kw3">href</span>=<span class="st0">&quot;#&quot;</span><span class="kw2">&gt;</span></span>Parents<span class="sc2"><span class="kw2">&lt;/a&gt;</span></span><br />
<span class="sc2"><span class="kw2">&lt;/div&gt;</span></span><br />
<span class="sc2"><a href="http://december.com/html/4/element/div.html"><span class="kw2">&lt;div</span></a> <span class="kw3">class</span>=<span class="st0">&quot;item&quot;</span><span class="kw2">&gt;</span></span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="sc2"><a href="http://december.com/html/4/element/div.html"><span class="kw2">&lt;div</span></a> <span class="kw3">id</span>=<span class="st0">&quot;girl&quot;</span> <span class="kw3">class</span>=<span class="st0">&quot;object&quot;</span><span class="kw2">&gt;</span></span><span class="sc2"><span class="kw2">&lt;/div&gt;</span></span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="sc2"><a href="http://december.com/html/4/element/div.html"><span class="kw2">&lt;div</span></a> <span class="kw3">id</span>=<span class="st0">&quot;girlmask&quot;</span> <span class="kw3">class</span>=<span class="st0">&quot;mask&quot;</span><span class="kw2">&gt;</span></span><span class="sc2"><span class="kw2">&lt;/div&gt;</span></span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="sc2"><a href="http://december.com/html/4/element/a.html"><span class="kw2">&lt;a</span></a> <span class="kw3">href</span>=<span class="st0">&quot;#&quot;</span><span class="kw2">&gt;</span></span>Geirls<span class="sc2"><span class="kw2">&lt;/a&gt;</span></span><br />
<span class="sc2"><span class="kw2">&lt;/div&gt;</span></span><br />
<span class="sc2"><a href="http://december.com/html/4/element/div.html"><span class="kw2">&lt;div</span></a> <span class="kw3">class</span>=<span class="st0">&quot;item&quot;</span><span class="kw2">&gt;</span></span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="sc2"><a href="http://december.com/html/4/element/div.html"><span class="kw2">&lt;div</span></a> <span class="kw3">id</span>=<span class="st0">&quot;boy&quot;</span> <span class="kw3">class</span>=<span class="st0">&quot;object&quot;</span><span class="kw2">&gt;</span></span><span class="sc2"><span class="kw2">&lt;/div&gt;</span></span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="sc2"><a href="http://december.com/html/4/element/div.html"><span class="kw2">&lt;div</span></a> <span class="kw3">id</span>=<span class="st0">&quot;boymask&quot;</span> <span class="kw3">class</span>=<span class="st0">&quot;mask&quot;</span><span class="kw2">&gt;</span></span><span class="sc2"><span class="kw2">&lt;/div&gt;</span></span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="sc2"><a href="http://december.com/html/4/element/a.html"><span class="kw2">&lt;a</span></a> <span class="kw3">href</span>=<span class="st0">&quot;#&quot;</span><span class="kw2">&gt;</span></span>Boys<span class="sc2"><span class="kw2">&lt;/a&gt;</span></span><br />
<span class="sc2"><span class="kw2">&lt;/div&gt;</span></span><br />
<span class="sc2"><a href="http://december.com/html/4/element/div.html"><span class="kw2">&lt;div</span></a> <span class="kw3">class</span>=<span class="st0">&quot;item&quot;</span><span class="kw2">&gt;</span></span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="sc2"><a href="http://december.com/html/4/element/div.html"><span class="kw2">&lt;div</span></a> <span class="kw3">id</span>=<span class="st0">&quot;kid&quot;</span> <span class="kw3">class</span>=<span class="st0">&quot;object&quot;</span><span class="kw2">&gt;</span></span><span class="sc2"><span class="kw2">&lt;/div&gt;</span></span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="sc2"><a href="http://december.com/html/4/element/div.html"><span class="kw2">&lt;div</span></a> <span class="kw3">id</span>=<span class="st0">&quot;kidmask&quot;</span> <span class="kw3">class</span>=<span class="st0">&quot;mask&quot;</span><span class="kw2">&gt;</span></span><span class="sc2"><span class="kw2">&lt;/div&gt;</span></span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="sc2"><a href="http://december.com/html/4/element/a.html"><span class="kw2">&lt;a</span></a> <span class="kw3">href</span>=<span class="st0">&quot;#&quot;</span><span class="kw2">&gt;</span></span>Kids<span class="sc2"><span class="kw2">&lt;/a&gt;</span></span><br />
<span class="sc2"><span class="kw2">&lt;/div&gt;</span></span></div>
</div>
<p>CSS code let us set initial positions for every animated element and its respective mask. Also, each container is set according to our needs.</p>
<div class="codesnip-container" >
<div class="codesnip" style="font-family: monospace;">body <span class="br0">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">background</span>:<span class="re0">#eeeeee</span>;<br />
<span class="br0">&#125;</span></p>
<p><span class="re0">#parent</span> <span class="br0">&#123;</span> <br />
&nbsp; &nbsp; &nbsp; &nbsp; width<span class="re2">:<span class="re3">14px</span></span>;<br />
&nbsp; &nbsp; &nbsp; &nbsp; height<span class="re2">:<span class="re3">20px</span></span>; <br />
&nbsp; &nbsp; &nbsp; &nbsp; background<span class="re2">:url</span><span class="br0">&#40;</span>people<span class="re1">.gif</span><span class="br0">&#41;</span>; <br />
&nbsp; &nbsp; &nbsp; &nbsp; background-position<span class="re2">:<span class="nu0">0</span></span>% <span class="re3"><span class="nu0">0</span>%</span>; <br />
&nbsp; &nbsp; &nbsp; &nbsp; border<span class="re2">:none</span>;<br />
&nbsp; &nbsp; &nbsp; &nbsp; position<span class="re2">:absolute</span>;<br />
&nbsp; &nbsp; &nbsp; &nbsp; z-index<span class="re2">:<span class="nu0">10</span></span>;<br />
<span class="br0">&#125;</span></p>
<p><span class="re0">#parentmask</span> <span class="br0">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">background</span>:<span class="re0">#ffffff</span>; <br />
&nbsp; &nbsp; &nbsp; &nbsp; width<span class="re2">:<span class="re3">120px</span></span>;<br />
&nbsp; &nbsp; &nbsp; &nbsp; height<span class="re2">:<span class="re3">20px</span></span>;<br />
&nbsp; &nbsp; &nbsp; &nbsp; position<span class="re2">:absolute</span>;<br />
&nbsp; &nbsp; &nbsp; &nbsp; z-index<span class="re2">:<span class="nu0">1</span></span>;<br />
&nbsp; &nbsp; &nbsp; &nbsp; margin-left<span class="re2">:<span class="re3">8px</span></span>;<br />
<span class="br0">&#125;</span></p>
<p><span class="re0">#girl</span> <span class="br0">&#123;</span> <br />
&nbsp; &nbsp; &nbsp; &nbsp; width<span class="re2">:<span class="re3">16px</span></span>;<br />
&nbsp; &nbsp; &nbsp; &nbsp; height<span class="re2">:<span class="re3">20px</span></span>; <br />
&nbsp; &nbsp; &nbsp; &nbsp; background<span class="re2">:url</span><span class="br0">&#40;</span>people<span class="re1">.gif</span><span class="br0">&#41;</span>; <br />
&nbsp; &nbsp; &nbsp; &nbsp; background-position<span class="re2">:<span class="nu0">27</span></span><span class="re1">.<span class="nu0">2</span></span>% <span class="re3"><span class="nu0">0</span>%</span>; <br />
&nbsp; &nbsp; &nbsp; &nbsp; border<span class="re2">:none</span>;<br />
&nbsp; &nbsp; &nbsp; &nbsp; position<span class="re2">:absolute</span>;<br />
&nbsp; &nbsp; &nbsp; &nbsp; z-index<span class="re2">:<span class="nu0">10</span></span>;<br />
<span class="br0">&#125;</span></p>
<p><span class="re0">#girlmask</span> <span class="br0">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">background</span>:<span class="re0">#ffffff</span>; <br />
&nbsp; &nbsp; &nbsp; &nbsp; width<span class="re2">:<span class="re3">120px</span></span>;<br />
&nbsp; &nbsp; &nbsp; &nbsp; height<span class="re2">:<span class="re3">20px</span></span>;<br />
&nbsp; &nbsp; &nbsp; &nbsp; position<span class="re2">:absolute</span>;<br />
&nbsp; &nbsp; &nbsp; &nbsp; z-index<span class="re2">:<span class="nu0">1</span></span>;<br />
&nbsp; &nbsp; &nbsp; &nbsp; margin-left<span class="re2">:<span class="re3">8px</span></span>;<br />
<span class="br0">&#125;</span></p>
<p><span class="re0">#boy</span> <span class="br0">&#123;</span> <br />
&nbsp; &nbsp; &nbsp; &nbsp; width<span class="re2">:<span class="re3">16px</span></span>;<br />
&nbsp; &nbsp; &nbsp; &nbsp; height<span class="re2">:<span class="re3">20px</span></span>; <br />
&nbsp; &nbsp; &nbsp; &nbsp; background<span class="re2">:url</span><span class="br0">&#40;</span>people<span class="re1">.gif</span><span class="br0">&#41;</span>; <br />
&nbsp; &nbsp; &nbsp; &nbsp; background-position<span class="re2">:<span class="nu0">53</span></span><span class="re1">.<span class="nu0">8</span></span>% <span class="re3"><span class="nu0">0</span>%</span>; <br />
&nbsp; &nbsp; &nbsp; &nbsp; border<span class="re2">:none</span>;<br />
&nbsp; &nbsp; &nbsp; &nbsp; position<span class="re2">:absolute</span>;<br />
&nbsp; &nbsp; &nbsp; &nbsp; z-index<span class="re2">:<span class="nu0">10</span></span>;<br />
<span class="br0">&#125;</span></p>
<p><span class="re0">#boymask</span> <span class="br0">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">background</span>:<span class="re0">#ffffff</span>; <br />
&nbsp; &nbsp; &nbsp; &nbsp; width<span class="re2">:<span class="re3">120px</span></span>;<br />
&nbsp; &nbsp; &nbsp; &nbsp; height<span class="re2">:<span class="re3">20px</span></span>;<br />
&nbsp; &nbsp; &nbsp; &nbsp; position<span class="re2">:absolute</span>;<br />
&nbsp; &nbsp; &nbsp; &nbsp; z-index<span class="re2">:<span class="nu0">1</span></span>;<br />
&nbsp; &nbsp; &nbsp; &nbsp; margin-left<span class="re2">:<span class="re3">8px</span></span>;<br />
<span class="br0">&#125;</span></p>
<p><span class="re0">#kid</span> <span class="br0">&#123;</span> <br />
&nbsp; &nbsp; &nbsp; &nbsp; width<span class="re2">:<span class="re3">16px</span></span>;<br />
&nbsp; &nbsp; &nbsp; &nbsp; height<span class="re2">:<span class="re3">20px</span></span>; <br />
&nbsp; &nbsp; &nbsp; &nbsp; background<span class="re2">:url</span><span class="br0">&#40;</span>people<span class="re1">.gif</span><span class="br0">&#41;</span>; <br />
&nbsp; &nbsp; &nbsp; &nbsp; background-position<span class="re2">:<span class="nu0">79</span></span><span class="re1">.<span class="nu0">9</span></span>% <span class="re3"><span class="nu0">0</span>%</span>; <br />
&nbsp; &nbsp; &nbsp; &nbsp; border<span class="re2">:none</span>;<br />
&nbsp; &nbsp; &nbsp; &nbsp; position<span class="re2">:absolute</span>;<br />
&nbsp; &nbsp; &nbsp; &nbsp; z-index<span class="re2">:<span class="nu0">10</span></span>;<br />
<span class="br0">&#125;</span></p>
<p><span class="re0">#kidmask</span> <span class="br0">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">background</span>:<span class="re0">#ffffff</span>; <br />
&nbsp; &nbsp; &nbsp; &nbsp; width<span class="re2">:<span class="re3">120px</span></span>;<br />
&nbsp; &nbsp; &nbsp; &nbsp; height<span class="re2">:<span class="re3">20px</span></span>;<br />
&nbsp; &nbsp; &nbsp; &nbsp; position<span class="re2">:absolute</span>;<br />
&nbsp; &nbsp; &nbsp; &nbsp; z-index<span class="re2">:<span class="nu0">1</span></span>;<br />
&nbsp; &nbsp; &nbsp; &nbsp; margin-left<span class="re2">:<span class="re3">8px</span></span>;<br />
<span class="br0">&#125;</span></p>
<p><span class="re1">.item</span> <span class="br0">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">background</span>:<span class="re0">#cccccc</span>;<br />
&nbsp; &nbsp; &nbsp; &nbsp; width<span class="re2">:<span class="re3">128px</span></span>;<br />
&nbsp; &nbsp; &nbsp; &nbsp; height<span class="re2">:<span class="re3">20px</span></span>;<br />
<span class="br0">&#125;</span></p>
<p><span class="re1">.item</span> a <span class="br0">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; margin-left<span class="re2">:<span class="re3">20px</span></span>;<br />
<span class="br0">&#125;</span></div>
</div>
<p><img class="alignleft" title="steps" src="http://devness.com/wp-content/uploads/2009/06/static.gif" alt="" />Lets take a look to the #boy element, which tell us that its size is 16&#215;20 pixels, share its background image with the other elements (people.gif, otherwise there is no point to use sprites&#8230;) and that we want to show starts at 53.8% from the left side and at 0% starting at the top of the image. The same is valid for any other element.</p>
<p>As a result of this CSS+HTML code, we get something like this, which is nice, but pretty boring.</p>
<h2>jQuery</h2>
<p>First thing I did, was to create some control variables that allow me to map each element with its respective background position and to keep control of the animation process (lie! some variables were created as needed&#8230; but I&#8217;ll ignore this for educational purposes), and also a couple of utility functions.</p>
<div class="codesnip-container" >
<div class="codesnip" style="font-family: monospace;"><span class="kw2">var</span> foot = <span class="br0">&#91;</span><span class="nu0">50</span>,<span class="nu0">0</span>,<span class="nu0">100</span>,<span class="nu0">0</span><span class="br0">&#93;</span>;<br />
<span class="kw2">var</span> step = <span class="nu0">12</span>;<br />
<span class="kw2">var</span> sleeptime = <span class="nu0">70</span>;<br />
<span class="kw2">var</span> mapping = Array<span class="br0">&#40;</span><span class="br0">&#41;</span>;<br />
mapping<span class="br0">&#91;</span><span class="st0">&quot;parent&quot;</span><span class="br0">&#93;</span> = <span class="br0">&#123;</span> xr:<span class="nu0">20</span>, xl:<span class="nu0">6.6</span>, np:<span class="st0">&quot;0% 0%&quot;</span> <span class="br0">&#125;</span>;<br />
mapping<span class="br0">&#91;</span><span class="st0">&quot;girl&quot;</span><span class="br0">&#93;</span> = <span class="br0">&#123;</span> xr:<span class="nu0">47.5</span>, xl:<span class="nu0">33</span>, np:<span class="st0">&quot;27.2% 0%&quot;</span> <span class="br0">&#125;</span>;<br />
mapping<span class="br0">&#91;</span><span class="st0">&quot;boy&quot;</span><span class="br0">&#93;</span> = <span class="br0">&#123;</span> xr:<span class="nu0">74</span>, xl:<span class="nu0">60.4</span>, np:<span class="st0">&quot;53.8% 0%&quot;</span> <span class="br0">&#125;</span>;<br />
mapping<span class="br0">&#91;</span><span class="st0">&quot;kid&quot;</span><span class="br0">&#93;</span> = <span class="br0">&#123;</span> xr:<span class="nu0">100</span>, xl:<span class="nu0">87</span>, np:<span class="st0">&quot;79.9% 0%&quot;</span> <span class="br0">&#125;</span>;</p>
<p>px = <span class="kw2">function</span><span class="br0">&#40;</span>val<span class="br0">&#41;</span><span class="br0">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">return</span> String<span class="br0">&#40;</span>val<span class="br0">&#41;</span>+<span class="st0">&quot;px&quot;</span>;<br />
<span class="br0">&#125;</span></p>
<p>mpx = <span class="kw2">function</span><span class="br0">&#40;</span>val<span class="br0">&#41;</span><span class="br0">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">if</span><span class="br0">&#40;</span>val == <span class="st0">&quot;auto&quot;</span><span class="br0">&#41;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">return</span> <span class="nu0">0</span>;<br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">return</span> Number<span class="br0">&#40;</span>String<span class="br0">&#40;</span>val<span class="br0">&#41;</span>.<span class="me1">substring</span><span class="br0">&#40;</span><span class="nu0">0</span>,String<span class="br0">&#40;</span>val<span class="br0">&#41;</span>.<span class="me1">length</span> &#8211; <span class="nu0">2</span><span class="br0">&#41;</span><span class="br0">&#41;</span>;<br />
<span class="br0">&#125;</span></div>
</div>
<p>Since we have all these figures horizontally aligned, we use &#8220;foot&#8221; as a common variable to set vertical position of each step while running. For instance, first step is at the middle of the image (50%) and second step is on top of the image (0%) moving from top to bottom.</p>
<p>&#8220;step&#8221; means that we will move our elements at a rate of 12 pixels and waiting 70 miliseconds (sleeptime). &#8220;px&#8221; and &#8220;mpx&#8221; are just to add or remove the string &#8220;px&#8221; of a given argument.</p>
<p>Now, the fun part: animating this menu, which is done by using the next code</p>
<div class="codesnip-container" >
<div class="codesnip" style="font-family: monospace;">$<span class="br0">&#40;</span>document<span class="br0">&#41;</span>.<span class="me1">ready</span><span class="br0">&#40;</span><span class="kw2">function</span><span class="br0">&#40;</span><span class="br0">&#41;</span><span class="br0">&#123;</span></p>
<p>&nbsp; &nbsp; &nbsp; &nbsp; $<span class="br0">&#40;</span><span class="st0">&quot;.item&quot;</span><span class="br0">&#41;</span>.<span class="me1">find</span><span class="br0">&#40;</span><span class="st0">&quot;.mask&quot;</span><span class="br0">&#41;</span>.<span class="me1">css</span><span class="br0">&#40;</span><span class="st0">&quot;opacity&quot;</span>,<span class="st0">&quot;0.8&quot;</span><span class="br0">&#41;</span>;</p>
<p>&nbsp; &nbsp; &nbsp; &nbsp; move = <span class="kw2">function</span><span class="br0">&#40;</span>el,elmask<span class="br0">&#41;</span><span class="br0">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="kw2">var</span> newleft;<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">if</span><span class="br0">&#40;</span>$<span class="br0">&#40;</span>el<span class="br0">&#41;</span>.<span class="me1">data</span><span class="br0">&#40;</span><span class="st0">&quot;direction&quot;</span><span class="br0">&#41;</span> == <span class="st0">&quot;R&quot;</span><span class="br0">&#41;</span><span class="br0">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">if</span><span class="br0">&#40;</span>$<span class="br0">&#40;</span>el<span class="br0">&#41;</span>.<span class="me1">position</span><span class="br0">&#40;</span><span class="br0">&#41;</span>.<span class="me1">left</span> &gt;= $<span class="br0">&#40;</span>el<span class="br0">&#41;</span>.<span class="me1">parent</span><span class="br0">&#40;</span><span class="br0">&#41;</span>.<span class="me1">width</span><span class="br0">&#40;</span><span class="br0">&#41;</span><span class="br0">&#41;</span><span class="br0">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; $<span class="br0">&#40;</span>el<span class="br0">&#41;</span>.<span class="me1">css</span><span class="br0">&#40;</span><span class="st0">&quot;background-position&quot;</span>, mapping<span class="br0">&#91;</span>$<span class="br0">&#40;</span>el<span class="br0">&#41;</span>.<span class="me1">attr</span><span class="br0">&#40;</span><span class="st0">&quot;id&quot;</span><span class="br0">&#41;</span><span class="br0">&#93;</span>.<span class="me1">np</span><span class="br0">&#41;</span>;<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; $<span class="br0">&#40;</span>el<span class="br0">&#41;</span>.<span class="me1">data</span><span class="br0">&#40;</span><span class="st0">&quot;isMoving&quot;</span>,<span class="kw2">false</span><span class="br0">&#41;</span>;<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">return</span>;<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#125;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; newleft = $<span class="br0">&#40;</span>el<span class="br0">&#41;</span>.<span class="me1">position</span><span class="br0">&#40;</span><span class="br0">&#41;</span>.<span class="me1">left</span> + step;<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; newwidth = $<span class="br0">&#40;</span>elmask<span class="br0">&#41;</span>.<span class="me1">width</span><span class="br0">&#40;</span><span class="br0">&#41;</span> &#8211; step;<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; newwidth = <span class="br0">&#40;</span>newwidth &lt; <span class="nu0">0</span><span class="br0">&#41;</span>?<span class="nu0">0</span>:newwidth;<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#125;</span> <span class="kw1">else</span> <span class="br0">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">if</span><span class="br0">&#40;</span>$<span class="br0">&#40;</span>el<span class="br0">&#41;</span>.<span class="me1">position</span><span class="br0">&#40;</span><span class="br0">&#41;</span>.<span class="me1">left</span> &lt;= step<span class="br0">&#41;</span><span class="br0">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; $<span class="br0">&#40;</span>el<span class="br0">&#41;</span>.<span class="me1">css</span><span class="br0">&#40;</span><span class="st0">&quot;background-position&quot;</span>, mapping<span class="br0">&#91;</span>$<span class="br0">&#40;</span>el<span class="br0">&#41;</span>.<span class="me1">attr</span><span class="br0">&#40;</span><span class="st0">&quot;id&quot;</span><span class="br0">&#41;</span><span class="br0">&#93;</span>.<span class="me1">np</span><span class="br0">&#41;</span>;<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; $<span class="br0">&#40;</span>el<span class="br0">&#41;</span>.<span class="me1">data</span><span class="br0">&#40;</span><span class="st0">&quot;isMoving&quot;</span>,<span class="kw2">false</span><span class="br0">&#41;</span>;<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">return</span>;<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#125;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; newleft = $<span class="br0">&#40;</span>el<span class="br0">&#41;</span>.<span class="me1">position</span><span class="br0">&#40;</span><span class="br0">&#41;</span>.<span class="me1">left</span> &#8211; step;<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; newwidth = $<span class="br0">&#40;</span>elmask<span class="br0">&#41;</span>.<span class="me1">width</span><span class="br0">&#40;</span><span class="br0">&#41;</span> + step;<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#125;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">if</span><span class="br0">&#40;</span>$<span class="br0">&#40;</span>el<span class="br0">&#41;</span>.<span class="me1">data</span><span class="br0">&#40;</span><span class="st0">&quot;index&quot;</span><span class="br0">&#41;</span> == <span class="nu0">4</span><span class="br0">&#41;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; $<span class="br0">&#40;</span>el<span class="br0">&#41;</span>.<span class="me1">data</span><span class="br0">&#40;</span><span class="st0">&quot;index&quot;</span>,<span class="nu0">0</span><span class="br0">&#41;</span>;<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="kw2">var</span> y = foot<span class="br0">&#91;</span><span class="br0">&#40;</span>$<span class="br0">&#40;</span>el<span class="br0">&#41;</span>.<span class="me1">data</span><span class="br0">&#40;</span><span class="st0">&quot;index&quot;</span><span class="br0">&#41;</span><span class="br0">&#41;</span><span class="br0">&#93;</span>;<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; $<span class="br0">&#40;</span>el<span class="br0">&#41;</span>.<span class="me1">data</span><span class="br0">&#40;</span><span class="st0">&quot;index&quot;</span>,<span class="br0">&#40;</span>$<span class="br0">&#40;</span>el<span class="br0">&#41;</span>.<span class="me1">data</span><span class="br0">&#40;</span><span class="st0">&quot;index&quot;</span><span class="br0">&#41;</span><span class="nu0">+1</span><span class="br0">&#41;</span><span class="br0">&#41;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; $<span class="br0">&#40;</span>el<span class="br0">&#41;</span>.<span class="me1">css</span><span class="br0">&#40;</span><span class="st0">&quot;background-position&quot;</span>,$<span class="br0">&#40;</span>el<span class="br0">&#41;</span>.<span class="me1">data</span><span class="br0">&#40;</span><span class="st0">&quot;x&quot;</span><span class="br0">&#41;</span>+<span class="st0">&quot;% &quot;</span>+y+<span class="st0">&quot;%&quot;</span><span class="br0">&#41;</span>.<span class="me1">css</span><span class="br0">&#40;</span><span class="st0">&quot;left&quot;</span>,px<span class="br0">&#40;</span>newleft<span class="br0">&#41;</span><span class="br0">&#41;</span>;<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; $<span class="br0">&#40;</span>elmask<span class="br0">&#41;</span>.<span class="me1">css</span><span class="br0">&#40;</span><span class="st0">&quot;left&quot;</span>,px<span class="br0">&#40;</span>newleft<span class="br0">&#41;</span><span class="br0">&#41;</span>.<span class="me1">css</span><span class="br0">&#40;</span><span class="st0">&quot;width&quot;</span>,px<span class="br0">&#40;</span>newwidth<span class="br0">&#41;</span><span class="br0">&#41;</span>;<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; setTimeout<span class="br0">&#40;</span><span class="kw2">function</span><span class="br0">&#40;</span><span class="br0">&#41;</span><span class="br0">&#123;</span> move<span class="br0">&#40;</span>el,elmask<span class="br0">&#41;</span>; <span class="br0">&#125;</span>,sleeptime<span class="br0">&#41;</span>;<br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#125;</span></p>
<p>&nbsp; &nbsp; &nbsp; &nbsp; $<span class="br0">&#40;</span><span class="st0">&quot;.item&quot;</span><span class="br0">&#41;</span>.<span class="me1">each</span><span class="br0">&#40;</span><span class="kw2">function</span><span class="br0">&#40;</span><span class="br0">&#41;</span><span class="br0">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; $<span class="br0">&#40;</span><span class="kw1">this</span><span class="br0">&#41;</span>.<span class="me1">find</span><span class="br0">&#40;</span><span class="st0">&quot;.object&quot;</span><span class="br0">&#41;</span>.<span class="me1">data</span><span class="br0">&#40;</span><span class="st0">&quot;isMoving&quot;</span>,<span class="kw2">false</span><span class="br0">&#41;</span>;<br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#125;</span><span class="br0">&#41;</span>;</p>
<p>&nbsp; &nbsp; &nbsp; &nbsp; $<span class="br0">&#40;</span><span class="st0">&quot;.item&quot;</span><span class="br0">&#41;</span>.<span class="me1">mouseenter</span><span class="br0">&#40;</span><span class="kw2">function</span><span class="br0">&#40;</span>e<span class="br0">&#41;</span><span class="br0">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="kw2">var</span> obj = $<span class="br0">&#40;</span><span class="kw1">this</span><span class="br0">&#41;</span>.<span class="me1">find</span><span class="br0">&#40;</span><span class="st0">&quot;.object&quot;</span><span class="br0">&#41;</span>;<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">eval</span><span class="br0">&#40;</span>$<span class="br0">&#40;</span><span class="kw1">this</span><span class="br0">&#41;</span>.<span class="me1">find</span><span class="br0">&#40;</span><span class="st0">&quot;a&quot;</span><span class="br0">&#41;</span>.<span class="me1">attr</span><span class="br0">&#40;</span><span class="st0">&quot;rel&quot;</span><span class="br0">&#41;</span><span class="br0">&#41;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; obj.<span class="me1">data</span><span class="br0">&#40;</span><span class="st0">&quot;x&quot;</span>,mapping<span class="br0">&#91;</span>obj.<span class="me1">attr</span><span class="br0">&#40;</span><span class="st0">&quot;id&quot;</span><span class="br0">&#41;</span><span class="br0">&#93;</span>.<span class="me1">xr</span><span class="br0">&#41;</span>;<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; obj.<span class="me1">data</span><span class="br0">&#40;</span><span class="st0">&quot;index&quot;</span>,<span class="nu0">0</span><span class="br0">&#41;</span>;<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; obj.<span class="me1">data</span><span class="br0">&#40;</span><span class="st0">&quot;direction&quot;</span>,<span class="st0">&quot;R&quot;</span><span class="br0">&#41;</span>;<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">if</span><span class="br0">&#40;</span>!obj.<span class="me1">data</span><span class="br0">&#40;</span><span class="st0">&quot;isMoving&quot;</span><span class="br0">&#41;</span><span class="br0">&#41;</span><span class="br0">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; obj.<span class="me1">data</span><span class="br0">&#40;</span><span class="st0">&quot;isMoving&quot;</span>,<span class="kw2">true</span><span class="br0">&#41;</span>;<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; move<span class="br0">&#40;</span>obj.<span class="me1">get</span><span class="br0">&#40;</span><span class="nu0">0</span><span class="br0">&#41;</span>,$<span class="br0">&#40;</span><span class="kw1">this</span><span class="br0">&#41;</span>.<span class="me1">find</span><span class="br0">&#40;</span><span class="st0">&quot;.mask&quot;</span><span class="br0">&#41;</span>.<span class="me1">get</span><span class="br0">&#40;</span><span class="nu0">0</span><span class="br0">&#41;</span><span class="br0">&#41;</span>;<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#125;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#125;</span><span class="br0">&#41;</span>;</p>
<p>&nbsp; &nbsp; &nbsp; &nbsp; $<span class="br0">&#40;</span><span class="st0">&quot;.item&quot;</span><span class="br0">&#41;</span>.<span class="me1">mouseleave</span><span class="br0">&#40;</span><span class="kw2">function</span><span class="br0">&#40;</span>e<span class="br0">&#41;</span><span class="br0">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="kw2">var</span> obj = $<span class="br0">&#40;</span><span class="kw1">this</span><span class="br0">&#41;</span>.<span class="me1">find</span><span class="br0">&#40;</span><span class="st0">&quot;.object&quot;</span><span class="br0">&#41;</span>;<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">eval</span><span class="br0">&#40;</span>$<span class="br0">&#40;</span><span class="kw1">this</span><span class="br0">&#41;</span>.<span class="me1">find</span><span class="br0">&#40;</span><span class="st0">&quot;a&quot;</span><span class="br0">&#41;</span>.<span class="me1">attr</span><span class="br0">&#40;</span><span class="st0">&quot;rel&quot;</span><span class="br0">&#41;</span><span class="br0">&#41;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; obj.<span class="me1">data</span><span class="br0">&#40;</span><span class="st0">&quot;x&quot;</span>,mapping<span class="br0">&#91;</span>obj.<span class="me1">attr</span><span class="br0">&#40;</span><span class="st0">&quot;id&quot;</span><span class="br0">&#41;</span><span class="br0">&#93;</span>.<span class="me1">xl</span><span class="br0">&#41;</span>;<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; obj.<span class="me1">data</span><span class="br0">&#40;</span><span class="st0">&quot;direction&quot;</span>,<span class="st0">&quot;L&quot;</span><span class="br0">&#41;</span>;<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">if</span><span class="br0">&#40;</span>!obj.<span class="me1">data</span><span class="br0">&#40;</span><span class="st0">&quot;isMoving&quot;</span><span class="br0">&#41;</span><span class="br0">&#41;</span><span class="br0">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; move<span class="br0">&#40;</span>obj.<span class="me1">get</span><span class="br0">&#40;</span><span class="nu0">0</span><span class="br0">&#41;</span>,$<span class="br0">&#40;</span><span class="kw1">this</span><span class="br0">&#41;</span>.<span class="me1">find</span><span class="br0">&#40;</span><span class="st0">&quot;.mask&quot;</span><span class="br0">&#41;</span>.<span class="me1">get</span><span class="br0">&#40;</span><span class="nu0">0</span><span class="br0">&#41;</span><span class="br0">&#41;</span>;<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#125;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#125;</span><span class="br0">&#41;</span>;<br />
<span class="br0">&#125;</span><span class="br0">&#41;</span>;</div>
</div>
<p>From top to bottom, we set each mask to have an opacity of 80% (0.8). Then we define the &#8220;move&#8221; function, which takes and element and its corresponding mask, and move then according to its information contained on jQuery &#8220;data&#8221; container.</p>
<p>Later, we set the &#8220;isMoving&#8221; to false for every element, since there is no initial movement.</p>
<p>&#8220;mouseenter&#8221; sets all context variables to indicate movement to the right and then calls &#8220;move&#8221; function. &#8220;mouseleave&#8221; do the opposite.</p>
<p>Note that there is two ways to stop movement: when direction has change and when an element reaches any boundary (starting or ending of the respective item element).</p>
<h2>Done!</h2>
<p>We are done! We just have created an animated menu using sprites. Not too difficult, right? Then we have answer our first question: &#8220;how difficult will be to learn this thing?&#8221; Not too much.</p>
<p>For the second question, &#8220;will I even use it?&#8221; the answer would be a big yes. Why? As you can see, doing this kind of elements can help you to create more interactive and attractive elements (not using flash at all, which is a good thing). Plus, you can create lots of more interesting stuff. Just use your imagination.</p>
<h2>Improvements</h2>
<p>There is a lot of room for improvement, starting with the animation process and ending with whatever you think can -or must- to be improved. If you have some instereting, it will probably interesting for all of us, so let us know :)</p>
<h2>Download</h2>
<p>If you want to experiment with this menu, you can download a <a href="http://devness.com/wp-content/uploads/2009/06/animated-menu-demo.rar">working demo</a>.</p>
<h2>Credits</h2>
<p>The tiny people you see running was taken from <a href="http://gmc.yoyogames.com/lofiversion/index.php/t307986.html">this post</a>, but saw first at <a href="http://www.smashingmagazine.com/2009/04/27/the-mystery-of-css-sprites-techniques-tools-and-tutorials/">this post</a> while I was doing some research.</p>
]]></content:encoded>
			<wfw:commentRss>http://devness.com/2009/06/playing-with-sprites-and-jquery-animated-menu/feed/</wfw:commentRss>
		<slash:comments>9</slash:comments>
		</item>
	</channel>
</rss>
