<?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>Ajaxian &#187; UI</title>
	<atom:link href="http://ajaxian.com/by/topic/ui/feed" rel="self" type="application/rss+xml" />
	<link>http://ajaxian.com</link>
	<description>Cleaning up the web with Ajax</description>
	<lastBuildDate>Thu, 02 Feb 2012 22:23:48 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
    	<generator>http://wordpress.org/?v=3.2</generator>
		<item>
		<title>Rounded corners. Moving.</title>
		<link>http://ajaxian.com/archives/rounded-corners-moving</link>
		<comments>http://ajaxian.com/archives/rounded-corners-moving#comments</comments>
		<pubDate>Fri, 28 May 2010 10:41:07 +0000</pubDate>
		<dc:creator>Dion Almaer</dc:creator>
				<category><![CDATA[Animation]]></category>
		<category><![CDATA[Front Page]]></category>
		<category><![CDATA[Graphics]]></category>
		<category><![CDATA[UI]]></category>

		<guid isPermaLink="false">http://ajaxian.com/?p=9413</guid>
		<description><![CDATA[Chris Vanrensburg: &#8220;In a similar vein to a recent experiment with animating position, I wanted to see how curves could be applied to animating size changes for an object. To be expected, applying different interpolation curves for the width and height CSS style properties produces some fun effects (to be seen towards the bottom of <a href="http://ajaxian.com/archives/rounded-corners-moving">Read the rest...</a>]]></description>
			<content:encoded><![CDATA[<blockquote><p>
Chris Vanrensburg: &#8220;In a similar vein to a recent experiment with animating position, I wanted to see how curves could be applied to animating size changes for an object. To be expected, applying different interpolation curves for the width and height CSS style properties produces some fun effects (to be seen towards the bottom of the list of presets).&#8221;
</p></blockquote>
<p>The Web 2.0 crowd love their rounded corners. How about animating them! This is where Chris takes <a href="http://www.uize.com/examples/animate-size-in-javascript.html">his latest experiment</a>.  Click around in the demo area and watch the smooth effects.</p>
<p><img src="http://ajaxian.com/wp-content/images/animatingroundcorners.png" alt="" title="animatingroundcorners" width="370" height="374" class="alignnone size-full wp-image-9414" /></p>
]]></content:encoded>
			<wfw:commentRss>http://ajaxian.com/archives/rounded-corners-moving/feed</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>Raphael++</title>
		<link>http://ajaxian.com/archives/raphael</link>
		<comments>http://ajaxian.com/archives/raphael#comments</comments>
		<pubDate>Tue, 04 May 2010 12:06:59 +0000</pubDate>
		<dc:creator>Dion Almaer</dc:creator>
				<category><![CDATA[Examples]]></category>
		<category><![CDATA[Front Page]]></category>
		<category><![CDATA[UI]]></category>

		<guid isPermaLink="false">http://ajaxian.com/?p=9199</guid>
		<description><![CDATA[Raphael is pure goodness. Dmitry gave a fantastic talk at JSConf, and his library never fails to impress. There have been a few interesting posts recently. Trotter Cashion kicks things into gear as he declares his love and then goes on to show how you can unit test Raphael with some mocks. Then we learn <a href="http://ajaxian.com/archives/raphael">Read the rest...</a>]]></description>
			<content:encoded><![CDATA[<p><a href="http://raphaeljs.com/">Raphael</a> is pure goodness. Dmitry gave a fantastic talk at JSConf, and his library never fails to impress.</p>
<p>There have been a few interesting posts recently. Trotter Cashion kicks things into gear as he <a href="http://www.trottercashion.com/2010/04/22/i-heart-raphael.html">declares his love</a> and then goes on to show how you can <a href="http://www.trottercashion.com/2010/04/27/headless-raphael-testing.html">unit test Raphael</a> with some mocks.</p>
<p>Then we learn how easy it is to write a "plugin" a la jQuery, such as <a href="http://taitems.tumblr.com/post/549973287/drawing-arrows-in-raphaeljs">adding an arrow abstraction</a>:</p>
<div class="igBar"><a href="javascript:showCodeTxt('javascript-2');">PLAIN TEXT</a></div>
<div class="syntax_hilite"><span style="color:#000000; font-weight:bold;">JAVASCRIPT:</span>
<div id="javascript-2">
<div class="javascript">
<ol>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp;</div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;">Raphael.<span style="color: #006600;">fn</span>.<span style="color: #006600;">arrow</span> = <span style="color: #003366; font-weight: bold;">function</span> <span style="color:#006600; font-weight:bold;">&#40;</span>x1, y1, x2, y2, size<span style="color:#006600; font-weight:bold;">&#41;</span> <span style="color:#006600; font-weight:bold;">&#123;</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; <span style="color: #003366; font-weight: bold;">var</span> angle = Math.<span style="color: #006600;">atan2</span><span style="color:#006600; font-weight:bold;">&#40;</span>x1-x2,y2-y1<span style="color:#006600; font-weight:bold;">&#41;</span>;</div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; angle = <span style="color:#006600; font-weight:bold;">&#40;</span>angle / <span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#800000;">2</span> * Math.<span style="color: #006600;">PI</span><span style="color:#006600; font-weight:bold;">&#41;</span><span style="color:#006600; font-weight:bold;">&#41;</span> * <span style="color:#800000;">360</span>;</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; <span style="color: #003366; font-weight: bold;">var</span> arrowPath = <span style="color: #000066; font-weight: bold;">this</span>.<span style="color: #006600;">path</span><span style="color:#006600; font-weight:bold;">&#40;</span>“M” + x2 + ” ” + y2 + ” L” + <span style="color:#006600; font-weight:bold;">&#40;</span>x2 - size<span style="color:#006600; font-weight:bold;">&#41;</span> + ” ” + <span style="color:#006600; font-weight:bold;">&#40;</span>y2 - size<span style="color:#006600; font-weight:bold;">&#41;</span> + ” L” + <span style="color:#006600; font-weight:bold;">&#40;</span>x2 - size<span style="color:#006600; font-weight:bold;">&#41;</span> + ” ” + <span style="color:#006600; font-weight:bold;">&#40;</span>y2 + size<span style="color:#006600; font-weight:bold;">&#41;</span> + ” L” + x2 + ” ” + y2 <span style="color:#006600; font-weight:bold;">&#41;</span>.<span style="color: #006600;">attr</span><span style="color:#006600; font-weight:bold;">&#40;</span>“fill”,”black”<span style="color:#006600; font-weight:bold;">&#41;</span>.<span style="color: #006600;">rotate</span><span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#800000;">90</span>+angle<span style="color:#006600; font-weight:bold;">&#41;</span>,x2,y2<span style="color:#006600; font-weight:bold;">&#41;</span>;</div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; <span style="color: #003366; font-weight: bold;">var</span> linePath = <span style="color: #000066; font-weight: bold;">this</span>.<span style="color: #006600;">path</span><span style="color:#006600; font-weight:bold;">&#40;</span>“M” + x1 + ” ” + y1 + ” L” + x2 + ” ” + y2<span style="color:#006600; font-weight:bold;">&#41;</span>;</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; <span style="color: #000066; font-weight: bold;">return</span> <span style="color:#006600; font-weight:bold;">&#91;</span>linePath,arrowPath<span style="color:#006600; font-weight:bold;">&#93;</span>;</div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color:#006600; font-weight:bold;">&#125;</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp;</div>
</li>
</ol>
</div>
</div>
</div>
<p>And finally, play with <a href="http://pepsicozeitgeist.com/trends">a great example usage</a> thanks to Thomas Fuchs.</p>
<p><img src="http://ajaxian.com/wp-content/images/pepsiraphael.png" alt="" title="pepsiraphael" width="480" height="374" class="alignnone size-full wp-image-9200"/></p>
]]></content:encoded>
			<wfw:commentRss>http://ajaxian.com/archives/raphael/feed</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Ample SDK Goes Open Source!</title>
		<link>http://ajaxian.com/archives/ample-sdk-goes-open-source</link>
		<comments>http://ajaxian.com/archives/ample-sdk-goes-open-source#comments</comments>
		<pubDate>Tue, 03 Nov 2009 13:15:32 +0000</pubDate>
		<dc:creator>Brad Neuberg</dc:creator>
				<category><![CDATA[Announcements]]></category>
		<category><![CDATA[Front Page]]></category>
		<category><![CDATA[Toolkit]]></category>
		<category><![CDATA[UI]]></category>

		<guid isPermaLink="false">http://ajaxian.com/?p=7832</guid>
		<description><![CDATA[The Ample SDK, a unique GUI toolkit working to create a cross-browser abstraction backed by open standards, has gone open source! With the new 0.8.9 release the GUI framework is now an open-source project licensed under GPL/MIT and hosted on GitHub. More about the Ample SDK: The Ample SDK makes it easy to create interactive <a href="http://ajaxian.com/archives/ample-sdk-goes-open-source">Read the rest...</a>]]></description>
			<content:encoded><![CDATA[<p><img class="aligncenter size-full wp-image-7833" title="ample_small" src="http://ajaxian.com/wp-content/images/ample_small.png" alt="ample_small" width="470" height="231" /></p>
<p>The <a href="http://www.amplesdk.com/">Ample SDK</a>, a unique GUI toolkit working to create a cross-browser abstraction backed by open standards, has gone open source! With the new 0.8.9 release the GUI framework is now an open-source project licensed under GPL/MIT and <a href="http://github.com/clientside/amplesdk/">hosted on GitHub</a>.</p>
<p>More about the Ample SDK:</p>
<blockquote><p>The Ample SDK makes it easy to create <a href="http://www.amplesdk.com/examples/svg/worldmap_interactive/">interactive vector graphics</a> in the browser, including on Internet Explorer, and create powerful web forms and GUIs. Even better, it supports all of this with a standard API that is the same across all browsers. You don't even need to learn anything new; the API itself is simply web standards such as SVG, XUL, DOM, the Selectors API etc.</p></blockquote>
<p><img class="aligncenter size-full wp-image-7834" title="ample_worldmap" src="http://ajaxian.com/wp-content/images/ample_worldmap.png" alt="ample_worldmap" width="470" height="246" />Make sure to check out the <a href="http://www.amplesdk.com/tutorials/adg/">Application Development Guide</a> and <a href="http://www.amplesdk.com/tutorials/edg/">Extension Development Guide</a> tutorials which feature multiple aspects of client-side development. There is also a detailed <a href="http://www.amplesdk.com/reference/">reference API</a> accompanying.</p>
<p><a href="http://www.ilinsky.com/">Sergey Ilinsky</a>, one of the leaders of the project, reports that there is still a long way to 1.0, including polishing XUL components and implementing new visual themes and charts, but that he is targeting to have a 1.0 by the end of the year. Keep up the great work Sergey!</p>
]]></content:encoded>
			<wfw:commentRss>http://ajaxian.com/archives/ample-sdk-goes-open-source/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Hide and Seek via Mouse</title>
		<link>http://ajaxian.com/archives/hide-and-seek-via-mouse</link>
		<comments>http://ajaxian.com/archives/hide-and-seek-via-mouse#comments</comments>
		<pubDate>Fri, 02 Oct 2009 11:30:53 +0000</pubDate>
		<dc:creator>webreflection</dc:creator>
				<category><![CDATA[Front Page]]></category>
		<category><![CDATA[Sencha]]></category>
		<category><![CDATA[UI]]></category>

		<guid isPermaLink="false">http://ajaxian.com/?p=7489</guid>
		<description><![CDATA[It's always nice when a basic shared idea with a simple proof of concept becomes something concrete, usable, and well explained. This is the case with Shea Frederick's post titled Forwarding Mouse Events Through Layers. The aim of the technique is to provide an ExtJS plug-in that can capture dragged and dropped data from external sources, <a href="http://ajaxian.com/archives/hide-and-seek-via-mouse">Read the rest...</a>]]></description>
			<content:encoded><![CDATA[<p>It's always nice when a basic shared idea with a simple proof of concept becomes something concrete, usable, and well explained. This is the case with <a href="http://www.vinylfox.com">Shea Frederick's</a> post titled <a href="http://www.vinylfox.com/forwarding-mouse-events-through-layers/">Forwarding Mouse Events Through Layers</a>.</p>
<p>The aim of the technique is to provide an <a href="http://www.extjs.com/">ExtJS</a> plug-in that can capture <a href="http://www.vinylfox.com/datadrop-drag-grid-data-from-spreadsheet/">dragged and dropped data from external sources</a>, such as a spreadsheet, in order to easily import data inside a generic Ext.grid.GridPanel.</p>
<p><img class="alignnone" title="Plug-in Concept" src="http://www.vinylfox.com/wp-content/uploads/2009/09/layers-steps1.png" alt="" width="500" height="326" /></p>
<ol>
<blockquote>
<li>The <em>textarea </em> (my masking element) that is positioned over the grid receives <em>mouseover</em>, <em>mousemove</em>, <em>mousedown </em>, <em>mouseup </em> and other events.</li>
<li>The top masking layer is hidden for a moment, so we can figure out what element is below the mask at the event location.</li>
<li>The event is re-fired - this is where the <a href="http://www.w3.org/TR/DOM-Level-2-Events/ecma-script-binding.html" target="_blank">W3 DOM Event model</a> and the simpler <a href="http://msdn.microsoft.com/en-us/library/ms536423%28VS.85%29.aspx" target="_blank">Microsoft equivalent</a> come into play.</li>
<li>Start the process again - ready for the next event.</li>
</blockquote>
</ol>
<p>The method used to understand which element is supposed to be the event target is <a href="https://developer.mozilla.org/En/DOM/document.elementFromPoint">document.elementFromPoint</a>, also compatible with IE, Mozilla, WebKit, and Opera.</p>
<p>The technique does not necessarily need the ExtJS library but this demo shows a <a href="http://www.vinylfox.com/lib/latest/examples/grid/array-grid-datadrop.html">live Ext Grid example</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://ajaxian.com/archives/hide-and-seek-via-mouse/feed</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Crap I missed it, doesn&#8217;t miss your file upload!</title>
		<link>http://ajaxian.com/archives/crap-i-missed-it-doesnt-miss-your-file-upload</link>
		<comments>http://ajaxian.com/archives/crap-i-missed-it-doesnt-miss-your-file-upload#comments</comments>
		<pubDate>Mon, 18 May 2009 12:12:59 +0000</pubDate>
		<dc:creator>Dion Almaer</dc:creator>
				<category><![CDATA[Front Page]]></category>
		<category><![CDATA[Showcase]]></category>
		<category><![CDATA[UI]]></category>
		<category><![CDATA[upload]]></category>

		<guid isPermaLink="false">http://ajaxian.com/?p=6806</guid>
		<description><![CDATA[The Crap I missed it! crew took on the task of dealing with importing your iTunes XML file, and wanting to give you responsive feedback on the items as they come in. The usual tactic would be to suck in the entire file, and then process it. Michael Baldwin did more, and here he tells <a href="http://ajaxian.com/archives/crap-i-missed-it-doesnt-miss-your-file-upload">Read the rest...</a>]]></description>
			<content:encoded><![CDATA[<p>The <a href="http://www.crapimissedit.com/">Crap I missed it!</a> crew took on the task of dealing with importing your iTunes XML file, and wanting to give you responsive feedback on the items as they come in. The usual tactic would be to suck in the entire file, and then process it.</p>
<p>Michael Baldwin <a href="http://www.crapimissedit.com/blog.php">did more</a>, and here he tells us more:</p>
<blockquote><p>
We wanted to allow users to upload their iTunes library files, so that we could extract artist names (to let users sign up for new album and concert notifications). The problem was that these .xml library files can easily run up to 20MB in size.</p>
<p>Which means 1) long, boring downloads without feedback that it's really working, 2) huge space requirements on our servers to support lots of concurrent uploads, and 3) big memory requirements to process the XML files.</p>
<p>What we did instead was to write a bare-bones custom web server just for this task in PHP (yes, PHP) which analyzes the file as it streams in (storing nothing on disk, and using negligible memory), gradually puts artist statistics into shared memory, and then responds to new AJAX requests every ten seconds which retrieve and remove the artist statistics from shared memory.</p>
<p>The end result for users: as users upload their library file over the course of several minutes, they get to watch their web page fill up with their list of artists at the same time, sorted and even animated. If the connection breaks, they can even choose to continue with just the artists that made it.</p>
<p>The end result for us: we can deal with gigabytes of uploads while using trivial computing resources -- just a couple KB of incoming buffer space and a couple KB of outgoing buffer space.
</p></blockquote>
<p>You can <a href="http://www.crapimissedit.com/category.php?service=17&#038;category=0">check it out yourself</a>, where it will look a bit like this (but constantly updating!)</p>
<p><img src="http://ajaxian.com/wp-content/uploads/itunesuploader.png" alt="" title="itunesuploader" width="500" height="427" class="alignnone size-full wp-image-6807" /></p>
]]></content:encoded>
			<wfw:commentRss>http://ajaxian.com/archives/crap-i-missed-it-doesnt-miss-your-file-upload/feed</wfw:commentRss>
		<slash:comments>16</slash:comments>
		</item>
		<item>
		<title>Mouse Gestures with GWT</title>
		<link>http://ajaxian.com/archives/mouse-gestures-with-gwt</link>
		<comments>http://ajaxian.com/archives/mouse-gestures-with-gwt#comments</comments>
		<pubDate>Fri, 24 Apr 2009 14:00:58 +0000</pubDate>
		<dc:creator>Ben Galbraith</dc:creator>
				<category><![CDATA[Flash]]></category>
		<category><![CDATA[Front Page]]></category>
		<category><![CDATA[Fun]]></category>
		<category><![CDATA[Gears]]></category>
		<category><![CDATA[UI]]></category>

		<guid isPermaLink="false">http://ajaxian.com/?p=6682</guid>
		<description><![CDATA[Marc Englund wrote to us about his recent experiments with mouse gestures and GWT: SimpleGesture is a GWT (and IT Mill Toolkit) implementation of the mouse gesture recognition method described by Didier Brun at bytearray.org (as I understand it). It allows you to register easy to understand (human readable) gestures, and receive events when these <a href="http://ajaxian.com/archives/mouse-gestures-with-gwt">Read the rest...</a>]]></description>
			<content:encoded><![CDATA[<p>Marc Englund wrote to us about his <a href="http://marcenglund.blogspot.com/2009/04/gesture-recognition-in-gwt-and-it-mill.html">recent experiments with mouse gestures and GWT</a>:</p>
<blockquote><p>
SimpleGesture is a GWT (and IT Mill Toolkit) implementation of the mouse gesture recognition method described by Didier Brun at bytearray.org (as I understand it). It allows you to register easy to understand (human readable) gestures, and receive events when these occur. Additionally, SimpleGesture can record new gestures, so that you don't have to write them by hand.
</p></blockquote>
<p>In this video demo, he's using a Wii to show it off (this confused me at first, but he's using the Wii as a mouse and isn't doing anything with the Wii-specific inputs):</p>
<p><object width="480" height="295"><param name="movie" value="http://www.youtube.com/v/LEvJdTuZ8sc&#038;hl=en&#038;fs=1&#038;rel=0"></param><param name="allowFullScreen" value="true"></param><param name="allowscriptaccess" value="always"></param><embed src="http://www.youtube.com/v/LEvJdTuZ8sc&#038;hl=en&#038;fs=1&#038;rel=0" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="480" height="295"></embed></object></p>
<p>You can also <a href="http://marc.virtuallypreinstalled.com/SimpleGesture">play with a live demo</a>.</p>
<p>SimpleGesture relies on a bit of Flash to do its thing:</p>
<blockquote><p>
I have used the bytearray mouse gesture library for a Flash project before, and I love how simple the method is, and yet it works very well.<br />
The method works by assigning a number depending on which direction the mouse moves in (moving right will produce "0", moving down will produce "2", and so on), and comparing the resulting string of numbers to the registered gestures. The gesture with the lowest Levenshtein distance (and below a set threshold), is considered a match.
</p></blockquote>
]]></content:encoded>
			<wfw:commentRss>http://ajaxian.com/archives/mouse-gestures-with-gwt/feed</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>Horizontal Accordion 2.0 for jQuery</title>
		<link>http://ajaxian.com/archives/horizontal-accordion-20-for-jquery</link>
		<comments>http://ajaxian.com/archives/horizontal-accordion-20-for-jquery#comments</comments>
		<pubDate>Wed, 15 Apr 2009 13:06:25 +0000</pubDate>
		<dc:creator>Ben Galbraith</dc:creator>
				<category><![CDATA[Front Page]]></category>
		<category><![CDATA[jQuery]]></category>
		<category><![CDATA[Plugins]]></category>
		<category><![CDATA[UI]]></category>

		<guid isPermaLink="false">http://ajaxian.com/?p=6599</guid>
		<description><![CDATA[Alexander Graef wrote in to tell us about the excellent Horizontal Accordion jQuery plug-in, which takes an unordered list: PLAIN TEXT HTML: &#60;ul class="test"&#62; &#160; &#60;li&#62;&#60;div class="handle"&#62;&#60;img src='images/title1.png'/&#62;&#60;/div&#62;&#60;img src='images/image_test.gif' align='left'/&#62; &#160; &#160; &#60;h3&#62;Content 1&#60;/h3&#62; &#160; &#160; &#60;p&#62;...&#60;/p&#62; &#160; &#60;/li&#62; &#160; &#60;li&#62;&#60;div class="handle"&#62;&#60;img src='images/title2.png'/&#62;&#60;/div&#62;&#60;img src='images/image_test.gif' align='left'/&#62; &#160; &#160; &#60;h3&#62;Content 2&#60;/h3&#62; &#160; &#160; &#60;p&#62;...&#60;/p&#62; &#160; &#60;/li&#62; &#160; <a href="http://ajaxian.com/archives/horizontal-accordion-20-for-jquery">Read the rest...</a>]]></description>
			<content:encoded><![CDATA[<p>Alexander Graef wrote in to tell us about the excellent <a href="http://www.portalzine.de/index?/Horizontal_Accordion">Horizontal Accordion jQuery plug-in</a>, which takes an unordered list:</p>
<div class="igBar"><a href="javascript:showCodeTxt('html-4');">PLAIN TEXT</a></div>
<div class="syntax_hilite"><span style="color:#000000; font-weight:bold;">HTML:</span>
<div id="html-4">
<div class="html">
<ol>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color: #009900;"><a href="http://december.com/html/4/element/ul.html"><span style="color: #000000; font-weight: bold;">&lt;ul</span></a> <span style="color: #000066;">class</span>=<span style="color: #ff0000;">"test"</span><span style="color: #000000; font-weight: bold;">&gt;</span></a></span></div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; <span style="color: #009900;"><a href="http://december.com/html/4/element/li.html"><span style="color: #000000; font-weight: bold;">&lt;li&gt;</span></a></span><span style="color: #009900;"><a href="http://december.com/html/4/element/div.html"><span style="color: #000000; font-weight: bold;">&lt;div</span></a> <span style="color: #000066;">class</span>=<span style="color: #ff0000;">"handle"</span><span style="color: #000000; font-weight: bold;">&gt;</span></a></span><span style="color: #009900;"><a href="http://december.com/html/4/element/img.html"><span style="color: #000000; font-weight: bold;">&lt;img</span></a> <span style="color: #000066;">src</span>=<span style="color: #ff0000;">'images/title1.png'</span>/<span style="color: #000000; font-weight: bold;">&gt;</span></a></span><span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/div&gt;</span></span><span style="color: #009900;"><a href="http://december.com/html/4/element/img.html"><span style="color: #000000; font-weight: bold;">&lt;img</span></a> <span style="color: #000066;">src</span>=<span style="color: #ff0000;">'images/image_test.gif'</span> <span style="color: #000066;">align</span>=<span style="color: #ff0000;">'left'</span>/<span style="color: #000000; font-weight: bold;">&gt;</span></a></span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; <span style="color: #009900;"><a href="http://december.com/html/4/element/h3.html"><span style="color: #000000; font-weight: bold;">&lt;h3&gt;</span></a></span>Content 1<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/h3&gt;</span></span></div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; <span style="color: #009900;"><a href="http://december.com/html/4/element/p.html"><span style="color: #000000; font-weight: bold;">&lt;p&gt;</span></a></span>...<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/p&gt;</span></span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/li&gt;</span></span></div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; <span style="color: #009900;"><a href="http://december.com/html/4/element/li.html"><span style="color: #000000; font-weight: bold;">&lt;li&gt;</span></a></span><span style="color: #009900;"><a href="http://december.com/html/4/element/div.html"><span style="color: #000000; font-weight: bold;">&lt;div</span></a> <span style="color: #000066;">class</span>=<span style="color: #ff0000;">"handle"</span><span style="color: #000000; font-weight: bold;">&gt;</span></a></span><span style="color: #009900;"><a href="http://december.com/html/4/element/img.html"><span style="color: #000000; font-weight: bold;">&lt;img</span></a> <span style="color: #000066;">src</span>=<span style="color: #ff0000;">'images/title2.png'</span>/<span style="color: #000000; font-weight: bold;">&gt;</span></a></span><span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/div&gt;</span></span><span style="color: #009900;"><a href="http://december.com/html/4/element/img.html"><span style="color: #000000; font-weight: bold;">&lt;img</span></a> <span style="color: #000066;">src</span>=<span style="color: #ff0000;">'images/image_test.gif'</span> <span style="color: #000066;">align</span>=<span style="color: #ff0000;">'left'</span>/<span style="color: #000000; font-weight: bold;">&gt;</span></a></span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; <span style="color: #009900;"><a href="http://december.com/html/4/element/h3.html"><span style="color: #000000; font-weight: bold;">&lt;h3&gt;</span></a></span>Content 2<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/h3&gt;</span></span></div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; <span style="color: #009900;"><a href="http://december.com/html/4/element/p.html"><span style="color: #000000; font-weight: bold;">&lt;p&gt;</span></a></span>...<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/p&gt;</span></span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/li&gt;</span></span></div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; <span style="color: #009900;"><a href="http://december.com/html/4/element/li.html"><span style="color: #000000; font-weight: bold;">&lt;li&gt;</span></a></span><span style="color: #009900;"><a href="http://december.com/html/4/element/div.html"><span style="color: #000000; font-weight: bold;">&lt;div</span></a> <span style="color: #000066;">class</span>=<span style="color: #ff0000;">"handle"</span><span style="color: #000000; font-weight: bold;">&gt;</span></a></span><span style="color: #009900;"><a href="http://december.com/html/4/element/img.html"><span style="color: #000000; font-weight: bold;">&lt;img</span></a> <span style="color: #000066;">src</span>=<span style="color: #ff0000;">'images/title3.png'</span>/<span style="color: #000000; font-weight: bold;">&gt;</span></a></span><span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/div&gt;</span></span><span style="color: #009900;"><a href="http://december.com/html/4/element/img.html"><span style="color: #000000; font-weight: bold;">&lt;img</span></a> <span style="color: #000066;">src</span>=<span style="color: #ff0000;">'images/image_test.gif'</span> <span style="color: #000066;">align</span>=<span style="color: #ff0000;">'left'</span>/<span style="color: #000000; font-weight: bold;">&gt;</span></a></span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; <span style="color: #009900;"><a href="http://december.com/html/4/element/h3.html"><span style="color: #000000; font-weight: bold;">&lt;h3&gt;</span></a></span>Content 3<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/h3&gt;</span></span></div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; <span style="color: #009900;"><a href="http://december.com/html/4/element/p.html"><span style="color: #000000; font-weight: bold;">&lt;p&gt;</span></a></span>...<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/p&gt;</span></span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/li&gt;</span></span></div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; <span style="color: #009900;"><a href="http://december.com/html/4/element/li.html"><span style="color: #000000; font-weight: bold;">&lt;li&gt;</span></a></span><span style="color: #009900;"><a href="http://december.com/html/4/element/div.html"><span style="color: #000000; font-weight: bold;">&lt;div</span></a> <span style="color: #000066;">class</span>=<span style="color: #ff0000;">"handle"</span><span style="color: #000000; font-weight: bold;">&gt;</span></a></span><span style="color: #009900;"><a href="http://december.com/html/4/element/img.html"><span style="color: #000000; font-weight: bold;">&lt;img</span></a> <span style="color: #000066;">src</span>=<span style="color: #ff0000;">'images/title4.png'</span>/<span style="color: #000000; font-weight: bold;">&gt;</span></a></span><span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/div&gt;</span></span><span style="color: #009900;"><a href="http://december.com/html/4/element/img.html"><span style="color: #000000; font-weight: bold;">&lt;img</span></a> <span style="color: #000066;">src</span>=<span style="color: #ff0000;">'images/image_test.gif'</span> <span style="color: #000066;">align</span>=<span style="color: #ff0000;">'left'</span>/<span style="color: #000000; font-weight: bold;">&gt;</span></a></span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; <span style="color: #009900;"><a href="http://december.com/html/4/element/h3.html"><span style="color: #000000; font-weight: bold;">&lt;h3&gt;</span></a></span>Content 4<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/h3&gt;</span></span></div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; <span style="color: #009900;"><a href="http://december.com/html/4/element/p.html"><span style="color: #000000; font-weight: bold;">&lt;p&gt;</span></a></span>...<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/p&gt;</span></span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/li&gt;</span></span></div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/ul&gt;</span></span> </div>
</li>
</ol>
</div>
</div>
</div>
<p>and transforms it into this:</p>
<p><img src="http://ajaxian.com/wp-content/uploads/accordion.png" alt="" title="Horizontal Accordion" width="470" height="178" class="alignnone size-full wp-image-6600" /></p>
<p>It's a complete re-write of the old plug-in and works on Firefox, IE, and Safari. Here's the feature list:</p>
<blockquote><p>
    * No dependencies<br />
    * Optional use of easing plugin (still some work needed)<br />
    * Close and open content one after the other<br />
    * Close and open at the same time<br />
    * Choose trigger (mouseover, click ...)<br />
    * Easily control through external calls<br />
    * Open content on load<br />
    * Open content through hash tags in the url (#tab1, #tab2...)<br />
    * Position of handle (left, right)<br />
    * Mixed handle positions - 2 left , 2 right ...<br />
    * Cycle through content by interval<br />
    * Events when animations starts and ends<br />
    * Hide content until all has been assembled
</p></blockquote>
<p>Check out the <a href="http://www.portalzine.de/Horizontal_Accordion_Plugin_2/index.html">demos</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://ajaxian.com/archives/horizontal-accordion-20-for-jquery/feed</wfw:commentRss>
		<slash:comments>10</slash:comments>
		</item>
		<item>
		<title>Notimoo Brings Growl to MooTools</title>
		<link>http://ajaxian.com/archives/notimoo-brings-growl-to-mootools</link>
		<comments>http://ajaxian.com/archives/notimoo-brings-growl-to-mootools#comments</comments>
		<pubDate>Mon, 13 Apr 2009 16:30:43 +0000</pubDate>
		<dc:creator>Ben Galbraith</dc:creator>
				<category><![CDATA[Front Page]]></category>
		<category><![CDATA[MooTools]]></category>
		<category><![CDATA[Plugins]]></category>
		<category><![CDATA[UI]]></category>

		<guid isPermaLink="false">http://ajaxian.com/?p=6574</guid>
		<description><![CDATA[Joining the world's collection of Growl-related libraries is Notimoo, a beautiful Growl implementation for MooTools. It's a little more sophisticated than most of the Growl ports as it supports persistence messages (that require a user's click to clear and scroll into view) and allows you to configure where on the screen the messages appear: PLAIN <a href="http://ajaxian.com/archives/notimoo-brings-growl-to-mootools">Read the rest...</a>]]></description>
			<content:encoded><![CDATA[<p><img src="http://ajaxian.com/wp-content/uploads/notimoo.png" alt="" title="Notimoo" width="335" height="191" class="alignnone size-full wp-image-6576" /></p>
<p>Joining the world's collection of Growl-related libraries is <a href="http://paquitosoft.com/notimoo/">Notimoo</a>, a beautiful Growl implementation for MooTools. It's a little more sophisticated than most of the Growl ports as it supports persistence messages (that require a user's click to clear and scroll into view) and allows you to configure where on the screen the messages appear:</p>
<div class="igBar"><a href="javascript:showCodeTxt('javascript-6');">PLAIN TEXT</a></div>
<div class="syntax_hilite"><span style="color:#000000; font-weight:bold;">JavaScript:</span>
<div id="javascript-6">
<div class="javascript">
<ol>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color: #009900; font-style: italic;">// Now I create the manager so it will display notifications from the left bottom corner</span></div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color: #003366; font-weight: bold;">var</span> notimooManager = <span style="color: #003366; font-weight: bold;">new</span> Notimoo<span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#006600; font-weight:bold;">&#123;</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp;locationVType: <span style="color: #3366CC;">'bottom'</span>,</div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp;locationHType: <span style="color: #3366CC;">'left'</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color:#006600; font-weight:bold;">&#125;</span><span style="color:#006600; font-weight:bold;">&#41;</span>;</div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp;</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color: #009900; font-style: italic;">// Showing a notification that does not disappear.</span></div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;">notimooManager.<span style="color: #006600;">show</span><span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#006600; font-weight:bold;">&#123;</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; &nbsp; title: <span style="color: #3366CC;">'Testing notification'</span>,</div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; message: <span style="color: #3366CC;">'This notification will not disapper on its own. You must click on it to close.'</span>,</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; sticky: <span style="color: #003366; font-weight: bold;">true</span></div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color:#006600; font-weight:bold;">&#125;</span><span style="color:#006600; font-weight:bold;">&#41;</span>; </div>
</li>
</ol>
</div>
</div>
</div>
<p><a href="http://code.google.com/p/notimoo/">The Notimoo project</a> is hosted on Google Code under an MIT license.</p>
]]></content:encoded>
			<wfw:commentRss>http://ajaxian.com/archives/notimoo-brings-growl-to-mootools/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Safari-style Candybars for Everyone</title>
		<link>http://ajaxian.com/archives/safari-style-candybars-for-everyone</link>
		<comments>http://ajaxian.com/archives/safari-style-candybars-for-everyone#comments</comments>
		<pubDate>Thu, 09 Apr 2009 12:00:57 +0000</pubDate>
		<dc:creator>Ben Galbraith</dc:creator>
				<category><![CDATA[Canvas]]></category>
		<category><![CDATA[Front Page]]></category>
		<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[Library]]></category>
		<category><![CDATA[UI]]></category>

		<guid isPermaLink="false">http://ajaxian.com/?p=6541</guid>
		<description><![CDATA[Christian Effenberger wrote in with another impressive piece of work: Gauge.js 1.0 allows you to add programmable gauges (with shading and reflection) to your webpages. It uses unobtrusive javascript to keep your code clean. It works in all the major browsers - Mozilla Firefox 1.5+, Opera 9+, IE6+ and Safari. On older browsers, it'll degrade <a href="http://ajaxian.com/archives/safari-style-candybars-for-everyone">Read the rest...</a>]]></description>
			<content:encoded><![CDATA[<p><img src="http://ajaxian.com/wp-content/uploads/candybars.png" alt="" title="Safari-style Bars" width="470" height="237" class="alignnone size-full wp-image-6542" /></p>
<p>Christian Effenberger wrote in with <a href="http://gauge.netzgesta.de/">another impressive piece of work</a>:</p>
<blockquote><p>
Gauge.js 1.0 allows you to add programmable gauges (with shading and reflection) to your webpages.<br />
It uses unobtrusive javascript to keep your code clean.</p>
<p>It works in all the major browsers - Mozilla Firefox 1.5+, Opera 9+, IE6+ and Safari.<br />
On older browsers, it'll degrade and your visitors won't notice a thing.
</p></blockquote>
<p>Add to Firebug? ;-)</p>
]]></content:encoded>
			<wfw:commentRss>http://ajaxian.com/archives/safari-style-candybars-for-everyone/feed</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>GX: A new animation framework</title>
		<link>http://ajaxian.com/archives/gx-a-new-animation-framework</link>
		<comments>http://ajaxian.com/archives/gx-a-new-animation-framework#comments</comments>
		<pubDate>Fri, 13 Mar 2009 12:24:22 +0000</pubDate>
		<dc:creator>Dion Almaer</dc:creator>
				<category><![CDATA[Front Page]]></category>
		<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[jQuery]]></category>
		<category><![CDATA[Library]]></category>
		<category><![CDATA[UI]]></category>

		<guid isPermaLink="false">http://ajaxian.com/?p=6318</guid>
		<description><![CDATA[Riccardo Degni has created GX, his latest animation framework. He actually created moo.rd in the past, and this time he is playing on top of jQuery: I’ve developed GX keeping in mind mainly two Design Patterns: the “Write Less, Do More” Pattern picked from the jQuery Library. With GX you’ll always write as less code <a href="http://ajaxian.com/archives/gx-a-new-animation-framework">Read the rest...</a>]]></description>
			<content:encoded><![CDATA[<p><img src="http://www.riccardodegni.net/blog/wp-content/uploads/2009/03/gx_logo_2.gif" style="float: right; padding: 8px"/></p>
<p>Riccardo Degni has created <a href="http://www.riccardodegni.net/blog/gx-full-featured-javascript-animations-framework">GX</a>, his latest animation framework. He actually created <a href="http://www.moord.it/">moo.rd</a> in the past, and this time he is playing on top of jQuery:</p>
<blockquote>
<p>I’ve developed <a href="http://gx.riccardodegni.net/">GX</a> keeping in mind mainly two Design Patterns:</p>
<ul>
<li>the “<strong>Write Less, Do More</strong>” Pattern picked from the <strong>jQuery</strong> Library. With GX you’ll always write as less code as possible to get the best results.</li>
<li>the <a href="http://en.wikipedia.org/wiki/Don%27t_repeat_yourself" target="_blank">DRY</a> (Don’t Repeat Yourself) Pattern. If a GX’s functionality is needed more than once, it will be internally reused with no duplicate.</li>
</ul>
<p><strong>GX</strong> respects the Strict Standards and doesn’t generate CSS/Javscript warnings. Moreover it prevents possible Memory Leaks because it will always use the same instance for a determinate element (say goodbye to “flickering”) to avoid either memory leaks and flickering issues. This technique allows you to always keep track of your animation’s state.</p>
<p>Although <strong>GX</strong> is completely cross-browser, it doesn’t contain <strong>any Browser sniffing</strong>: it’s 100% pure Javascript engine.</p>
</blockquote>
<p><b>Example</b></p>
<div class="igBar"><a href="javascript:showCodeTxt('javascript-8');">PLAIN TEXT</a></div>
<div class="syntax_hilite"><span style="color:#000000; font-weight:bold;">JAVASCRIPT:</span>
<div id="javascript-8">
<div class="javascript">
<ol>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp;</div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color: #009900; font-style: italic;">// simple animation</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;">$<span style="color:#006600; font-weight:bold;">&#40;</span><span style="color: #3366CC;">'element'</span><span style="color:#006600; font-weight:bold;">&#41;</span>.<span style="color: #006600;">gx</span><span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#006600; font-weight:bold;">&#123;</span><span style="color: #3366CC;">'width'</span>:<span style="color: #3366CC;">'+=200px'</span>, <span style="color: #3366CC;">'height'</span>:<span style="color: #3366CC;">'4em'</span>, <span style="color: #3366CC;">'opacity'</span>:<span style="color:#800000;">0</span>.<span style="color:#800000;">4</span>, <span style="color: #3366CC;">'color'</span>:<span style="color: #3366CC;">'#ff0'</span><span style="color:#006600; font-weight:bold;">&#125;</span>,</div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color:#800000;">4000</span><span style="color:#006600; font-weight:bold;">&#41;</span>;</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp;</div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color: #009900; font-style: italic;">// queue animations</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;">$<span style="color:#006600; font-weight:bold;">&#40;</span><span style="color: #3366CC;">'element'</span><span style="color:#006600; font-weight:bold;">&#41;</span>.<span style="color: #006600;">gx</span><span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#006600; font-weight:bold;">&#123;</span>width: <span style="color:#800000;">0</span><span style="color:#006600; font-weight:bold;">&#125;</span>, <span style="color:#800000;">200</span><span style="color:#006600; font-weight:bold;">&#41;</span></div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; .<span style="color: #006600;">gx</span><span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#006600; font-weight:bold;">&#123;</span>width: <span style="color:#800000;">200</span><span style="color:#006600; font-weight:bold;">&#125;</span>, <span style="color:#800000;">4000</span><span style="color:#006600; font-weight:bold;">&#41;</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; .<span style="color: #006600;">gx</span><span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#006600; font-weight:bold;">&#123;</span>width: <span style="color:#800000;">0</span><span style="color:#006600; font-weight:bold;">&#125;</span>, <span style="color: #3366CC;">'verySlow'</span><span style="color:#006600; font-weight:bold;">&#41;</span></div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; .<span style="color: #006600;">gx</span><span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#006600; font-weight:bold;">&#123;</span>width: <span style="color:#800000;">100</span><span style="color:#006600; font-weight:bold;">&#125;</span>, <span style="color: #3366CC;">'slow'</span><span style="color:#006600; font-weight:bold;">&#41;</span>;</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp;</div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color: #009900; font-style: italic;">// 'Complete' callback</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;">$<span style="color:#006600; font-weight:bold;">&#40;</span><span style="color: #3366CC;">'element'</span><span style="color:#006600; font-weight:bold;">&#41;</span>.<span style="color: #006600;">gx</span><span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#006600; font-weight:bold;">&#123;</span>width: <span style="color:#800000;">200</span>, height: <span style="color:#800000;">200</span><span style="color:#006600; font-weight:bold;">&#125;</span>, <span style="color:#800000;">2000</span>, <span style="color: #3366CC;">'Bounce'</span>, <span style="color: #003366; font-weight: bold;">function</span><span style="color:#006600; font-weight:bold;">&#40;</span>el<span style="color:#006600; font-weight:bold;">&#41;</span> <span style="color:#006600; font-weight:bold;">&#123;</span></div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; el.<span style="color: #006600;">html</span><span style="color:#006600; font-weight:bold;">&#40;</span><span style="color: #3366CC;">'The animation is completed!'</span><span style="color:#006600; font-weight:bold;">&#41;</span>;</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color:#006600; font-weight:bold;">&#125;</span><span style="color:#006600; font-weight:bold;">&#41;</span>;</div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp;</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color: #009900; font-style: italic;">// 'Start' and 'Complete' callbacks</span></div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;">$<span style="color:#006600; font-weight:bold;">&#40;</span><span style="color: #3366CC;">'element'</span><span style="color:#006600; font-weight:bold;">&#41;</span>.<span style="color: #006600;">gx</span><span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#006600; font-weight:bold;">&#123;</span>width: <span style="color:#800000;">200</span>, height: <span style="color:#800000;">200</span><span style="color:#006600; font-weight:bold;">&#125;</span>, <span style="color:#800000;">2000</span>, <span style="color: #3366CC;">'Bounce'</span>,</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; <span style="color:#006600; font-weight:bold;">&#123;</span><span style="color: #3366CC;">'start'</span>: <span style="color: #003366; font-weight: bold;">function</span><span style="color:#006600; font-weight:bold;">&#40;</span>el<span style="color:#006600; font-weight:bold;">&#41;</span> <span style="color:#006600; font-weight:bold;">&#123;</span> el.<span style="color: #006600;">html</span><span style="color:#006600; font-weight:bold;">&#40;</span><span style="color: #3366CC;">'The animation is started!'</span><span style="color:#006600; font-weight:bold;">&#41;</span>; <span style="color:#006600; font-weight:bold;">&#125;</span>,</div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp;<span style="color: #3366CC;">'complete'</span>: <span style="color: #003366; font-weight: bold;">function</span><span style="color:#006600; font-weight:bold;">&#40;</span>el<span style="color:#006600; font-weight:bold;">&#41;</span> <span style="color:#006600; font-weight:bold;">&#123;</span> el.<span style="color: #006600;">html</span><span style="color:#006600; font-weight:bold;">&#40;</span><span style="color: #3366CC;">'The animation is completed!'</span><span style="color:#006600; font-weight:bold;">&#41;</span>; <span style="color:#006600; font-weight:bold;">&#125;</span> <span style="color:#006600; font-weight:bold;">&#125;</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color:#006600; font-weight:bold;">&#41;</span>;</div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp;</div>
</li>
</ol>
</div>
</div>
</div>
]]></content:encoded>
			<wfw:commentRss>http://ajaxian.com/archives/gx-a-new-animation-framework/feed</wfw:commentRss>
		<slash:comments>17</slash:comments>
		</item>
		<item>
		<title>APNG Class: Get APNG going on all browsers</title>
		<link>http://ajaxian.com/archives/apng-class-get-apng-going-on-all-browsers</link>
		<comments>http://ajaxian.com/archives/apng-class-get-apng-going-on-all-browsers#comments</comments>
		<pubDate>Thu, 12 Mar 2009 09:29:44 +0000</pubDate>
		<dc:creator>Dion Almaer</dc:creator>
				<category><![CDATA[Front Page]]></category>
		<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[Library]]></category>
		<category><![CDATA[MooTools]]></category>
		<category><![CDATA[UI]]></category>
		<category><![CDATA[Utility]]></category>

		<guid isPermaLink="false">http://ajaxian.com/?p=6300</guid>
		<description><![CDATA[Guillermo Rauch, who has a really nice looking site at devthought has created APNG a class to bootstrap animating PNG images: APNG provides simple frame-based animation functionality. It’s main goal is solve the problem of animating alpha-transparent images (PNG format). Features APNG is very flexible when it comes to the method of displaying the various <a href="http://ajaxian.com/archives/apng-class-get-apng-going-on-all-browsers">Read the rest...</a>]]></description>
			<content:encoded><![CDATA[<p><img src="http://ajaxian.com/wp-content/uploads/apng.png" alt="" title="apng" width="500" height="141" class="alignnone size-full wp-image-6301" /></p>
<p>Guillermo Rauch, who has a really nice looking site at <a href="http://devthought.com/">devthought</a> has created <a href="http://devthought.com/projects/mootools/apng/">APNG</a> a class to bootstrap animating PNG images:</p>
<blockquote><p>
APNG provides simple frame-based animation functionality. It’s main goal is solve the problem of animating alpha-transparent images (PNG format).<br />
Features</p>
<p>APNG is very flexible when it comes to the method of displaying the various animation frames.</p>
<p>The default behavior is taking the filename, for example spinner.png, and changing the src or background-image attribute to spinner-2.png, spinner-3.png and so on.</p>
<p>If the useNative functionality is in place, which is set to be on for Firefox 3 and Opera 9.5, the Javascript-based animation is not run. I encourage you to create an actual APNG for the default frame (spinner.png). If you do so, you’ll see increased performance for the browsers that support it -while also promoting the adoption of this new format-, and other browsers will just display the first frame and the animation will run via JavaScript.</p>
<p>You can also use background-position based animations to avoid making multiple requests, and avoid potential cache issues in old browsers.</p>
<p>The APNG class supports dynamic pausing, canceling, resetting and starting of animations. Frames can have a fixed interval or one can be assigned for each of them. Preloading is supported, which can prove useful for long animations or animations that are initialized and not run from the start.
</p></blockquote>
<p>Check out the <a href="http://devthought.com/wp-content/projects/mootools/APNG/Demo/">demo page</a> and see how to use it:</p>
<div class="igBar"><a href="javascript:showCodeTxt('javascript-10');">PLAIN TEXT</a></div>
<div class="syntax_hilite"><span style="color:#000000; font-weight:bold;">JAVASCRIPT:</span>
<div id="javascript-10">
<div class="javascript">
<ol>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp;</div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color: #009900; font-style: italic;">// new image</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;">img = <span style="color: #003366; font-weight: bold;">new</span> Element<span style="color:#006600; font-weight:bold;">&#40;</span><span style="color: #3366CC;">'img'</span>, <span style="color:#006600; font-weight:bold;">&#123;</span> src: <span style="color: #3366CC;">'images/zoom-spin.png'</span> <span style="color:#006600; font-weight:bold;">&#125;</span><span style="color:#006600; font-weight:bold;">&#41;</span>.<span style="color: #006600;">inject</span><span style="color:#006600; font-weight:bold;">&#40;</span>document.<span style="color: #006600;">body</span><span style="color:#006600; font-weight:bold;">&#41;</span>;</div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color: #003366; font-weight: bold;">new</span> APNG<span style="color:#006600; font-weight:bold;">&#40;</span>img, <span style="color:#006600; font-weight:bold;">&#123;</span> useNative: <span style="color: #003366; font-weight: bold;">false</span>, frames: <span style="color:#800000;">12</span>, endless: <span style="color: #003366; font-weight: bold;">false</span> <span style="color:#006600; font-weight:bold;">&#125;</span><span style="color:#006600; font-weight:bold;">&#41;</span>;</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp;</div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color: #009900; font-style: italic;">// existing images</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color: #003366; font-weight: bold;">new</span> APNG<span style="color:#006600; font-weight:bold;">&#40;</span><span style="color: #3366CC;">'imganimated'</span>, <span style="color:#006600; font-weight:bold;">&#123;</span> useNative: <span style="color: #003366; font-weight: bold;">false</span>, frames: <span style="color:#800000;">12</span>, endless: <span style="color: #003366; font-weight: bold;">true</span> <span style="color:#006600; font-weight:bold;">&#125;</span><span style="color:#006600; font-weight:bold;">&#41;</span>;</div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp;</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color: #009900; font-style: italic;">// existing div</span></div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color: #003366; font-weight: bold;">new</span> APNG<span style="color:#006600; font-weight:bold;">&#40;</span><span style="color: #3366CC;">'divspinner'</span>, <span style="color:#006600; font-weight:bold;">&#123;</span> useNative: <span style="color: #003366; font-weight: bold;">false</span>, frames: <span style="color:#800000;">12</span>, endless: <span style="color: #003366; font-weight: bold;">true</span>, property: <span style="color: #3366CC;">'background-image'</span> <span style="color:#006600; font-weight:bold;">&#125;</span><span style="color:#006600; font-weight:bold;">&#41;</span>;</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp;</div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color: #009900; font-style: italic;">// existing div, single image</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color: #003366; font-weight: bold;">new</span> APNG<span style="color:#006600; font-weight:bold;">&#40;</span><span style="color: #3366CC;">'divspinner2'</span>, <span style="color:#006600; font-weight:bold;">&#123;</span> useNative: <span style="color: #003366; font-weight: bold;">false</span>, frames: <span style="color:#800000;">12</span>, endless: <span style="color: #003366; font-weight: bold;">true</span>, property: <span style="color: #3366CC;">'background-position'</span>, axis: <span style="color: #3366CC;">'x'</span>, interval: <span style="color:#006600; font-weight:bold;">&#91;</span><span style="color:#800000;">100</span>, <span style="color:#800000;">90</span>, <span style="color:#800000;">80</span>, <span style="color:#800000;">70</span>, <span style="color:#800000;">60</span>, <span style="color:#800000;">50</span>, <span style="color:#800000;">40</span>, <span style="color:#800000;">30</span>, <span style="color:#800000;">20</span>, <span style="color:#800000;">10</span><span style="color:#006600; font-weight:bold;">&#93;</span> <span style="color:#006600; font-weight:bold;">&#125;</span> <span style="color:#006600; font-weight:bold;">&#41;</span>;</div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="color:#000000; font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp;</div>
</li>
</ol>
</div>
</div>
</div>
]]></content:encoded>
			<wfw:commentRss>http://ajaxian.com/archives/apng-class-get-apng-going-on-all-browsers/feed</wfw:commentRss>
		<slash:comments>16</slash:comments>
		</item>
		<item>
		<title>390 Designing Web Interface Screencasts</title>
		<link>http://ajaxian.com/archives/390-designing-web-interface-screencasts</link>
		<comments>http://ajaxian.com/archives/390-designing-web-interface-screencasts#comments</comments>
		<pubDate>Wed, 11 Feb 2009 08:33:14 +0000</pubDate>
		<dc:creator>Dion Almaer</dc:creator>
				<category><![CDATA[Front Page]]></category>
		<category><![CDATA[Screencast]]></category>
		<category><![CDATA[UI]]></category>

		<guid isPermaLink="false">http://ajaxian.com/?p=5924</guid>
		<description><![CDATA[390? Wow Bill, you have been busy :) I am referring to the 390 screencasts that Bill Scott has published showing "captures of various sites illustrating patterns from each chapter."]]></description>
			<content:encoded><![CDATA[<p>390? Wow Bill, you have been busy :)</p>
<p>I am referring to the <a href="http://designingwebinterfaces.com/screencasts-added-to-flickr">390 screencasts</a> that Bill Scott has published showing "captures of various sites illustrating patterns from each chapter."</p>
<p><img src="http://ajaxian.com/wp-content/uploads/designingwebscreencasts.png" alt="" title="designingwebscreencasts" width="500" height="521" class="alignnone size-full wp-image-5925" /></p>
]]></content:encoded>
			<wfw:commentRss>http://ajaxian.com/archives/390-designing-web-interface-screencasts/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>How many engineers does it take to create a cross browser button?</title>
		<link>http://ajaxian.com/archives/how-many-engineers-does-it-take-to-create-a-cross-browser-button</link>
		<comments>http://ajaxian.com/archives/how-many-engineers-does-it-take-to-create-a-cross-browser-button#comments</comments>
		<pubDate>Fri, 06 Feb 2009 05:01:49 +0000</pubDate>
		<dc:creator>Dion Almaer</dc:creator>
				<category><![CDATA[Component]]></category>
		<category><![CDATA[CSS]]></category>
		<category><![CDATA[Front Page]]></category>
		<category><![CDATA[UI]]></category>

		<guid isPermaLink="false">http://ajaxian.com/?p=5892</guid>
		<description><![CDATA[So, you want to create a button that you have full control over, and you want it to work well cross browser. Shouldn't be hard right? Wrong. Doug Bowmanepines about the job of doing just this, which is something he kicked off at Google, and we see the result in apps such as Sites and <a href="http://ajaxian.com/archives/how-many-engineers-does-it-take-to-create-a-cross-browser-button">Read the rest...</a>]]></description>
			<content:encoded><![CDATA[<p>So, you want to create a button that you have full control over, and you want it to work well cross browser. Shouldn't be hard right? Wrong.</p>
<p>Doug Bowman<a href="http://stopdesign.com/archive/2009/02/04/recreating-the-button.html">epines about the job of doing just this</a>, which is something he kicked off at Google, and we see the result in apps such as Sites and recently Gmail:</p>
<p><img src="http://stopdesign.com/img/archive/2009/02/btns-gmail.png"/></p>
<p>Doug does a really nice job at explaining the history of this work, and then detailing the issues at hand and various iterations of the work where he had some a-ha moments such as:</p>
<blockquote><p>
My 3.0 attempt relied on treating the buttons and everything inside them as inline elements. The top/bottom borders still needed to be rendered separately from the left/right borders to get 1px-notched corners. The left/right borders were rendered on the outer element. The top/bottom borders were rendered on the inner element. Because borders don’t compound and add to the width or height of an inline element, we get the 1px notches in each corner. I ran into a lot of frustration with this inline approach until I remembered display: inline-block. That seemed to <a href="http://stopdesign.com/eg/buttons/3.0/code.html">solve everything at once.</a></p></blockquote>
<p>And how he got rid of the gradient image and instead uses CSS:</p>
<p><img src="http://stopdesign.com/img/archive/2009/02/bands-spec.png"/></p>
<p>A really nice read. It works pretty well for me. The only real issue that I saw was that the drop down in Gmail for "More Actions" can be greyed out when you don't have something selected. The type is subtle so at first I wondered why hover/click weren't doing anything.</p>
<p>Oh, hey, would be nice to open source this kind of stuff good Google UX guys ;)</p>
]]></content:encoded>
			<wfw:commentRss>http://ajaxian.com/archives/how-many-engineers-does-it-take-to-create-a-cross-browser-button/feed</wfw:commentRss>
		<slash:comments>9</slash:comments>
		</item>
		<item>
		<title>Designing Web Interfaces with Bill Scott and Theresa Neil</title>
		<link>http://ajaxian.com/archives/designing-web-interfaces</link>
		<comments>http://ajaxian.com/archives/designing-web-interfaces#comments</comments>
		<pubDate>Wed, 04 Feb 2009 11:05:15 +0000</pubDate>
		<dc:creator>Dion Almaer</dc:creator>
				<category><![CDATA[Books]]></category>
		<category><![CDATA[Front Page]]></category>
		<category><![CDATA[UI]]></category>
		<category><![CDATA[Usability]]></category>

		<guid isPermaLink="false">http://ajaxian.com/?p=5878</guid>
		<description><![CDATA[Bill Scott presented Designing Web Interfaces, a slideshow based on core items from his book (co-authored by Theresa Neil). There are some really interesting posts on the site, such as 30 Essential Controls. Theresa has been pinging the major frameworks and will be posting a matrix of coverage by the various frameworks. But more generally <a href="http://ajaxian.com/archives/designing-web-interfaces">Read the rest...</a>]]></description>
			<content:encoded><![CDATA[<p><object style="margin:0px" width="425" height="355"><param name="movie" value="http://static.slideshare.net/swf/ssplayer2.swf?doc=dwi-1233708570866247-2&#038;stripped_title=designing-web-interfaces-book-oreilly-webcast" /><param name="allowFullScreen" value="true"/><param name="allowScriptAccess" value="always"/><embed src="http://static.slideshare.net/swf/ssplayer2.swf?doc=dwi-1233708570866247-2&#038;stripped_title=designing-web-interfaces-book-oreilly-webcast" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="425" height="355"></embed></object></p>
<p>Bill Scott presented Designing Web Interfaces, a slideshow based on core items from <a href="http://designingwebinterfaces.com/">his book</a> (co-authored by Theresa Neil).</p>
<p>There are some really interesting posts on the site, such as <a href="http://designingwebinterfaces.com/essential_controls">30 Essential Controls</a>. Theresa has been pinging the major frameworks and will be posting a matrix of coverage by the various frameworks. But more generally it is a nice checklist of controls that can liven up an interface.</p>
]]></content:encoded>
			<wfw:commentRss>http://ajaxian.com/archives/designing-web-interfaces/feed</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Music Player UI</title>
		<link>http://ajaxian.com/archives/music-player-ui</link>
		<comments>http://ajaxian.com/archives/music-player-ui#comments</comments>
		<pubDate>Wed, 17 Dec 2008 11:31:01 +0000</pubDate>
		<dc:creator>Dion Almaer</dc:creator>
				<category><![CDATA[Front Page]]></category>
		<category><![CDATA[jQuery]]></category>
		<category><![CDATA[Showcase]]></category>
		<category><![CDATA[UI]]></category>

		<guid isPermaLink="false">http://ajaxian.com/?p=5425</guid>
		<description><![CDATA[Yensdesign has a nice little example of a music player UI that uses mouse gestures and key handling to give a clean experience. Songza did a great job here, and I still use it to find songs for the kids.]]></description>
			<content:encoded><![CDATA[<p><object width="400" height="302"><param name="allowfullscreen" value="true" /><param name="allowscriptaccess" value="always" /><param name="movie" value="http://vimeo.com/moogaloop.swf?clip_id=2428228&amp;server=vimeo.com&amp;show_title=1&amp;show_byline=1&amp;show_portrait=0&amp;color=&amp;fullscreen=1" /><embed src="http://vimeo.com/moogaloop.swf?clip_id=2428228&amp;server=vimeo.com&amp;show_title=1&amp;show_byline=1&amp;show_portrait=0&amp;color=&amp;fullscreen=1" type="application/x-shockwave-flash" allowfullscreen="true" allowscriptaccess="always" width="400" height="302"></embed></object></p>
<p>Yensdesign has a <a href="http://yensdesign.com/2008/12/create-an-amazing-music-player-using-mouse-gestures-hotkeys-in-jquery/">nice little example of a music player UI</a> that uses mouse gestures and key handling to give a clean experience.</p>
<p><a href="http://songza.com/">Songza</a> did a great job here, and I still use it to find songs for the kids.</p>
]]></content:encoded>
			<wfw:commentRss>http://ajaxian.com/archives/music-player-ui/feed</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Seadragon: zoom deeply in the world of Ajax</title>
		<link>http://ajaxian.com/archives/seadragon</link>
		<comments>http://ajaxian.com/archives/seadragon#comments</comments>
		<pubDate>Wed, 26 Nov 2008 11:28:18 +0000</pubDate>
		<dc:creator>Dion Almaer</dc:creator>
				<category><![CDATA[Front Page]]></category>
		<category><![CDATA[Mapping]]></category>
		<category><![CDATA[UI]]></category>

		<guid isPermaLink="false">http://ajaxian.com/?p=5224</guid>
		<description><![CDATA[Bertrand Le Roy pointed me to Seadragon Ajax, a JavaScript client that gives you deep zoom (think: Google Maps) ability in short order. To build the thing itself you use Deep Zoom Composer and then you choose whether you want the Silverlight version or this Ajax one. The embed viewer is easy to use too. <a href="http://ajaxian.com/archives/seadragon">Read the rest...</a>]]></description>
			<content:encoded><![CDATA[<p>Bertrand Le Roy <a href="http://weblogs.asp.net/bleroy/archive/2008/11/20/deep-zoom-without-silverlight.aspx">pointed me</a> to <a href="http://livelabs.com/seadragon-ajax/">Seadragon Ajax</a>, a JavaScript client that gives you deep zoom (think: Google Maps) ability in short order.</p>
<p>To build the thing itself you use <a href="http://www.microsoft.com/downloads/details.aspx?familyid=457b17b7-52bf-4bda-87a3-fa8a4673f8bf&#038;displaylang=en">Deep Zoom Composer</a> and then you choose whether you want the Silverlight version or this Ajax one.</p>
<p>The <a href="http://livelabs.com/seadragon-ajax/embed-viewer/">embed viewer</a> is easy to use too.</p>
<p><script type="text/javascript" src="http://seadragon.com/ajax/embed.js"></script><script type="text/javascript">Seadragon.embed("400px", "300px", "http://seadragon.com/content/images/bike.dzi", 10928867, 8733113, 256, 1, "jpg", [[0,0,10928867,8733113,0,13],[1419478,6113179,977900,840135,0,14],[2292790,1716032,776276,1031768,0,14],[332489,946425,1452824,740129,0,14],[5430673,5897341,1292784,739918,0,14],[8474153,2177085,1544685,467074,0,14],[3991769,1044238,2758612,939629,0,14],[7640107,3470480,1088461,606256,0,14],[1419478,6113179,977900,840135,0,15],[2292790,1716032,776276,1031768,0,15],[332489,946425,1452824,740129,0,15],[5430673,5897341,1292784,739918,0,15],[8474153,2177085,1544685,467074,0,15],[6318312,1563854,346301,259725,0,15],[6494963,1832061,169649,127237,0,15],[6318312,1832061,169650,127237,0,15],[6011840,1563860,296584,395445,0,15],[4777472,1788675,207127,155345,0,15],[4988845,1788675,207126,155345,0,15],[5200220,1788675,207126,155345,0,15],[5411592,1788675,207127,155345,0,15],[4913716,1612081,231772,173828,0,15],[5149687,1612081,231771,173828,0,15],[5385659,1612081,231771,173828,0,15],[4779148,1612081,130371,173828,0,15],[7640107,3470480,1088461,606256,0,15],[1503658,6533661,505196,378897,0,16],[2217765,6534674,108027,144035,0,16],[2095335,6534674,108026,144035,0,16],[2095335,6717609,230457,172843,0,16],[2422167,2310347,517517,388139,0,16],[1066232,1044238,294749,221063,0,16],[1391231,1100691,249999,187499,0,16],[1516230,1300691,225000,168749,0,16],[1441230,1500689,194750,146063,0,16],[1241232,1500689,149999,112500,0,16],[1241232,1400690,99999,75000,0,16],[1309088,1335214,80052,60040,0,16],[1406554,1350690,62443,46833,0,16],[1423489,1409561,54839,41129,0,16],[1403794,1459170,33059,24794,0,16],[1375606,1462800,21875,16406,0,16],[5875845,6355289,357124,267843,0,16],[1364665,1444316,21882,16411,0,16],[1370450,1426159,20000,14999,0,16],[9753087,2361955,244573,183430,0,16],[1393794,1418659,20000,14999,0,16],[1409052,1435316,12000,9000,0,16],[6318312,1563854,346301,259725,0,16],[1405052,1447566,8000,6000,0,16],[6494963,1832061,169649,127237,0,16],[1397284,1447566,6165,4624,0,16],[6318312,1832061,169650,127237,0,16],[1397284,1442433,4510,3383,0,16],[6011840,1563860,296584,395445,0,16],[1402445,1438316,4000,3000,0,16],[4777472,1788675,207127,155345,0,16],[1397598,1442045,4510,3382,0,16],[4988845,1788675,207126,155345,0,16],[5200220,1788675,207126,155345,0,16],[5411592,1788675,207127,155345,0,16],[4913716,1612081,231772,173828,0,16],[5149687,1612081,231771,173828,0,16],[5385659,1612081,231771,173828,0,16],[4779148,1612081,130371,173828,0,16],[7640107,3470480,1088461,606256,0,16],[1503658,6533661,505196,378897,0,17],[2217765,6534674,108027,144035,0,17],[2095335,6534674,108026,144035,0,17],[2095335,6717609,230457,172843,0,17],[2422167,2310347,517517,388139,0,17],[1066232,1044238,294749,221063,0,17],[1391231,1100691,249999,187499,0,17],[1516230,1300691,225000,168749,0,17],[1441230,1500689,194750,146063,0,17],[1241232,1500689,149999,112500,0,17],[1241232,1400690,99999,75000,0,17],[1309088,1335214,80052,60040,0,17],[1406554,1350690,62443,46833,0,17],[1423489,1409561,54839,41129,0,17],[1403794,1459170,33059,24794,0,17],[1375606,1462800,21875,16406,0,17],[5875845,6355289,357124,267843,0,17],[1364665,1444316,21882,16411,0,17],[1370450,1426159,20000,14999,0,17],[9753087,2361955,244573,183430,0,17],[1393794,1418659,20000,14999,0,17],[1409052,1435316,12000,9000,0,17],[1405052,1447566,8000,6000,0,17],[6494963,1832061,169649,127237,0,17],[1397284,1447566,6165,4624,0,17],[6318312,1832061,169650,127237,0,17],[1397284,1442433,4510,3383,0,17],[6011840,1563860,296584,395445,0,17],[1402445,1438316,4000,3000,0,17],[4777472,1788675,207127,155345,0,17],[1397598,1442045,4510,3382,0,17],[4988845,1788675,207126,155345,0,17],[5200220,1788675,207126,155345,0,17],[5411592,1788675,207127,155345,0,17],[4913716,1612081,231772,173828,0,17],[5149687,1612081,231771,173828,0,17],[5385659,1612081,231771,173828,0,17],[4779148,1612081,130371,173828,0,17],[8378574,3833276,279907,209930,0,17],[8378574,3612101,279907,209930,0,17],[1503658,6533661,505196,378897,0,18],[2217765,6534674,108027,144035,0,18],[2095335,6534674,108026,144035,0,18],[2095335,6717609,230457,172843,0,18],[1066232,1044238,294749,221063,0,18],[1391231,1100691,249999,187499,0,18],[1516230,1300691,225000,168749,0,18],[1441230,1500689,194750,146063,0,18],[1241232,1500689,149999,112500,0,18],[1241232,1400690,99999,75000,0,18],[1309088,1335214,80052,60040,0,18],[1406554,1350690,62443,46833,0,18],[1423489,1409561,54839,41129,0,18],[1403794,1459170,33059,24794,0,18],[1375606,1462800,21875,16406,0,18],[5875845,6355289,357124,267843,0,18],[1364665,1444316,21882,16411,0,18],[1370450,1426159,20000,14999,0,18],[9753087,2361955,244573,183430,0,18],[1393794,1418659,20000,14999,0,18],[1409052,1435316,12000,9000,0,18],[1405052,1447566,8000,6000,0,18],[6494963,1832061,169649,127237,0,18],[1397284,1447566,6165,4624,0,18],[6318312,1832061,169650,127237,0,18],[1397284,1442433,4510,3383,0,18],[6011840,1563860,296584,395445,0,18],[1402445,1438316,4000,3000,0,18],[4777472,1788675,207127,155345,0,18],[1397598,1442045,4510,3382,0,18],[4988845,1788675,207126,155345,0,18],[5200220,1788675,207126,155345,0,18],[5411592,1788675,207127,155345,0,18],[4913716,1612081,231772,173828,0,18],[5149687,1612081,231771,173828,0,18],[5385659,1612081,231771,173828,0,18],[4779148,1612081,130371,173828,0,18],[8378574,3833276,279907,209930,0,18],[8378574,3612101,279907,209930,0,18],[2217765,6534674,108027,144035,0,19],[2095335,6534674,108026,144035,0,19],[2095335,6717609,230457,172843,0,19],[1391231,1100691,249999,187499,0,19],[1516230,1300691,225000,168749,0,19],[1441230,1500689,194750,146063,0,19],[1241232,1500689,149999,112500,0,19],[1241232,1400690,99999,75000,0,19],[1309088,1335214,80052,60040,0,19],[1406554,1350690,62443,46833,0,19],[1423489,1409561,54839,41129,0,19],[1403794,1459170,33059,24794,0,19],[1375606,1462800,21875,16406,0,19],[1364665,1444316,21882,16411,0,19],[1370450,1426159,20000,14999,0,19],[9753087,2361955,244573,183430,0,19],[1393794,1418659,20000,14999,0,19],[1409052,1435316,12000,9000,0,19],[1405052,1447566,8000,6000,0,19],[6494963,1832061,169649,127237,0,19],[1397284,1447566,6165,4624,0,19],[6318312,1832061,169650,127237,0,19],[1397284,1442433,4510,3383,0,19],[1402445,1438316,4000,3000,0,19],[4777472,1788675,207127,155345,0,19],[1397598,1442045,4510,3382,0,19],[4988845,1788675,207126,155345,0,19],[5200220,1788675,207126,155345,0,19],[5411592,1788675,207127,155345,0,19],[4913716,1612081,231772,173828,0,19],[5149687,1612081,231771,173828,0,19],[5385659,1612081,231771,173828,0,19],[4779148,1612081,130371,173828,0,19],[1241232,1400690,99999,75000,0,20],[1309088,1335214,80052,60040,0,20],[1406554,1350690,62443,46833,0,20],[1423489,1409561,54839,41129,0,20],[1403794,1459170,33059,24794,0,20],[1375606,1462800,21875,16406,0,20],[1364665,1444316,21882,16411,0,20],[1370450,1426159,20000,14999,0,20],[1393794,1418659,20000,14999,0,20],[1409052,1435316,12000,9000,0,20],[1405052,1447566,8000,6000,0,20],[1397284,1447566,6165,4624,0,20],[1397284,1442433,4510,3383,0,20],[1402445,1438316,4000,3000,0,20],[1397598,1442045,4510,3382,0,20],[1406554,1350690,62443,46833,0,21],[1423489,1409561,54839,41129,0,21],[1403794,1459170,33059,24794,0,21],[1375606,1462800,21875,16406,0,21],[1364665,1444316,21882,16411,0,21],[1370450,1426159,20000,14999,0,21],[1393794,1418659,20000,14999,0,21],[1409052,1435316,12000,9000,0,21],[1405052,1447566,8000,6000,0,21],[1397284,1447566,6165,4624,0,21],[1397284,1442433,4510,3383,0,21],[1402445,1438316,4000,3000,0,21],[1397598,1442045,4510,3382,0,21],[1375606,1462800,21875,16406,0,22],[1364665,1444316,21882,16411,0,22],[1370450,1426159,20000,14999,0,22],[1393794,1418659,20000,14999,0,22],[1409052,1435316,12000,9000,0,22],[1405052,1447566,8000,6000,0,22],[1397284,1447566,6165,4624,0,22],[1397284,1442433,4510,3383,0,22],[1402445,1438316,4000,3000,0,22],[1397598,1442045,4510,3382,0,22],[1409052,1435316,12000,9000,0,23],[1405052,1447566,8000,6000,0,23],[1397284,1447566,6165,4624,0,23],[1397284,1442433,4510,3383,0,23],[1402445,1438316,4000,3000,0,23],[1397598,1442045,4510,3382,0,23],[1405052,1447566,8000,6000,0,24],[1397284,1447566,6165,4624,0,24],[1397284,1442433,4510,3383,0,24],[1402445,1438316,4000,3000,0,24],[1397598,1442045,4510,3382,0,24]]);</script></p>
]]></content:encoded>
			<wfw:commentRss>http://ajaxian.com/archives/seadragon/feed</wfw:commentRss>
		<slash:comments>7</slash:comments>
		</item>
		<item>
		<title>Time Picker UI</title>
		<link>http://ajaxian.com/archives/time-picker-ui</link>
		<comments>http://ajaxian.com/archives/time-picker-ui#comments</comments>
		<pubDate>Wed, 12 Nov 2008 05:01:53 +0000</pubDate>
		<dc:creator>Dion Almaer</dc:creator>
				<category><![CDATA[Front Page]]></category>
		<category><![CDATA[jQuery]]></category>
		<category><![CDATA[UI]]></category>
		<category><![CDATA[Usability]]></category>

		<guid isPermaLink="false">http://ajaxian.com/?p=5041</guid>
		<description><![CDATA[John Resig linked to an interesting new time picker UI that Maxime Haineault implemented as a jQuery plugin: He made a "two click" time picker. The first click is within the time field. This activates the display and allows the user to choose the time - all of which is done by moving the mouse <a href="http://ajaxian.com/archives/time-picker-ui">Read the rest...</a>]]></description>
			<content:encoded><![CDATA[<p><a href="http://ejohn.org/blog/picking-time/"><img src="http://ejohn.org/files/timepicker.png" border="0" /></a></p>
<p>John Resig <a href="http://ejohn.org/blog/picking-time/">linked to</a> an interesting new <a href="http://haineault.com/media/jquery/ui-timepickr/page/">time picker UI</a> that Maxime Haineault implemented as a jQuery plugin:</p>
<blockquote><p>
He made a "two click" time picker. The first click is within the time field. This activates the display and allows the user to choose the time - all of which is done by moving the mouse over the times that you desire. The final click is anywhere - filling in the time that was chosen. It's hard to explain, you simply have to try it.</p>
<p>One thing that you'll notice using it is that it's fast. Very fast. I'd argue much faster than clicking into the input area, moving to the keyboard for entering the time, typing the time, then moving back to mouse.
</p></blockquote>
<p>I would be remiss not to mention John's other post of the day, where he goes into detail on <a href="http://ejohn.org/blog/css-animations-and-javascript/">CSS Animations and CSS Animations</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://ajaxian.com/archives/time-picker-ui/feed</wfw:commentRss>
		<slash:comments>16</slash:comments>
		</item>
		<item>
		<title>Non-Euclidean Browser UI</title>
		<link>http://ajaxian.com/archives/non-euclidean-browser-ui</link>
		<comments>http://ajaxian.com/archives/non-euclidean-browser-ui#comments</comments>
		<pubDate>Wed, 15 Oct 2008 11:16:06 +0000</pubDate>
		<dc:creator>Dion Almaer</dc:creator>
				<category><![CDATA[Browsers]]></category>
		<category><![CDATA[Front Page]]></category>
		<category><![CDATA[UI]]></category>

		<guid isPermaLink="false">http://ajaxian.com/?p=4770</guid>
		<description><![CDATA[The video above by Ron Brinkmann is his mockup of a non-euclidean browser UI which looks a touch like the magnifying glass tool on the iPhone, and aims to give you your data in a readable way, while still showing the larger context: The reason why I think an interface like this can be superior <a href="http://ajaxian.com/archives/non-euclidean-browser-ui">Read the rest...</a>]]></description>
			<content:encoded><![CDATA[<p><object width="480" height="482"><param name="allowfullscreen" value="true" /><param name="allowscriptaccess" value="always" /><param name="movie" value="http://vimeo.com/moogaloop.swf?clip_id=1478902&amp;server=vimeo.com&amp;show_title=1&amp;show_byline=0&amp;show_portrait=0&amp;color=01AAEA&amp;fullscreen=1" /><embed src="http://vimeo.com/moogaloop.swf?clip_id=1478902&amp;server=vimeo.com&amp;show_title=1&amp;show_byline=0&amp;show_portrait=0&amp;color=01AAEA&amp;fullscreen=1" type="application/x-shockwave-flash" allowfullscreen="true" allowscriptaccess="always" width="480" height="482"></embed></object></p>
<p>The video above by Ron Brinkmann is his mockup of a <a href="http://digitalcomposting.wordpress.com/2008/08/08/non-euclidean-user-interfaces-2/">non-euclidean browser UI</a> which looks a touch like the magnifying glass tool on the iPhone, and aims to give you your data in a readable way, while still showing the larger context:</p>
<blockquote><p>
The reason why I think an interface like this can be superior in many ways is that it allows you to specify an area of interest where you get full, detailed information yet you can still see the full document/page/object at the same time.  Which means that one is able to avoid the zoom(in/out)-scroll-zoom(in/out)-scroll paradigm that you often get stuck in when using, for example, the iphone.   In many ways it gives the user an analogue to the way peripheral vision works in the ‘real world’.  You have an area of interest that you can focus on but then you’re also aware of the surroundings and glean information from that as well.</p>
<p>(The mockup I did above just shows a single point-of-interest but it’s certainly expandable to multiple points if you’ve got a touchscreen or other such device.  And there’s all sort of little refinements you’d want to implement if you really wanted to make it swank - drag&#038;drop from one place to another might want to keep the source area zoomed but also follow the dragged object with a zoom-region until you get to the appropriate destination. This all gets even sexier once eye-tracking becomes more available - the area you’re looking at would bubble up to full resolution but you’d still be able to quickly scan the entire page and re-target the area of interest.  Somebody get busy on this, okay?)
</p></blockquote>
<p>In his post, Ron then shows other subtle examples, such as mapping this to peripheral vision.</p>
]]></content:encoded>
			<wfw:commentRss>http://ajaxian.com/archives/non-euclidean-browser-ui/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Nice new Dojo aggregate effects</title>
		<link>http://ajaxian.com/archives/nice-new-dojo-aggregate-effects</link>
		<comments>http://ajaxian.com/archives/nice-new-dojo-aggregate-effects#comments</comments>
		<pubDate>Mon, 18 Aug 2008 11:33:16 +0000</pubDate>
		<dc:creator>Dion Almaer</dc:creator>
				<category><![CDATA[Dojo]]></category>
		<category><![CDATA[Front Page]]></category>
		<category><![CDATA[UI]]></category>
		<category><![CDATA[effects]]></category>

		<guid isPermaLink="false">http://ajaxian.com/?p=4116</guid>
		<description><![CDATA[Dojo has some nice new compound effects in the works. Some of the new effects include block fades, disintergrate, explode, shear, and pinwheel. Each effect can be tweaked with config such as: The number of rows and columns in which to split the element The distance the pieces travel (as a multiple of the element's <a href="http://ajaxian.com/archives/nice-new-dojo-aggregate-effects">Read the rest...</a>]]></description>
			<content:encoded><![CDATA[<p><a href="http://gruppler.dojotoolkit.org/"><img src="http://ajaxian.com/wp-content/uploads/dojoeffects.png" alt="" title="New Dojo Effects" width="500" height="314" border="0" /></a></p>
<p>Dojo has some nice <a href="http://gruppler.dojotoolkit.org/">new compound effects in the works</a>. Some of the new effects include block fades, disintergrate, explode, shear, and pinwheel.</p>
<p>Each effect can be tweaked with config such as:</p>
<ul>
<li>The number of rows and columns in which to split the element</li>
<li>The distance the pieces travel (as a multiple of the element's respective dimensions)</li>
<li>Whether or not to fade the pieces in/out</li>
<li>How much the effect should be randomized (a percentage)</li>
<li>Whether or not the pieces should appear outside the element's boundaries</li>
</ul>
<p>You will also see effects that work on the text within divs, as well as pieces of the div itself.</p>
]]></content:encoded>
			<wfw:commentRss>http://ajaxian.com/archives/nice-new-dojo-aggregate-effects/feed</wfw:commentRss>
		<slash:comments>11</slash:comments>
		</item>
		<item>
		<title>Facelift Image Replacement; Another look at sIFR type work</title>
		<link>http://ajaxian.com/archives/facelift-image-replacement-another-look-at-sifr-type-work</link>
		<comments>http://ajaxian.com/archives/facelift-image-replacement-another-look-at-sifr-type-work#comments</comments>
		<pubDate>Tue, 05 Aug 2008 13:42:45 +0000</pubDate>
		<dc:creator>Dion Almaer</dc:creator>
				<category><![CDATA[Front Page]]></category>
		<category><![CDATA[UI]]></category>
		<category><![CDATA[typography]]></category>

		<guid isPermaLink="false">http://ajaxian.com/?p=4015</guid>
		<description><![CDATA[Facelift Image Replacement (or FLIR, pronounced fleer) is an image replacement script that dynamically generates image representations of text on your web page in fonts that otherwise might not be visible to your visitors. The generated image will be automatically inserted into your web page via Javascript and visible to all modern browsers. Any element <a href="http://ajaxian.com/archives/facelift-image-replacement-another-look-at-sifr-type-work">Read the rest...</a>]]></description>
			<content:encoded><![CDATA[<p><img src="http://ajaxian.com/wp-content/uploads/facelift.png" alt="" title="Facelift" width="480" height="117" border="0" /></p>
<blockquote><p>
<a href="http://facelift.mawhorter.net/">Facelift Image Replacement</a> (or FLIR, pronounced fleer) is an image replacement script that dynamically generates image representations of text on your web page in fonts that otherwise might not be visible to your visitors. The generated image will be automatically inserted into your web page via Javascript and visible to all modern browsers. Any element with text can be replaced: from headers (&lt;h1&gt;, &lt;h2&gt;, etc.) to &lt;span&gt; elements and everything in between!
</p></blockquote>
<p>sIFR takes over the elements and puts small swf files into place. FLIR on the other hand generates images on the server and puts them in place. They both suffer from the progressive switch in place that you often see as you watch the page load.</p>
<p>Also, one downside is that once the text is an image you can't copy and paste it. Ben can once again drool over the typography.</p>
]]></content:encoded>
			<wfw:commentRss>http://ajaxian.com/archives/facelift-image-replacement-another-look-at-sifr-type-work/feed</wfw:commentRss>
		<slash:comments>18</slash:comments>
		</item>
	</channel>
</rss>

