<?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>CSS Wizardry &#187; Web Development</title>
	<atom:link href="http://csswizardry.com/category/web-development/feed/" rel="self" type="application/rss+xml" />
	<link>http://csswizardry.com</link>
	<description>Just another WordPress weblog</description>
	<lastBuildDate>Tue, 11 May 2010 11:00:32 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.8.6</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Building sites without using IDs or classes</title>
		<link>http://csswizardry.com/2010/04/building-sites-without-using-ids-or-classes/</link>
		<comments>http://csswizardry.com/2010/04/building-sites-without-using-ids-or-classes/#comments</comments>
		<pubDate>Wed, 07 Apr 2010 12:17:09 +0000</pubDate>
		<dc:creator>Harry Roberts</dc:creator>
				<category><![CDATA[Web Development]]></category>
		<category><![CDATA[CSS]]></category>
		<category><![CDATA[CSS3]]></category>
		<category><![CDATA[HTML]]></category>
		<category><![CDATA[Semantics]]></category>

		<guid isPermaLink="false">http://csswizardry.com/?p=1216</guid>
		<description><![CDATA[This morning, for one reason or another, I decided to have a go at coding up a page without using any IDs or classes in my markup, and therefore none in my CSS. I&#8217;m not sure why I tried it, I guess I just did&#8230; In order to make it a fairly painless job I [...]]]></description>
			<content:encoded><![CDATA[<p><span class="opener"><span>T</span>his</span> morning, for one reason or another, I decided to have a go at coding up a page without using any IDs or classes in my markup, and therefore none in my CSS. I&#8217;m not sure why I tried it, I guess I just did&#8230; In order to make it a fairly painless job I dove straight into the browser and coded up a simple header, footer, two column layout. <a href="/demos/sites-without-ids-classes/">View the demo</a> and be sure to view the source.</p>
<p><span id="more-1216"></span></p>
<p>Using a combination of more advanced selectors such as sibling and <code>nth-of-type</code> you can target elements based on their position in the markup rather than a given name. The practical upshot of this is that your markup is much leaner and cleaner, removing class and ID names has a notable impact.</p>
<h2>Using advanced selectors</h2>
<p class="marginalia">For a complete list please see <a href="http://www.w3.org/TR/css3-selectors/">http://www.w3.org/TR/css3-selectors/</a></p>
<p>The more advanced selectors take information about an element to determine whether it matches a certain criteria, for example <code>body&gt;div</code> will target a <code>div</code> that is a direct and immediate descendant of the <code>body</code>; <code>p+p</code> will target a paragraph immediately preceded by a paragraph.</p>
<p>On this basis, you could select (for example) your main content <code>div</code> by knowing that it&#8217;s the second <code>div</code> in your content wrapper: <code>body&gt;div div:nth-of-type(2)</code>. Broken down we have:</p>
<ul>
<li><code>body</code>&mdash;sets the root</li>
<li><code>&gt;div</code>&mdash;the first <code>div</code> inside the body (the wrapper <code>div</code>)</li>
<li><code>div:nth-of-type(2)</code>&mdash;the second <code>div</code> in the wrapper (just after the header <code>div</code>).</li>
</ul>
<h2>Why I think this won&#8217;t catch on</h2>
<p class="marginalia">For the time being, let&#8217;s completely disregard that Internet Explorer completely disregards these selectors&#8230;</p>
<p>As you can see from the above example, targeting the single, lone, unique content <code>div</code> has taken two advanced selectors and 27 bytes. The selectors are fixed, the content <code>div</code> will always have to be the second <code>div</code> in the <code>div</code> that is an immediate child of the <code>body</code>. This is incredibly restrictive. Surely <code>#content{&hellip;}</code> is far better than <code>body>div div:nth-of-type(2){&hellip;}</code>&hellip;?</p>
<p>For the sake of ease, instead of rambling about pros and cons, I&#8217;ve simply drawn up a list of advantages and disadvantages:</p>
<h3>Advantages:</h3>
<ul>
<li>Leaner markup.</li>
<li>Promotes more sensible structuring of code.</li>
<li>Promotes semantics.</li>
</ul>
<h3>Disadvantages:</h3>
<ul>
<li>Difficult syntaxes to remember.</li>
<li>Extremely restrictive&mdash;elements are styled based on their location meaning that any moving/restructuring means all styles tied to an element are lost. This leads me on to&#8230;</li>
<li>The CSS is no longer just describing style, it also describes structure. CSS is a styling language, not a markup one.</li>
<li>Arbitrary elements such as images and <code>div</code>s that change depending on page content (blog posts for example) aren&#8217;t fixed enough to be styled based on their structure. This means that any variable content will require IDs and classes anyway, so you might as well us them across the board as opposed to a mix of with and without.</li>
<li>Difficult to understand. I wrote <a href="/demos/sites-without-ids-classes/css/style.css">the CSS for the demo page</a> and I&#8217;m having a hard enough time doing the calculations to work out what does what. Imagine inheriting that!</li>
<li>Jenga. As soon as you alter your markup, the structure dependent CSS will come falling down too, what might be the first child might become the second, making the second child the third and so on, creating a domino effect.</li>
</ul>
<h3>Final word</h3>
<p>While the more advanced CSS(3) selectors are impressive, and incredibly powerful, they aren&#8217;t flexible enough to allow any large dependency upon them. That, and they&#8217;re more awkward to understand than the tried and tested ID/class &#8216;hooks&#8217; we know and use. There are far too many downsides to make cleaner markup a big enough plus-side in my opinion&#8230; Oh, and Internet Explorer doesn&#8217;t seem to honour any of them, but that can&#8217;t have come as much of a surprise.</p>
]]></content:encoded>
			<wfw:commentRss>http://csswizardry.com/2010/04/building-sites-without-using-ids-or-classes/feed/</wfw:commentRss>
		<slash:comments>33</slash:comments>
		</item>
		<item>
		<title>Moving forward is holding us back</title>
		<link>http://csswizardry.com/2010/03/moving-forward-is-holding-us-back/</link>
		<comments>http://csswizardry.com/2010/03/moving-forward-is-holding-us-back/#comments</comments>
		<pubDate>Tue, 02 Mar 2010 22:03:28 +0000</pubDate>
		<dc:creator>Harry Roberts</dc:creator>
				<category><![CDATA[Web Development]]></category>
		<category><![CDATA[Accessibility]]></category>
		<category><![CDATA[iPhone]]></category>
		<category><![CDATA[Optimisation]]></category>

		<guid isPermaLink="false">http://csswizardry.com/?p=840</guid>
		<description><![CDATA[For years, web developers have been looking forward to that next feature, that new and monumental shift which has allowed them to break away from the shackles of obsolescence and adopt new and forward thinking technologies. But it is beginning to come full circle&#8212;that thirst for new technology has slowly brought us back to square [...]]]></description>
			<content:encoded><![CDATA[<p><span class="opener"><span>F</span>or</span> years, web developers have been looking forward to that next feature, that new and monumental shift which has allowed them to break away from the shackles of obsolescence and adopt new and forward thinking technologies. But it is beginning to come full circle&mdash;that thirst for new technology has slowly brought us back to square one, reimposing the constraints that we have, for years, tried to rid ourselves of. <em>Moving forward is holding us back</em>.</p>
<p><span id="more-840"></span></p>
<p>Okay, okay. That was a very alarmist intro. There is no web developers&#8217; apocalypse around the corner (not that I know of anyway, please don&#8217;t take anything I say about the apocalypse as read. I don&#8217;t want that responsibility.), nor are we going to have to regress to using tables and spacer GIFs again. The real issue here is that with all this new technology that keeps emerging and exciting web developers is unwittingly reimposing the restrictions of yesteryear&#8230;</p>
<h2>Screen resolutions</h2>
<p class="marginalia">Remember trying to break away from 800&#215;600px?</p>
<p>With the movement toward a more mobile web, screen resolutions are in fact getting smaller. The iPhone&#8217;s maximum resolution is 480px, increasingly popular netbooks are set at about 1024px wide. Such a shift toward mobile and portable devices mean that screen sizes are actually getting <em>smaller</em>.</p>
<p>In my opinion, <a href="http://csswizardry.com/2010/01/iphone-css-tips-for-building-iphone-websites/" title="iPhone CSS&mdash;tips for building iPhone websites">iPhones and other mobile devices should be handled separately</a>, serving them device specific CSS. Netbooks on the other hand are still &#8216;desktop&#8217; machines like any other. Their smallness is their key feature, and at 1024px horizontal resolution, they aren&#8217;t that small anyway&#8230;</p>
<p>With <a href="http://960.gs/">the 960 Grid System</a>, and <a href="http://csswizardry.com/type-tips/#tip-09" title="Type Tip nine: Line Length Matters">an optimum line length of 52&ndash;78 characters</a>, sticking to 1024px shouldn&#8217;t be that difficult anyway. I believe that although desktop monitor sizes are generally getting larger, other equally important technologies are creeping up, and as responsible developers you should cater for them. Sure you may want to start adopting <a href="http://sam.brown.tc/entry/379/the-new-massive-blue" title="A post by Sam Brown on the redesign of Massive Blue">the 1080 grid</a>, which is all well and good if you know your audience, but to cater for the majority, we&#8217;re <em>not ready to burst 1024 yet</em>.</p>
<h2>Connection speeds</h2>
<p class="marginalia">Remember building for 56k dial up connections? (I don&#8217;t)</p>
<p>Where permanent and fixed connections are getting much faster, connections to mobile devices through means such as 3G are <em>much</em> slower. The ability to optimise sites to be fast loading over such connections is getting more important. As edge-case resolutions are getting smaller, edge-case connections are getting slower. Much slower.</p>
<h3>A word on Flash</h3>
<p class="marginalia">Remember <a href="http://www.2advanced.com/">2Advanced</a>? A site of yesteryear&#8230;</p>
<p>Flash seems to be dying a death anyway these days, slowly being superseded by Javascript and Canvas <span xml:lang="la" lang="la" title="and others">et al</span>. However, what was once a fantastically powerful technology has been ousted completely from Apple&#8217;s <i>i</i> products, making in an inviable option for content which needs to be universally accessible.</p>
<h3>A real life example?</h3>
<p>Anyone with an iPhone will know what I mean&mdash;spending any amount of time on an iPhone loading poorly optimised sites is a real grind, and via some sensible optimisation these problems can be easily alleviated.</p>
<p>However, a more interesting example might be the one that happened to myself&#8230; When <a href="http://csswizardry.com/2010/01/pastures-newfrom-sense-to-venturelab/" title="Pastures new&mdash;from Sense to Venturelab">we first started at Venturelab</a> we really were building the company from the ground up. For the first few weeks we were without desktop machines <em>and</em> internet. I was working on a 10.1&Prime; netbook with a screen resolution of 1024&#215;600px, and over a poor 3G connection via a dongle.</p>
<blockquote><p>&ldquo;Accessibility isn&#8217;t just about disabilities, it&#8217;s about varying degrees of ability to access content.&rdquo;</p>
</blockquote>
<p>Working in this manner really made me wonder whether enough people are delivering content in a manner which is accessible on numerous levels. Accessibility isn&#8217;t just about disabilities, it&#8217;s about varying degrees of ability to access content. As responsible developers your content should be accessible through a full spectrum of means and in an acceptable manner.</p>
<p>All it takes is some decent optimisation (which is also set to reap SEO benefits) and a reasonable page layout and you&#8217;re already halfway there.</p>
]]></content:encoded>
			<wfw:commentRss>http://csswizardry.com/2010/03/moving-forward-is-holding-us-back/feed/</wfw:commentRss>
		<slash:comments>13</slash:comments>
		</item>
		<item>
		<title>A quick note on border radius</title>
		<link>http://csswizardry.com/2010/03/a-quick-note-on-border-radius/</link>
		<comments>http://csswizardry.com/2010/03/a-quick-note-on-border-radius/#comments</comments>
		<pubDate>Tue, 02 Mar 2010 10:34:55 +0000</pubDate>
		<dc:creator>Harry Roberts</dc:creator>
				<category><![CDATA[Web Development]]></category>
		<category><![CDATA[Border Radius]]></category>
		<category><![CDATA[CSS3]]></category>

		<guid isPermaLink="false">http://csswizardry.com/?p=853</guid>
		<description><![CDATA[This is a quick post concerning the border-radius CSS3 property, and the syntax behind it. After coming across this site earlier today via Twitter I remembered my initial frustrations with lack of uniformity across user agents and their required syntax in order to create round corners; Firefox requiring a different format to Webkit and the [...]]]></description>
			<content:encoded><![CDATA[<p><span class="opener"><span>T</span>his</span> is a quick post concerning the <code>border-radius</code> CSS3 property, and the syntax behind it. After coming across <a href="http://www.border-radius.com/">this site</a> earlier today via <a href="http://twitter.com/csswizardry" title="Harry Roberts on Twitter">Twitter</a> I remembered my initial frustrations with lack of uniformity across user agents and their required syntax in order to create round corners; Firefox requiring a different format to Webkit and the CSS3 spec was pretty annoying.</p>
<p><span id="more-853"></span></p>
<p>However, it&#8217;s not all that bad. As border-radius.com would have you believe, the syntax to create an element with top&ndash;left and bottom&ndash;right corners with a 50px round, and top&ndash;right and bottom&ndash;left corners with 10px rounds would be:</p>
<pre><code>-webkit-border-radius: 50px;
-webkit-border-top-right-radius: 10px;
-webkit-border-bottom-left-radius: 10px;
-moz-border-radius: 50px;
-moz-border-radius-topright: 10px;
-moz-border-radius-bottomleft: 10px;
border-radius: 50px;
border-top-right-radius: 10px;
border-bottom-left-radius: 10px;</code></pre>
<p>Wrong, you can actually use the <code>border-radius</code> shorthand to nail this in three lines:</p>
<pre><code>-moz-border-radius:50px 10px 50px 10px;
-webkit-border-radius:50px 10px 50px 10px;
border-radius:50px 10px 50px 10px;</code></pre>
<p>The sytanx follows the following rule: <code>border-radius:top&ndash;left top&ndash;right bottom&ndash;right bottom&ndash;left;</code>. I&#8217;ve tested this in Firefox (<code>-moz-border-radius</code>), Webkit (<code>-webkit-border-radius</code>) and Opera (<code>border-radius</code>) and <a href="http://csswizardry.com/demos/border-radius/" title="Border radius demo">it works just fine</a>.</p>
<h2><ins datetime="2010-03-02T10:44:38+00:00">Addendum</ins></h2>
<p>You&#8217;d think Webkit would just be Webkit, right? Wrong. This works in Chrome but <em>not</em> Safari. I&#8217;ve had reports that Safari 4.0.4 (I guess it&#8217;s <em>not found it</em>, get it? Oh never mind.) doesn&#8217;t work. Useful&#8230;</p>
<p>Still, this version will work, and is still considerably shorter:</p>
<pre><code>-webkit-border-radius: 50px;
-webkit-border-top-right-radius: 10px;
-webkit-border-bottom-left-radius: 10px;
-moz-border-radius:50px 10px 50px 10px;
border-radius:50px 10px 50px 10px;</code></pre>
]]></content:encoded>
			<wfw:commentRss>http://csswizardry.com/2010/03/a-quick-note-on-border-radius/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
		<item>
		<title>Suzanna Haworth Photography redesign</title>
		<link>http://csswizardry.com/2010/02/suzanna-haworth-redesign/</link>
		<comments>http://csswizardry.com/2010/02/suzanna-haworth-redesign/#comments</comments>
		<pubDate>Sun, 28 Feb 2010 17:40:52 +0000</pubDate>
		<dc:creator>Harry Roberts</dc:creator>
				<category><![CDATA[Portfolio]]></category>
		<category><![CDATA[Web Development]]></category>
		<category><![CDATA[Design]]></category>
		<category><![CDATA[Development]]></category>
		<category><![CDATA[Photography]]></category>
		<category><![CDATA[Redesign]]></category>
		<category><![CDATA[Wordpress]]></category>

		<guid isPermaLink="false">http://csswizardry.com/?p=834</guid>
		<description><![CDATA[Having only put the first version of Suze&#8217;s site live a few months ago, we both decided it needed a whole new approach. Originally a static site, built with my own PHP framework, it relied on manual updates from me, which meant that for the sake of efficiency updates had to happen once there was [...]]]></description>
			<content:encoded><![CDATA[<p><span class="opener"><span>H</span>aving</span> only put the first version of Suze&#8217;s site live <a href="http://csswizardry.com/2009/12/suzanna-haworth-photography/" title="CSS Wizardry article from Dec 09 covering the first design of the site">a few months ago</a>, we both decided it needed a whole new approach. Originally a static site, built with my own PHP framework, it relied on manual updates from me, which meant that for the sake of efficiency updates had to happen once there was enough content to upload; ergo not very often. After porting CSS Wizardry over to Wordpress and being very impressed, I decided that was the best approach for Suze too. This meant she could update her own site as often as she wanted.</p>
<p><a href="http://suzannahaworth.com/" title="Visit Suzanna Haworth Photography" style="background:none;"><img src="http://csswizardry.com/wp-content/uploads/2010/02/suze-site.jpg" alt="A screenshot of Suzanna&#039;s new site" width="640" height="368" class="full" /></a></p>
<p class="marginalia">Also, <a href="http://twitter.com/suzehaworth">follow Suze on Twitter</a>.</p>
<p>As the site was built very quickly, we are adapting it as it grows and fixing any bugs as they happen. Let me know if you find anything astray. Anyway, enough talking, <a href="http://suzannahaworth.com/" title="Visit Suzanna Haworth Photography">go look for yourselves</a>!</p>
]]></content:encoded>
			<wfw:commentRss>http://csswizardry.com/2010/02/suzanna-haworth-redesign/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Typographic phrases (or: how to turn sayings geeky)</title>
		<link>http://csswizardry.com/2010/02/typographic-phrases-or-how-to-turn-sayings-geeky/</link>
		<comments>http://csswizardry.com/2010/02/typographic-phrases-or-how-to-turn-sayings-geeky/#comments</comments>
		<pubDate>Fri, 19 Feb 2010 09:46:28 +0000</pubDate>
		<dc:creator>Harry Roberts</dc:creator>
				<category><![CDATA[Typography]]></category>
		<category><![CDATA[Web Development]]></category>
		<category><![CDATA[Writing]]></category>
		<category><![CDATA[Design]]></category>
		<category><![CDATA[Development]]></category>

		<guid isPermaLink="false">http://csswizardry.com/?p=780</guid>
		<description><![CDATA[A while ago I had the idea to express some old sayings in a silly, geeky way, using code and logic to express logically, the meaning behind some well known phrases. I got Illustrator fired up last night and decided to finally got a few made. They&#8217;re kind of obvious really, even a non-developer brain [...]]]></description>
			<content:encoded><![CDATA[<p><span class="opener"><span>A</span> while</span> ago I had the idea to express some old sayings in a silly, geeky way, using code and logic to express logically, the meaning behind some well known phrases. I got Illustrator fired up last night and decided to finally got a few made. They&#8217;re kind of obvious really, even a non-developer brain can make sense of them, and deciphering the saying is pretty simple, but I think they&#8217;re cool nonetheless.</p>
<h2>Many hands make light work</h2>
<p><img src="http://csswizardry.com/wp-content/uploads/2010/02/many-hands.jpg" alt="Many hands make light work" width="640" height="452" class="full" /></p>
<p><span id="more-780"></span></p>
<p>There are lots of contradictions in sayings and phrases. Like this one, if many hands do make light work, then how does this next one work?</p>
<h2>Too many cooks spoil the broth</h2>
<p><img src="http://csswizardry.com/wp-content/uploads/2010/02/too-many-cooks.jpg" alt="Too many cooks spoil the broth" width="640" height="452" class="full" /></p>
<h2>A stitch in time&#8230;</h2>
<p><img src="http://csswizardry.com/wp-content/uploads/2010/02/a-stitch-in-time.jpg" alt="A stitch in time saves nine" width="640" height="452" class="full" /></p>
<h2>While the cat is away&#8230;</h2>
<p><img src="http://csswizardry.com/wp-content/uploads/2010/02/while-the-cat-is-away.jpg" alt="While the cat is away the mice will play" width="640" height="452" class="full" /></p>
<h2>Absence makes the heart grow fonder vs. time is a great healer</h2>
<p><img src="http://csswizardry.com/wp-content/uploads/2010/02/absence.jpg" alt="Absence makes the heart grow fonder vs. time is a great healer" width="640" height="452" class="full" /></p>
<p>This one is another glaring contradiction, so I decided to combine the two into one poster.</p>
<h2>Out of sight, out of mind</h2>
<p><img src="http://csswizardry.com/wp-content/uploads/2010/02/out-of-sight.jpg" alt="Out of sight, out of mind" width="640" height="452" class="full" /></p>
<h2>Two wrongs don&#8217;t make a right</h2>
<p>This one doesn&#8217;t really follow the code paradigm, but I thought I&#8217;d include it anyway.</p>
<p><img src="http://csswizardry.com/wp-content/uploads/2010/02/two-wrongs.jpg" alt="Two wrongs don&#039;t make a right" width="640" height="452" class="full" /></p>
<p>Got any more that would work in this way? Leave any suggestions in the comments.</p>
<p>Also, I do realise that, programmatically, not all of these posters make perfect sense. For example, <code>$cooks > 'enough'</code> doesn&#8217;t really work in a programming sense&#8230; It&#8217;s just a bit of fun!</p>
]]></content:encoded>
			<wfw:commentRss>http://csswizardry.com/2010/02/typographic-phrases-or-how-to-turn-sayings-geeky/feed/</wfw:commentRss>
		<slash:comments>9</slash:comments>
		</item>
		<item>
		<title>If surgeons worked like some web designers do&#8230;</title>
		<link>http://csswizardry.com/2010/02/if-surgeons-worked-like-some-web-designers-do/</link>
		<comments>http://csswizardry.com/2010/02/if-surgeons-worked-like-some-web-designers-do/#comments</comments>
		<pubDate>Wed, 17 Feb 2010 15:54:50 +0000</pubDate>
		<dc:creator>Harry Roberts</dc:creator>
				<category><![CDATA[Business]]></category>
		<category><![CDATA[Web Development]]></category>

		<guid isPermaLink="false">http://csswizardry.com/?p=738</guid>
		<description><![CDATA[&#8230;then Harold Shipman would look like a reasonably nice chap&#8230; The attitudes of many web developers and designers are frankly quite scary. The web design game&#8217;s quality and value is constantly undermined from people outside the industry, but the disregard from within the industry is&#8212;although admittedly less frequent&#8212;a lot more unforgivable.
Here is a little tongue-in-cheek [...]]]></description>
			<content:encoded><![CDATA[<p><span class="opener"><span>&#8230;</span>then</span> <a href="http://en.wikipedia.org/wiki/Harold_Shipman" title="Wikipedia entry for Harold Shipman">Harold Shipman</a> would look like a reasonably nice chap&#8230; The attitudes of many web developers and designers are frankly quite scary. The web design game&#8217;s quality and value is constantly undermined from people outside the industry, but the disregard from <em>within</em> the industry is&mdash;although admittedly less frequent&mdash;a lot more unforgivable.</p>
<p>Here is a little tongue-in-cheek post taking some of the things an offending designer/developer might say, but from the lips of a surgeon. After all, I do love a good analogy.</p>
<table class="outdent data">
<colgroup>
<col id="designer-quote-col" style="width:33%;" />
<col id="surgeon-quote-col" style="width:33%;" />
<col id="lesson-col" style="width:33%;" />
</colgroup>
<thead>
<tr>
<th>Web designer</th>
<th>Surgeon</th>
<th>Lesson</th>
</tr>
</thead>
<tfoot>
<tr>
<th>Web designer</th>
<th>Surgeon</th>
<th>Lesson</th>
</tr>
</tfoot>
<tbody>
<tr>
<td>I validate all my code.</td>
<td>I make sure my instruments are clean.</td>
<td>Some things are just a given. Proper code isn&#8217;t anything to show off about, it&#8217;s just a standard part of a decent service. You&#8217;d be worried if a surgeon made a point that his tools were sterile, it&#8217;s just something you&#8217;d expect.</td>
</tr>
<tr>
<td>I&#8217;ve not done this before, but I&#8217;ll give it a go.</td>
<td>I&#8217;m usually a rectal surgeon, but I&#8217;ll give neurosurgery a shot.</td>
<td>If you can&#8217;t do something, don&#8217;t! You wouldn&#8217;t want a surgeon trying unfamiliar practices on you, especially if you&#8217;re paying. Why would you charge a client to experiment new things on their site?</td>
</tr>
<tr>
<td>The code&#8217;s not the best it could be as I was pressed for time.</td>
<td>I was in a rush, so I bodged the operation.</td>
<td>Lack of time is no excuse for poor code. I commented on this one <a href="http://csswizardry.com/quick-tips/#tip-24" title="CSS Wizardry Quick Tip">before</a>.</td>
</tr>
<tr>
<td>This won&#8217;t work in IE6, it&#8217;s too old to support.</td>
<td>Madam, you&#8217;re quite old, I don&#8217;t think I&#8217;m going to do this operation.</td>
<td>You may not like IE6, but it&#8217;s unavoidable. You need to learn how to work with, and then do so.</td>
</tr>
<tr>
<td>I&#8217;ve just got a copy of Dreamweaver and I want to start web design.</td>
<td>I found some old scalpels&mdash;got any ailments I can tend to?</td>
<td>Being a developer is more than owning the right tools&mdash;it&#8217;s about <em>years</em> of hard work and education (formal or otherwise).</td>
</tr>
</tbody>
</table>
<p>If you can think of any more, please feel free to add them in the comments. And this is just a light-hearted, jokey post. I&#8217;m not comparing the importance and responsibility of surgery with that of web design&#8230; honest.</p>
]]></content:encoded>
			<wfw:commentRss>http://csswizardry.com/2010/02/if-surgeons-worked-like-some-web-designers-do/feed/</wfw:commentRss>
		<slash:comments>7</slash:comments>
		</item>
		<item>
		<title>Multiple column lists using one &lt;ul&gt;</title>
		<link>http://csswizardry.com/2010/02/mutiple-column-lists-using-one-ul/</link>
		<comments>http://csswizardry.com/2010/02/mutiple-column-lists-using-one-ul/#comments</comments>
		<pubDate>Thu, 11 Feb 2010 23:44:02 +0000</pubDate>
		<dc:creator>Harry Roberts</dc:creator>
				<category><![CDATA[Web Development]]></category>
		<category><![CDATA[CSS]]></category>
		<category><![CDATA[HTML]]></category>
		<category><![CDATA[Lists]]></category>

		<guid isPermaLink="false">http://csswizardry.com/?p=701</guid>
		<description><![CDATA[This is a quick, simple tutorial on how to create multiple column lists by only using one ul. Often is the case when you&#8217;d want multiple lists side-by-side, but you end up using markup like &#60;ul class=&#34;col&#34;&#62; in order to get several lists sat next to each other. However, by simply floating lis left and [...]]]></description>
			<content:encoded><![CDATA[<p><span class="opener"><span>T</span>his</span> is a quick, simple tutorial on how to create multiple column lists by only using one <code>ul</code>. Often is the case when you&#8217;d want multiple lists side-by-side, but you end up using markup like <code>&lt;ul class=&quot;col&quot;&gt;</code> in order to get several lists sat next to each other. However, by simply floating <code>li</code>s left and setting their width to the correct percentage (two columns = <code>li{width:50%;}</code> and so on), you can attain a multiple column list pretty easily.</p>
<h2><a href="http://csswizardry.com/demos/multiple-column-lists/">View demo</a></h2>
<p><span id="more-701"></span></p>
<p>The trick here is to force the list to break at the right point. If you want two columns, you need to float the list items left and set them at 50% width, therefore the list items will only ever fit two side-by-side, then begin again on the row beneath. By that token, three columns would require a width of 33% and floated left, four would be 25% and so on.</p>
<h2>The code</h2>
<p>Both the markup and CSS for this is incredibly simple, nothing fancy, no CSS3, nothing progressive, just basic styling applied to lean markup.</p>
<h3>The markup</h3>
<p>The markup for this is just a simple <code>ul</code>, thus:</p>
<pre><code>&lt;ul id=&quot;double&quot;&gt; <span class="code-comment">&lt;!-- Alter ID accordingly --&gt;</span>
  &lt;li&gt;CSS&lt;/li&gt;
  &lt;li&gt;XHTML&lt;/li&gt;
  &lt;li&gt;Semantics&lt;/li&gt;
  &lt;li&gt;Accessibility&lt;/li&gt;
  &lt;li&gt;Usability&lt;/li&gt;
  &lt;li&gt;Web Standards&lt;/li&gt;
  &lt;li&gt;PHP&lt;/li&gt;
  &lt;li&gt;Typography&lt;/li&gt;
  &lt;li&gt;Grids&lt;/li&gt;
  &lt;li&gt;CSS3&lt;/li&gt;
  &lt;li&gt;HTML5&lt;/li&gt;
  &lt;li&gt;UI&lt;/li&gt;
&lt;/ul&gt;</code></pre>
<p>And to make this into a multiple column list:</p>
<pre><code>ul{
  width:760px;
  margin-bottom:20px;
  overflow:hidden;
  border-top:1px solid #ccc;
}
li{
  line-height:1.5em;
  border-bottom:1px solid #ccc;
  float:left;
  display:inline;
}
#double li  { width:50%;} <span class="code-comment">/* 2 col */</span>
#triple li  { width:33.333%; } <span class="code-comment">/* 3 col */</span>
#quad li    { width:25%; } <span class="code-comment">/* 4 col */</span>
#six li     { width:16.666%; } <span class="code-comment">/* 6 col */</span></code></pre>
<h2>When to use this</h2>
<p class="marginalia">Use this wisely&#8230; It displays content in an ambiguous manner and should not be used where order of reading is imperative.</p>
<p>This method should only be used if the lists content doesn&#8217;t require any specific ordering as the markup is written linearly and the list is displayed in a matrix. As you can see, the way the content is displayed means it can be read across&raquo;down&raquo;across or down&raquo;up&raquo;down. This means that the way you write your content is not necessarily the way it will be read. In <a href="/demos/multiple-column-lists/">my example</a> this isn&#8217;t an issue, as the content can safely be read in any order.</p>
]]></content:encoded>
			<wfw:commentRss>http://csswizardry.com/2010/02/mutiple-column-lists-using-one-ul/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
		<item>
		<title>Upside down domains&#8212;registering an international domain name</title>
		<link>http://csswizardry.com/2010/02/upside-down-domainsregistering-an-international-domain-name/</link>
		<comments>http://csswizardry.com/2010/02/upside-down-domainsregistering-an-international-domain-name/#comments</comments>
		<pubDate>Thu, 04 Feb 2010 15:44:17 +0000</pubDate>
		<dc:creator>Harry Roberts</dc:creator>
				<category><![CDATA[Web Development]]></category>
		<category><![CDATA[Domains]]></category>

		<guid isPermaLink="false">http://csswizardry.com/?p=672</guid>
		<description><![CDATA[Earlier today I registered the domain http://ʎɹɹɐɥ.com. Or did I? Upon reading an article by Sam Brown, which in turn linked to an article by John Sutherland explaining how to register such domains, I wanted one. There are a few levels to this trickery. There&#8217;s the &#8216;Oh I totally understand how this works!&#8217;, or there&#8217;s [...]]]></description>
			<content:encoded><![CDATA[<p><span class="opener"><span>E</span>arlier today</span> I registered the domain <a href="http://ʎɹɹɐɥ.com">http://ʎɹɹɐɥ.com</a>. Or did I? Upon reading <a href="http://sam.brown.tc/entry/417/how-to-register-an-international-domain-name">an article by Sam Brown</a>, which in turn linked to <a href="http://sneeu.com/blog/2010/1/how-register-international-domain-name/">an article by John Sutherland</a> explaining how to register such domains, I wanted one. There are a few levels to this trickery. There&#8217;s the <q>&#8216;Oh I totally understand how this works!&#8217;</q>, or there&#8217;s the <q>&#8216;I don&#8217;t want to know how it works, I just want it!&#8217;</q> level.</p>
<p><span id="more-672"></span></p>
<h2>I just want one!</h2>
<p>Okay, I didn&#8217;t actually register<code> http://ʎɹɹɐɥ.com/</code>, I registered what you might call its alias: <code>http://xn--jna6b0ca7h.com</code>. So, by that token, you find the upside down version of your domain (mine being <code>harry</code>) via this <a href="http://www.sevenwires.com/play/UpsideDownLetters.html">upside down letter converter</a>, paste the result (mine being <code>ʎɹɹɐɥ</code>) into <a href="http://mct.verisign-grs.com/conversiontool/">this IDN converter</a> and add whatever domain extension (mine being .com) to the resulting string (mine being <code>xn--jna6b0ca7h</code>). You then register the outcome, and you can access it via the upside down version! <code>http://ʎɹɹɐɥ.com/</code> is just an alias of <code>http://xn--jna6b0ca7h.com/</code> in a sense&#8230;</p>
<p>If you view the source of this page you&#8217;ll see the markup actually links to <code>http://ʎɹɹɐɥ.com/</code> but resolves to <code>http://xn--jna6b0ca7h.com/</code> in the status bar when you hover it.</p>
<h2>I want details!</h2>
<p>If you want to actually understand the technicalities behind it, you ought to read the two articles linked previously.</p>
<h2>Why would I need this?</h2>
<p>You don&#8217;t, but it is cool, right? Although, you could use it as a pretty nifty short-URL for your blog on Twitter like Daring Fireball&#8217;s awesome <a href="http://?df.ws">http://?df.ws</a> one.</p>
<h3>Which leads me on to&#8230;</h3>
<p>You don&#8217;t have to have an upside down domain, you can use glyphs in there too. Grab some glyphs from <a href="http://copypastecharacter.com/">CopyPasteCharacter</a> and pop those into the converter too.</p>
<h3>Registering your domain</h3>
<p class="marginalia">This is not a plug&#8230;</p>
<p>I&#8217;ve heard reports of people being asked about languages for the IDNs from their registrar of choice. I went with <a href="http://www.heartinternet.co.uk/">Heart Internet</a> and registered <code>http://xn--jna6b0ca7h.com/</code> no trouble, just as if it was a regular domain.</p>
<p>Be sure to comment it you buy/have bought one yourself.</p>
]]></content:encoded>
			<wfw:commentRss>http://csswizardry.com/2010/02/upside-down-domainsregistering-an-international-domain-name/feed/</wfw:commentRss>
		<slash:comments>8</slash:comments>
		</item>
		<item>
		<title>CSS bar charts&#8212;styling data with CSS3 and progressive enhancement</title>
		<link>http://csswizardry.com/2010/02/css-bar-charts-styling-data-with-css3-and-progressive-enhancement/</link>
		<comments>http://csswizardry.com/2010/02/css-bar-charts-styling-data-with-css3-and-progressive-enhancement/#comments</comments>
		<pubDate>Tue, 02 Feb 2010 23:59:27 +0000</pubDate>
		<dc:creator>Harry Roberts</dc:creator>
				<category><![CDATA[Web Development]]></category>
		<category><![CDATA[CSS3]]></category>
		<category><![CDATA[Data Visualisation]]></category>
		<category><![CDATA[Progressive Enhancement]]></category>

		<guid isPermaLink="false">http://csswizardry.com/?p=601</guid>
		<description><![CDATA[Bar charts in CSS are neither very new, or very difficult. Using some pretty basic styling you can force lists etc into resembling graphs and charts fairly easily. Such charts, in their most basic form, work perfectly well in displaying and presenting the data they represent. However, using some rich CSS3 and progressive enhancement, you [...]]]></description>
			<content:encoded><![CDATA[<p><span class="opener"><span>B</span>ar charts</span> in CSS are neither very new, or very difficult. Using some pretty basic styling you can force lists etc into resembling graphs and charts fairly easily. Such charts, in their most basic form, work perfectly well in displaying and presenting the data they represent. However, using some rich CSS3 and progressive enhancement, you can really start pushing the display and presentation of these normally boring documents to the next level. They are also an ideal way in which to demonstrate the power and ability of progressive enhancement.</p>
<h2><a href="/demos/graphs/">View demo</a></h2>
<p><span id="more-601"></span></p>
<p class="marginalia"><strong>Look at the site in IE8, <em>then</em> Firefox, <em>then</em> Safari/Chrome.</strong> Keep refreshing.</p>
<p>I have created <a href="/demos/graphs/">a demo page</a> which simply represents three items of data expressed as percentages. It is not the data itself or the numbers we are concerned with here&mdash;it is the proof of concept. The fact that this can be done on my made up data shows that you can do it too, on real life information.</p>
<h2>Progressive enhancement</h2>
<p class="marginalia">At <a href="http://venturelab.co.uk/">Venturelab</a>, we decided to use progressive enhancement as a matter of course. CSS3 and designing in the browser all the way!</p>
<p>Progressive enhancement is, in my opinion, one of the most exciting schools of thought web development has seen in years (though I <em>have</em> only been in the web for three&#8230;). It is the idea whereby any non-essential features (i.e. anything whose absence will have no adverse effect on the usability or accessibility of a website) are added to the website in a <em>progressive</em> manner&mdash;usually through CSS3.</p>
<p>The benchmark example is rounded corners; to apply these through old means, for example with images, would have taken a developer a substantial amount of time&mdash;time the client is paying for. It seems silly now to think that way-back-when, putting rounded corners on a <code>div</code> might have taken upward of 30 minutes, when we can apply it in about 5 seconds using <code>-moz-border-radius:5px;</code>.</p>
<p>It really is a no brainer&mdash;anyone visiting the site in a browser with no CSS3 support will see square corners. Does this matter? Of course it doesn&#8217;t. No one visits a site to look solely at the design&mdash;they visit for content. Does it matter to them what shape the corners of your RSS button are? No again. Progressive enhancement saves you time, and your client money.</p>
<h3>Isn&#8217;t this just graceful degradation?</h3>
<p class="marginalia">Graceful degradation = building for the best and getting worse; progressive enhancement = building to cater the worst and getting better&#8230;</p>
<p>The line between progressive enhancement and graceful degradation is fine but significant. Graceful degradation is the idea that you&#8217;d build a site for, say, Firefox, then selectively break and <em>downgrade</em> it in the likes of IE(6). Progressive enhancement takes a much more positive attitude in that you build <em>for</em> IE(6) and then selectively <em>upgrade</em> it in browsers like Firefox and Safari. It&#8217;s no longer starting great and getting worse, it&#8217;s now starting great and getting better.</p>
<h3>Internet Explorer</h3>
<p class="marginalia"><strong>N.B.</strong> Only tested in IE8 as this is not a final solution, rather a proof-of-concept.</p>
<p>Internet Explorer(8)&#8217;s take on my bar charts is as you&#8217;d expect from any browser, it renders it perfectly well, providing clear, accessible content, with a flawless UX and perfectly usable. <em>This is not bad!</em> We don&#8217;t need to downgrade anything, this is our starting point. It looks good and it functions perfectly. If you did as above and visited in IE8 first, you wouldn&#8217;t know that there were round corners missing&mdash;because that <em>doesn&#8217;t</em> matter.</p>
<p><img src="http://csswizardry.com/wp-content/uploads/2010/02/ie.gif" alt="A screenshot of the CSS bar chart in Internet Explorer 8" width="640" height="92" class="full" /></p>
<h3>Firefox</h3>
<p>Next up is Firefox, where we add some round corners to the blue bars, and also a very subtle drop shadow (<code>text-shadow:;</code>) on the text. This is no more usable than before, the content is no more accessible than in IE, but it <em>does</em> look a tad nicer.</p>
<p><img src="http://csswizardry.com/wp-content/uploads/2010/02/firefox.gif" alt="A screenshot of the CSS bar chart in Firefox" width="640" height="92" class="full" /></p>
<h3>Safari/Chrome</h3>
<p>It is in Webkit based browsers such as Safari and Chrome that the real magic happens. Webkit&#8217;s proprietary CSS is above and beyond that of any other rendering engine&#8230;</p>
<p><img src="http://csswizardry.com/wp-content/uploads/2010/02/safari.gif" alt="A screenshot of the CSS bar chart in Safari" width="640" height="92" class="full" /></p>
<p>What if I couldn&#8217;t be bothered opening Photoshop to make a subtle gradient <code>.gif</code> for the bars? No worries, use Webkit&#8217;s gradient CSS. A little reflection might look nice on the bars too, but I don&#8217;t fancy any superfluous markup or <code>.png</code>s to fiddle with. Ah great, Webkit has a bit of reflection CSS too.</p>
<p>However, for the real show-piece, the Webkit animation. I&#8217;m not using any Javascript libraries anywhere else in the page so I don&#8217;t fancy pulling a whole one in for something that won&#8217;t really be missed if it&#8217;s not there. I hear Webkit has animations&#8230; magic!</p>
<h2>The code</h2>
<p>Now that&#8217;s the theory covered, let&#8217;s look at what does all this stuff&#8230; Please note, I have used some PHP to randomise the values used by the bars of the chart. As a result, some CSS appears in the source code of the PHP file, and the rest in <a href="http://csswizardry.com/demos/graphs/css/style.css" title="The CSS file which powers the CSS3 bar chart">the page&#8217;s CSS file</a>. The code shown in the examples below is condensed into one large chunk.</p>
<h3>The markup</h3>
<p>The markup simply comprises of one uncluttered <code>dl</code>. The reasoning behind a definition list is that each item is a title, followed by some information about that title. Not only is this semantically correct, it&#8217;s a nice set of elements to be working with to achieve the layout we&#8217;ve got.</p>
<pre><code>&lt;dl id=&quot;chart&quot;&gt;
  &lt;dt&gt;Sales increase this week&lt;/dt&gt;
  &lt;dd&gt;&lt;span id=&quot;data-one&quot;&gt;47%&lt;/span&gt;&lt;/dd&gt;
  &lt;dt&gt;Revenue increase this week&lt;/dt&gt;
  &lt;dd&gt;&lt;span id=&quot;data-two&quot;&gt;59%&lt;/span&gt;&lt;/dd&gt;
  &lt;dt&gt;Profit increase this week&lt;/dt&gt;
  &lt;dd&gt;&lt;span id=&quot;data-three&quot;&gt;26%&lt;/span&gt;&lt;/dd&gt;
&lt;/dl&gt;</code></pre>
<p>That&#8217;s all there is to it.</p>
<h3>The CSS, CSS3 and progressive enhancement</h3>
<pre><code><span class="code-comment">/*------------------------------------*\
  CHART
\*------------------------------------*/</span>
#chart{
  width:520px;
}
#chart dt{
  width:160px;
  float:left;
  margin:0 20px 5px 0;
  padding:2px 0;
  display:inline;
  font-weight:bold;
  text-align:right;
}
#chart dd{
  width:339px;
  border-right:1px solid #ddd;
  float:left;
  margin-bottom:5px;
  display:inline;
}
#chart dd span{
  color:#fff;
  background:#09f;
  text-align:center;
  padding:2px 0;
  display:block;

  text-shadow:1px 1px 1px rgba(0,0,0,0.2);
  -moz-border-radius:2px;
  -webkit-border-radius:2px;
  border-radius:2px;
  background:-webkit-gradient(linear, left top, &rarr;
  left bottom, from(#09f), to(#077fd0));
  -webkit-box-reflect:below 0 &rarr;
  -webkit-gradient(linear, left top, &rarr;
  left bottom, from(rgba(0,0,0,0)), to(rgba(0,0,0,0.25)));
}
#data-one{
  width:47%;
}
#data-two{
  width:59%;
}
#data-three{
  width:26%;
}
#data-one{
  -webkit-animation-name:bar-one; <span class="code-comment">/* Give the bar an animation with a
    unique name */</span>
}
#data-two{
  -webkit-animation-name:bar-two; <span class="code-comment">/* Give the bar an animation with a
    unique name */</span>
}
#data-three{
  -webkit-animation-name:bar-three; <span class="code-comment">/* Give the bar an animation with a
    unique name */</span>
}
#data-one,#data-two,#data-three{ <span class="code-comment">/* Define animation styles for all three
    bars at once */</span>
  -webkit-animation-duration:0.5s; <span class="code-comment">/* Animation duration in seconds */</span>
  -webkit-animation-iteration-count:1; <span class="code-comment">/* Amount of times to loop */</span>
  -webkit-animation-timing-function:ease-out; <span class="code-comment">/* Ease in, out etc. */</span>
}
@-webkit-keyframes bar-one{
  0%{ <span class="code-comment">/* Define bar-one styles at 0% (0 seconds) */</span>
    width:0%;
  }
  100%{ <span class="code-comment">/* Define bar-one styles at 100% (0.5 seconds) */</span>
    width:47%;
  }
}
@-webkit-keyframes bar-two{
  0%{ <span class="code-comment">/* Define bar-two styles at 0% (0 seconds) */</span>
    width:0%;
  }
  100%{ <span class="code-comment">/* Define bar-two styles at 100% (0.5 seconds) */</span>
    width:59%;
  }
}
@-webkit-keyframes bar-three{
  0%{ <span class="code-comment">/* Define bar-three styles at 0% (0 seconds) */</span>
    width:0%;
  }
  100%{ <span class="code-comment">/* Define bar-three styles at 100% (0.5 seconds) */</span>
    width:26%;
  }
}</code></pre>
<h4>In detail</h4>
<p>There may well be some bits in there that you&#8217;re not familiar with, particularly CSS animations. Basically, to animate an element you need to do a few things:</p>
<ol>
<li>Assign the element an animation name. This name is the &#8216;hook&#8217; to link an animation, defined later, to an element.
<pre><code>#data-one{
  -webkit-animation-name:bar-one;
}</code></pre>
</li>
<li>Assign the element animation properties. Here you set things like duration, repetition and ease-in/out.
<pre><code>#data-one,#data-two,#data-three{
  -webkit-animation-duration:0.5s;
  -webkit-animation-iteration-count:1;
  -webkit-animation-timing-function:ease-out;
}</code></pre>
</li>
<li>Set up the keyframes of the animation. Here you set the various points. Here we have one thing to animate through two states, so we simply set a beginning at 0% and and end at 100%. We could set at any percentage in between but as we just have a beginning and an end, we don&#8217;t need to&mdash;Webkit sees to that.
<pre><code>@-webkit-keyframes bar-one{
  0%{
    width:0%;
  }
  100%{
    width:47%;
  }
}</code></pre>
</li>
</ol>
<p>With regards the Webkit reflections, it may be a better idea to consult the <a href="http://webkit.org/blog/182/css-reflections/" title="Surfin&rsquo; Safari article on Webkit reflections">Surfin&#8217; Safari page on that</a>, as anything I&#8217;d say would most likely be a poorly pulled off rehash.</p>
<h2>Closing word</h2>
<p>So there you have it, a real life, justifiable and wholly appropriate application of CSS3 and progressive enhancement coupled with data visualisation. Don&#8217;t be held back by the limitations of older browsers&mdash;relish in the opportunities new ones bring.</p>
<p>And as a final bonus, <a href="http://twitter.com/VIPickering" title="Vincent Pickering on Twitter">@VIPickering</a> requested <a href="/demos/graphs/index2.php" title="A slightly more extravagant version of the same chart">this (view in Safari/Chrome)</a>&#8230; enjoy.</p>
]]></content:encoded>
			<wfw:commentRss>http://csswizardry.com/2010/02/css-bar-charts-styling-data-with-css3-and-progressive-enhancement/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>CSS Wizardry Netvibes widget</title>
		<link>http://csswizardry.com/2010/02/css-wizardry-netvibes-widget/</link>
		<comments>http://csswizardry.com/2010/02/css-wizardry-netvibes-widget/#comments</comments>
		<pubDate>Tue, 02 Feb 2010 11:04:54 +0000</pubDate>
		<dc:creator>Harry Roberts</dc:creator>
				<category><![CDATA[CSS Wizardry]]></category>
		<category><![CDATA[Web Development]]></category>
		<category><![CDATA[netvibes]]></category>
		<category><![CDATA[Search]]></category>

		<guid isPermaLink="false">http://csswizardry.com/?p=593</guid>
		<description><![CDATA[For those of you that read CSS Wizardry and use Netvibes, I have created a small search widget which you may be interested in adding to your Netvibes page. The widget is simply a small search form, from which you can search all the current articles on the CSS Wizardry site. All you need to [...]]]></description>
			<content:encoded><![CDATA[<p><span class="opener"><span>F</span>or</span> those of you that read CSS Wizardry <em>and</em> use <a href="http://www.netvibes.com/" title="Netvibes personal start page">Netvibes</a>, I have created <a href="http://eco.netvibes.com/widgets/295220/css-wizardry-search" title="The CSS Wizardry search widget on Netvibes">a small search widget</a> which you may be interested in adding to your Netvibes page. The widget is simply a small search form, from which you can search all the current articles on the CSS Wizardry site. All you need to do is head to <a href="http://eco.netvibes.com/widgets/295220/css-wizardry-search" title="The CSS Wizardry search widget on Netvibes">the widget&#8217;s page</a> and hit &#8216;Add to Netvibes&#8217;.</p>
<p><img src="http://csswizardry.com/wp-content/uploads/2010/02/widget.jpg" alt="A screenshot of the CSS Wizardry Netvibes widget" width="270" height="173" class="left polaroid" /></p>
<p>From my point of view, creating the widget could not have been simpler&mdash;simply writing some basic form HTML which posts to the blog will yield results, and it then just requires dropping into an XML document and placing on a live server, and linking to via the Netvibes developer centre.</p>
<p>You can view the &#8216;master&#8217; XML document here: <a href="http://csswizardry.com/netvibes/index.xml">http://csswizardry.com/netvibes/index.xml</a></p>
]]></content:encoded>
			<wfw:commentRss>http://csswizardry.com/2010/02/css-wizardry-netvibes-widget/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
