<?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>Barryvan &#187; Web design</title>
	<atom:link href="http://www.barryvan.com.au/category/web-design/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.barryvan.com.au</link>
	<description>Music, Programming, Design</description>
	<lastBuildDate>Sun, 08 Jan 2012 08:48:12 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>TrackPerformer update</title>
		<link>http://www.barryvan.com.au/2011/12/trackperformer-update/</link>
		<comments>http://www.barryvan.com.au/2011/12/trackperformer-update/#comments</comments>
		<pubDate>Sat, 17 Dec 2011 03:05:18 +0000</pubDate>
		<dc:creator>Barry van Oudtshoorn</dc:creator>
				<category><![CDATA[Albums]]></category>
		<category><![CDATA[Announcements]]></category>
		<category><![CDATA[Javascript]]></category>
		<category><![CDATA[MooTools]]></category>
		<category><![CDATA[Music]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[Projects]]></category>
		<category><![CDATA[Web design]]></category>

		<guid isPermaLink="false">http://www.barryvan.com.au/?p=660</guid>
		<description><![CDATA[I&#8217;ve added in some really exciting new features to my TrackPerformer project, as well as three new performances: We Three Kings, Carol of the Bells, and Joy to the World. Filters It&#8217;s now possible to add filters, or effects, into the processing chain. These filters can be applied before any performers (pre-filters) or after all [...]]]></description>
			<content:encoded><![CDATA[<p>I&#8217;ve added in some really exciting new features to my <a href="https://github.com/barryvan/trackPerformer">TrackPerformer</a> project, as well as three new performances: <strong><a href="http://barryvan.github.com/trackPerformer/kings.html">We Three Kings</a></strong>, <strong><a href="http://barryvan.github.com/trackPerformer/bells.html">Carol of the Bells</a></strong>, and <strong><a href="http://barryvan.github.com/trackPerformer/joy.html">Joy to the World</a></strong>.</p>
<h2>Filters</h2>
<p>It&#8217;s now possible to add filters, or effects, into the processing chain. These filters can be applied before any performers (pre-filters) or after all performers (post-filters). At the moment, the included filters are:</p>
<ul>
<li>FPS: Calculates the average framerate across the performance, optionally displaying it in a DOM element.</li>
<li>Grid: Draws a grid to the canvas. The grid may be a simple intersection grid (points), or lines. Both the X and Y axes may be independently configured.</li>
<li>Pick: Probably the most interesting (and processor-intensive) part of TrackPerformer. The Pick filter will randomly swap a pixel with one of its neighbours. It&#8217;s used at full intensity on both <a href="http://barryvan.github.com/trackPerformer/kings.html">We three Kings</a> and <a href="http://barryvan.github.com/trackPerformer/joy.html">Joy to the World</a>, and, when toned down a little for <a href="http://barryvan.github.com/trackPerformer/bells.html">Carol of the Bells</a>, provides a softening, organic effect.</li>
</ul>
<p>I&#8217;ve got some ideas for more filters down the track&#8230; The only difficulty is keeping performance acceptable: manipulation of the canvas pixel by pixel is quite slow in current browsers.</p>
<h2>Performers</h2>
<p>There are a couple of new performers, and some minor updates to some of the existing ones. The Oscillator performer, in particular, is rapidly becoming the most flexible and useful of the performers.</p>
<ul>
<li>There&#8217;s a new ShimmerGrid performer, which is great for adding texture and movement to the entire canvas. You can see it in action particularly well on <a href="http://barryvan.github.com/trackPerformer/joy.html">Joy to the World</a>.</li>
<li>The Swarm performer can now draw its particles as knots (like the SignalTracker), as well as as dots.</li>
<li>The Oscillator now has the ability to draw sustained notes, and to increase the longevity of notes. Take a look at <a href="http://barryvan.github.com/trackPerformer/bells.html">Carol of the Bells</a> to see these new options in use.</li>
<li>Notes can now be filtered based not only on their pitch, but also their velocity (volume).</li>
</ul>
<p>There are a couple of other changes here and there, but these are the main ones.</p>
<h2>We Three Kings</h2>
<p>The three new example tracks are all taken from <a href="http://barryvan.bandcamp.com/album/we-three-kings">We Three Kings</a>, my new Christmas remix album. Why not go and have a listen?</p>
]]></content:encoded>
			<wfw:commentRss>http://www.barryvan.com.au/2011/12/trackperformer-update/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>CSSMin updated</title>
		<link>http://www.barryvan.com.au/2011/01/cssmin-updated/</link>
		<comments>http://www.barryvan.com.au/2011/01/cssmin-updated/#comments</comments>
		<pubDate>Thu, 13 Jan 2011 00:56:53 +0000</pubDate>
		<dc:creator>Barry van Oudtshoorn</dc:creator>
				<category><![CDATA[Announcements]]></category>
		<category><![CDATA[CSS]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[Projects]]></category>
		<category><![CDATA[Web design]]></category>

		<guid isPermaLink="false">http://www.barryvan.com.au/?p=547</guid>
		<description><![CDATA[I&#8217;ve updated my CSSMin project with a couple of new features and bugfixes. Download or fork it on GitHub! What is it? CSSMin takes your CSS file and strips out everything that&#8217;s not needed &#8212; spaces, extra semicolons, redundant units, and so on. That&#8217;s great, but there are loads of programs that do that. A [...]]]></description>
			<content:encoded><![CDATA[<p>I&#8217;ve updated my CSSMin project with a couple of new features and bugfixes. <a href="https://github.com/barryvan/CSSMin">Download or fork it on GitHub!</a></p>
<h2>What is it?</h2>
<p>CSSMin takes your CSS file and strips out everything that&#8217;s not needed &#8212; spaces, extra semicolons, redundant units, and so on. That&#8217;s great, but there are loads of programs that do that. A shell script could do that! So what makes CSSMin different?</p>
<p>When you deliver content over the web, best practice is to deliver it gzipped. CSSMin takes your CSS file, and optimises it for gzip compression. This means that there&#8217;s a smaller payload delivered over the wire, which results in a faster experience for your users. It does this optimisation by ensuring that the properties inside your selectors are ordered consistently (alphabetically) and in lower case. That way, the gzip algorithm can work at its best.</p>
<p>What this means in practice is that your gzipped CSSMin-ed files are significantly smaller than plain gzipped CSS, and noticeably smaller than files that have been compressed by other means (say, YUI).</p>
<h2>In this update:</h2>
<h3>Nested properties are now fully supported.</h3>
<p>This means that the following CSS:</p>
<pre class="brush: css">@-webkit-keyframes &#039;fadeUp&#039; {
  from { opacity: 0; }
  to { opacity: 1; }
}</pre>
<p>is compressed down to</p>
<pre class="brush: css">@-webkit-keyframes &#039;fadeUp&#039;{from{opacity:0}to{opacity:1}}</pre>
<p>Your nested properties will have their contents compressed with all of the other tricks in system, but their order will be retained.</p>
<p>Thanks to <a href="https://github.com/bloveridge">bloveridge</a> for reporting this bug and verifying the fix.</p>
<h3>Font weights are replaced by their numeric counterparts.</h3>
<pre class="brush: css">.alpha {
  font-weight: bold;
}
.beta {
  font-weight: normal;
}</pre>
<p>becomes</p>
<pre class="brush: css">.alpha{font-weight:700}.beta{font-weight:400}</pre>
<p>Values supported are &#8220;lighter&#8221;, &#8220;normal&#8221;, &#8220;bold&#8221;, and &#8220;bolder&#8221;.</p>
<h3>Quotes are stripped where possible.</h3>
<pre class="brush: css">.alpha {
  background: url(&#039;ponies.png&#039;);
  font-family: &#039;Times New Roman&#039;, &#039;Arial&#039;;
}</pre>
<p>becomes</p>
<pre class="brush: css">.alpha{background:url(ponies.png);font-family:&#039;Times New Roman&#039;,arial}</pre>
<h3>As much text as possible is changed to lower-case.</h3>
<p>Only selectors, quoted strings (such as &#8216;Times New Roman&#8217;) and url() values are left intact.</p>
<p>Note that this means that if you mix the case of your selectors (for example, SPAN and span), your compression will be sub-optimal.</p>
<h3>Thanks</h3>
<p>Some of the ideas for this update were inspired by <a href="http://www.lotterypost.com/css-compress.aspx">Lottery Post&#8217;s CSS Compressor</a>.</p>
<h2>Start using it!</h2>
<h3>Requirements</h3>
<p>You will need a recent version of Java and the Java compiler.</p>
<h3>Download</h3>
<p><a href="https://github.com/barryvan/CSSMin">Download or fork it on GitHub.</a></p>
<h3>Usage</h3>
<ol>
<li>Compile the Java:
<pre class="brush: php"># javac CSSMin.java</pre>
</li>
<li>Run your CSS through it:
<pre class="brush: php"># java CSSMin [input] [output]</pre>
</li>
</ol>
<p>If you don&#8217;t specify an output file, the result will be dumped to stdout. Warnings and errors are written to stderr.</p>
<h2>Results</h2>
<p>These are the results of compressing the main CSS file for one of the webapps I develop at work. Note that many of these compressors only offer an online service, which means that they can&#8217;t easily be used as part of your general build process.</p>
<table class="comparison">
<thead>
<tr>
<td>&nbsp;</td>
<td>Original size (bytes)</td>
<td>Gzipped size (bytes)</td>
</tr>
</thead>
<tbody>
<tr>
<td>Plain</td>
<td>81938</td>
<td>12291</td>
</tr>
<tr>
<td><a href="http://developer.yahoo.com/yui/compressor/">YUI</a></td>
<td>64434</td>
<td>10198</td>
</tr>
<tr>
<td><a href="http://www.lotterypost.com/css-compress.aspx">LotteryPost</a></td>
<td>63609</td>
<td>10165</td>
</tr>
<tr>
<td><a href="http://www.cssdrive.com/compressor/compress_advanced.php">CSS Drive</a></td>
<td>69275</td>
<td>10795</td>
</tr>
<tr>
<td><a href="https://github.com/barryvan/CSSMin">CSSMin</a></td>
<td>63791</td>
<td>9896</td>
</tr>
</tbody>
</table>
<h2>Feedback</h2>
<p>Let me know how you go with it &#8212; bug reports and feature requests are always welcome!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.barryvan.com.au/2011/01/cssmin-updated/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Theme update (again!)</title>
		<link>http://www.barryvan.com.au/2010/08/theme-update-again/</link>
		<comments>http://www.barryvan.com.au/2010/08/theme-update-again/#comments</comments>
		<pubDate>Mon, 23 Aug 2010 04:12:48 +0000</pubDate>
		<dc:creator>Barry van Oudtshoorn</dc:creator>
				<category><![CDATA[Announcements]]></category>
		<category><![CDATA[CSS]]></category>
		<category><![CDATA[HTML]]></category>
		<category><![CDATA[Web design]]></category>

		<guid isPermaLink="false">http://www.barryvan.com.au/?p=474</guid>
		<description><![CDATA[And so, for the third time this year, I&#8217;ve completely re-themed this site. Taking a very different tack from the last theme, I&#8217;ve tried to keep this one as simple as possible, with just a few subtle touches here and there to add interest. The palette is more subdued, which hopefully means that reading the [...]]]></description>
			<content:encoded><![CDATA[<p>And so, for the third time this year, I&#8217;ve completely re-themed this site. Taking a very different tack from the last theme, I&#8217;ve tried to keep this one as simple as possible, with just a few subtle touches here and there to add interest. The palette is more subdued, which hopefully means that reading the text is a more pleasant experience. I&#8217;ve also done away with the multi-column body text in favour of a fixed-width design.</p>
<p>At the same time, though, I have endeavoured to use some of the new features available in modern web browsers &#8212; gradients, shadows, transitions, generated content, and so on. I&#8217;m fairly happy with the result &#8212; I think it&#8217;s a clean, unobtrusive theme that&#8217;s not too in your face. Feedback and criticism welcome! <img src='http://www.barryvan.com.au/wp-includes/images/smilies/icon_biggrin.gif' alt=':D' class='wp-smiley' /> </p>
]]></content:encoded>
			<wfw:commentRss>http://www.barryvan.com.au/2010/08/theme-update-again/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Generative Music</title>
		<link>http://www.barryvan.com.au/2010/03/generative-music/</link>
		<comments>http://www.barryvan.com.au/2010/03/generative-music/#comments</comments>
		<pubDate>Sun, 21 Mar 2010 08:08:11 +0000</pubDate>
		<dc:creator>Barry van Oudtshoorn</dc:creator>
				<category><![CDATA[Ambient]]></category>
		<category><![CDATA[Chillout]]></category>
		<category><![CDATA[HTML]]></category>
		<category><![CDATA[Javascript]]></category>
		<category><![CDATA[MooTools]]></category>
		<category><![CDATA[Music]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[Projects]]></category>
		<category><![CDATA[Web design]]></category>

		<guid isPermaLink="false">http://www.barryvan.com.au/?p=443</guid>
		<description><![CDATA[Continuing my HTML5 and canvas experiments, I&#8217;ve put together a generative music system. Essentially, a series of particles move across a field, occasionally triggering sounds &#8212; the sound triggered depends on their location in the field. There is, of course, a little bit more to it than that. Under the hood, I&#8217;ve got a series [...]]]></description>
			<content:encoded><![CDATA[<p>Continuing my HTML5 and canvas experiments, I&#8217;ve put together a generative music system. Essentially, a series of particles move across a field, occasionally triggering sounds &#8212; the sound triggered depends on their location in the field.</p>
<p>There is, of course, a little bit more to it than that. Under the hood, I&#8217;ve got a series of HTML5 Audio objects that are used to provide polyphonic audio using a simple round-robin algorithm (I encoded the audio in OGG, so you&#8217;ll need to use an OGG-friendly browser, like <a href="http://www.getfirefox.com">Firefox</a>). The particles are much simpler than those in my <a href="/2010/03/canvas-swarms/">previous canvas dalliance</a>, in that they don&#8217;t swarm, and their motion is more linear.</p>
<div class="screenshots">
<a href="/demos/generative.html"><br/><br />
<img alt="Generative Audio Screenshot" src="/wp-content/uploads/2010/03/generative.png" class="aligncenter size-full"/><br/><br />
View (and hear!) it live<br/><br />
</a>
</div>
]]></content:encoded>
			<wfw:commentRss>http://www.barryvan.com.au/2010/03/generative-music/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Canvas Swarms</title>
		<link>http://www.barryvan.com.au/2010/03/canvas-swarms/</link>
		<comments>http://www.barryvan.com.au/2010/03/canvas-swarms/#comments</comments>
		<pubDate>Thu, 18 Mar 2010 00:27:18 +0000</pubDate>
		<dc:creator>Barry van Oudtshoorn</dc:creator>
				<category><![CDATA[HTML]]></category>
		<category><![CDATA[Javascript]]></category>
		<category><![CDATA[MooTools]]></category>
		<category><![CDATA[Processing]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[Web design]]></category>

		<guid isPermaLink="false">http://www.barryvan.com.au/?p=440</guid>
		<description><![CDATA[I&#8217;ve been meaning to start playing with the HTML5 &#60;canvas&#62; element for a while now, and yesterday I took the opportunity. I translated a Processing sketch I made a while ago into JavaScript (with a few minor enhancements). View it live Essentially, 1 to 3 swarms of particles move around the canvas, reproducing when the [...]]]></description>
			<content:encoded><![CDATA[<p>I&#8217;ve been meaning to start playing with the HTML5 &lt;canvas&gt; element for a while now, and yesterday I took the opportunity. I translated a Processing sketch I made a while ago into JavaScript (with a few minor enhancements).</p>
<div class="screenshots">
<a href="/demos/swarms/swarms.html"><br />
<img class="aligncenter size-full" src="/demos/swarms/swarms.png" alt="Swarms Screenshot"/><br />
View it live<br />
</a>
</div>
<p>Essentially, 1 to 3 swarms of particles move around the canvas, reproducing when the conditions are just right, and dying of old age. Quite simple, but the patterns produced can be really quite pretty.</p>
<p>One interesting thing that I discovered whilst doing this is that you can&#8217;t pass around a canvas&#8217; context at the instantiation of a MooTools class &#8212; it complains about wrapped natives. That&#8217;s why, if you like in the source JavaScript, you&#8217;ll see me pass the actual context around to various functions. I&#8217;d be interested in hearing if anyone has a workaround for this, because this is, well, a bit clunky.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.barryvan.com.au/2010/03/canvas-swarms/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>HTML: IE file submission</title>
		<link>http://www.barryvan.com.au/2010/02/html-ie-file-submission/</link>
		<comments>http://www.barryvan.com.au/2010/02/html-ie-file-submission/#comments</comments>
		<pubDate>Tue, 23 Feb 2010 07:57:22 +0000</pubDate>
		<dc:creator>Barry van Oudtshoorn</dc:creator>
				<category><![CDATA[HTML]]></category>
		<category><![CDATA[Javascript]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[Web design]]></category>

		<guid isPermaLink="false">http://www.barryvan.com.au/?p=437</guid>
		<description><![CDATA[I&#8217;ve been bumping up against an interesting bug in Internet Explorer recently, and, having just found the solution, thought I&#8217;d share it with you. The problem is that in Internet Explorer (tested 7 &#038; 8), when your document is in quirks mode, uploading a file sometimes just sends through the file name, without the actual [...]]]></description>
			<content:encoded><![CDATA[<p>I&#8217;ve been bumping up against an interesting bug in Internet Explorer recently, and, having just found the solution, thought I&#8217;d share it with you.</p>
<p>The problem is that in Internet Explorer (tested 7 &#038; 8), when your document is in quirks mode, uploading a file sometimes just sends through the file name, without the actual body of the request. Put the document into standards mode, and it all works. It should be noted that this is when you&#8217;re dynamically setting up the elements used with JavaScript.</p>
<p>The cause? In quirks mode, the <em>enctype</em> attribute isn&#8217;t supported. So whilst setting &#8220;encType&#8221; on the form element to the correct &#8220;multipart/form-data&#8221; will indeed set this attribute, it won&#8217;t actually cause the upload to include the file. Instead, you need to set the <em>encoding</em> attribute to this value, too. It certainly doesn&#8217;t help that the MSDN article on the &lt;input type=&#8221;file&#8221;&gt; element tells you to set &#8220;enctype&#8221;, but makes no mention of &#8220;encoding&#8221;.</p>
<ul>
<li><a href="http://msdn.microsoft.com/en-us/library/ms533744(VS.85).aspx">MSDN: &#8216;Encoding&#8217; property</a></li>
<li><a href="http://msdn.microsoft.com/en-us/library/cc304100%28VS.85%29.aspx">MSDN: &#8216;Enctype&#8217; property</a></li>
<li><a href="http://msdn.microsoft.com/en-us/library/ms535263%28VS.85%29.aspx">MSDN: &lt;input type=&#8221;file&#8221;&gt; element</a></li>
</ul>
<p>I couldn&#8217;t find any reference to this problem on the intertubes (although maybe I just didn&#8217;t look hard enough), so hopefully this will help someone.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.barryvan.com.au/2010/02/html-ie-file-submission/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Javascript: Print a single element</title>
		<link>http://www.barryvan.com.au/2010/02/javascript-print-a-single-element/</link>
		<comments>http://www.barryvan.com.au/2010/02/javascript-print-a-single-element/#comments</comments>
		<pubDate>Tue, 16 Feb 2010 08:18:47 +0000</pubDate>
		<dc:creator>Barry van Oudtshoorn</dc:creator>
				<category><![CDATA[Javascript]]></category>
		<category><![CDATA[MooTools]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[Web design]]></category>

		<guid isPermaLink="false">http://www.barryvan.com.au/?p=434</guid>
		<description><![CDATA[Sometimes, you&#8217;ll want to allow users the ability to print only a part of your page; for example, a table but not the various links around the page. It&#8217;s possible to use a printing stylesheet, but this can cause severe headaches when you need different parts printed at different times. Really, we want to be [...]]]></description>
			<content:encoded><![CDATA[<p>Sometimes, you&#8217;ll want to allow users the ability to print only a part of your page; for example, a table but not the various links around the page. It&#8217;s possible to use a printing stylesheet, but this can cause severe headaches when you need different parts printed at different times. Really, we want to be able to just say <strong>element.printElement()</strong>, and have it just work. That&#8217;s what the MooTools function below does. It&#8217;s loosely based around the concepts outlined at <a href="http://www.bennadel.com/blog/1591-Ask-Ben-Print-Part-Of-A-Web-Page-With-jQuery.htm">this website</a>.</p>
<pre class="brush: javascript">Element.implement({
	printElement: function(docTitle) {
		var strName = &#039;printer-&#039; + (new Date()).getTime();
		var styles = [];
		$$(&#039;link[type=text/css]&#039;).each(function(style) {
			styles.push(&#039;&lt;link rel=&quot;stylesheet&quot; type=&quot;text/css&quot; href=&quot;&#039; + style.get(&#039;href&#039;) + &#039;&quot;/&gt;&#039;);
		});
		var title = docTitle || document.title;
		var that = this.getParent();
		var iframe = new IFrame({
			name: strName,
			styles: {
				width: 1,
				height: 1,
				position: &#039;absolute&#039;,
				left: -9999
			},
			events: {
				load: function() {
					var doc = window.frames[strName].document,
							win = window.frames[strName],
					f = function() {
						if (!doc.head) {
							f.delay(10);
							return;
						}

						// We need to delay printing so that styles are applied.
						(function() {
							doc.title = title;
							// IE7 won&#039;t let us adopt() here for some reason, and we can&#039;t do anything to the head.
							doc.body.innerHTML = styles.join(&#039;&#039;) + that.innerHTML;
							(function() {
								win.focus(); // IE needs the window to be focused.
								win.print();
							}).delay(100);
						}).delay(200);
					};
					f();
				}
			}
		}).inject($(document.body));
		(function() {
			iframe.dispose();
		}).delay(30000);
	}
});</pre>
]]></content:encoded>
			<wfw:commentRss>http://www.barryvan.com.au/2010/02/javascript-print-a-single-element/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Full-width text inputs without extraneous markup or scripting</title>
		<link>http://www.barryvan.com.au/2010/01/full-width-text-inputs-without-extraneous-markup-or-scripting/</link>
		<comments>http://www.barryvan.com.au/2010/01/full-width-text-inputs-without-extraneous-markup-or-scripting/#comments</comments>
		<pubDate>Tue, 05 Jan 2010 23:56:34 +0000</pubDate>
		<dc:creator>Barry van Oudtshoorn</dc:creator>
				<category><![CDATA[CSS]]></category>
		<category><![CDATA[HTML]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[Web design]]></category>

		<guid isPermaLink="false">http://www.barryvan.com.au/?p=403</guid>
		<description><![CDATA[The problem When styling text &#60;input&#62; elements, it&#8217;s fairly common to run into a serious problem: they don&#8217;t behave like block-level elements. Note: In all of the examples, the container element is filled with blue, and the &#60;input&#62; itself is filled with red and has an opacity of 50% so that you can see it [...]]]></description>
			<content:encoded><![CDATA[<h1>The problem</h1>
<p>When styling text &lt;input&gt; elements, it&#8217;s fairly common to run into a serious problem: they don&#8217;t behave like block-level elements.</p>
<p>Note: In all of the examples, the container element is filled with blue, and the &lt;input&gt; itself is filled with red and has an opacity of 50% so that you can see it under- or over-flowing the container.</p>
<pre class="brush: xhtml">&lt;div  style=&quot;background: blue; width:200px;&quot;&gt;
  &lt;input  style=&quot;display:block; padding:4px; background: red; opacity:0.5; border:0;&quot; type=&quot;text&quot; value=&quot;text input&quot;/&gt;
&lt;/div&gt;</pre>
<div style="background:blue; width:200px;">
<input  style="display:block;padding:4px;background: red; opacity:0.5;border:0;" type="text" value="text input"/>
</div>
<p>You can see how the input doesn&#8217;t automatically flow to full width, as the &#8220;display: block&#8221; style suggests it should. The kneejerk response is to set the width to 100%:</p>
<pre class="brush: xhtml">&lt;div  style=&quot;background: blue; width:200px;&quot;&gt;
  &lt;input  style=&quot;display:block; padding:4px; background: red; opacity:0.5; width:100%; border:0;&quot; type=&quot;text&quot; value=&quot;text input&quot;/&gt;
&lt;/div&gt;</pre>
<div style="background:blue; width:200px;">
<input  style="display:block;padding:4px;background: red; opacity:0.5;width:100%;border:0;" type="text" value="text input"/>
</div>
<p>But notice now how the input overflows its container&#8217;s boundaries because of the left padding. At this point, people may resort to non-semantic markup (removing the padding on the &lt;input&gt; and putting it inside a padded &lt;div&gt;) or JavaScript solutions that set the pixel width whenever the container&#8217;s width changes (by the addition of scrollbars, for example).</p>
<h1>The (semantic) solution</h1>
<p><strong>But wait!</strong> There <strong>is</strong> a way to achieve this effect without resorting to an extra &lt;div&gt; or JavaScript:</p>
<pre class="brush: xhtml">&lt;div  style=&quot;background: blue; width:200px;&quot;&gt;
  &lt;input  style=&quot;display:block; padding:4px 0; background: red; opacity:0.5; width:100%; border:0; text-indent:4px;&quot; type=&quot;text&quot; value=&quot;text input&quot;/&gt;
&lt;/div&gt;</pre>
<div style="background:blue; width:200px;">
<input  style="display:block;padding:4px 0;background: red; opacity:0.5;width:100%;border:0;text-indent:4px;" type="text" value="text input"/>
</div>
<p>Do you see what I did there? I removed the horizontal padding on the &lt;input&gt;, so the 100% width now works correctly, and replaced it with &#8220;text-indent&#8221;. To the user, this looks no different, and it has the advantage of requiring no extraneous markup or tedious scripting.</p>
<h1>Drawbacks</h1>
<ol>
<li>Should the user enter a long string, their text will bump up against the right edge. But I think that that&#8217;s a boundary condition that I can live with.</li>
<li>Any vertical borders on the &lt;input&gt; will cause it to overflow its container. Personally, if I want a full-width &lt;input&gt;, though, I generally don&#8217;t want any borders on its left or right other than those of its container.</li>
]]></content:encoded>
			<wfw:commentRss>http://www.barryvan.com.au/2010/01/full-width-text-inputs-without-extraneous-markup-or-scripting/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Google Wave &amp; iPhone</title>
		<link>http://www.barryvan.com.au/2009/11/google-wave-iphone/</link>
		<comments>http://www.barryvan.com.au/2009/11/google-wave-iphone/#comments</comments>
		<pubDate>Sun, 15 Nov 2009 06:10:54 +0000</pubDate>
		<dc:creator>Barry van Oudtshoorn</dc:creator>
				<category><![CDATA[Apple]]></category>
		<category><![CDATA[Javascript]]></category>
		<category><![CDATA[Web design]]></category>
		<category><![CDATA[google]]></category>
		<category><![CDATA[iphone]]></category>
		<category><![CDATA[tips]]></category>
		<category><![CDATA[wave]]></category>

		<guid isPermaLink="false">http://www.barryvan.com.au/?p=301</guid>
		<description><![CDATA[I just tried out Google Wave on the iPhone. Interestingly, despite an initial &#8220;your browser is not supported&#8221; message, the actual system sports a rather snazzy app-like interface on the iPhone. I&#8217;ll be interested to see what kind of support Wave will &#8216;officially&#8217; have on mobile platforms, and perhaps even more interested in what &#8216;unofficial&#8217; [...]]]></description>
			<content:encoded><![CDATA[<p>I just tried out Google Wave on the iPhone. Interestingly, despite an initial &#8220;your browser is not supported&#8221; message, the actual system sports a rather snazzy app-like interface on the iPhone.</p>
<p>I&#8217;ll be interested to see what kind of support Wave will &#8216;officially&#8217; have on mobile platforms, and perhaps even more interested in what &#8216;unofficial&#8217; support there&#8217;ll be. </p>
]]></content:encoded>
			<wfw:commentRss>http://www.barryvan.com.au/2009/11/google-wave-iphone/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>CSS Columns</title>
		<link>http://www.barryvan.com.au/2009/10/css-columns/</link>
		<comments>http://www.barryvan.com.au/2009/10/css-columns/#comments</comments>
		<pubDate>Mon, 26 Oct 2009 13:01:09 +0000</pubDate>
		<dc:creator>Barry van Oudtshoorn</dc:creator>
				<category><![CDATA[CSS]]></category>
		<category><![CDATA[HTML]]></category>
		<category><![CDATA[Web design]]></category>
		<category><![CDATA[browsers]]></category>
		<category><![CDATA[css3]]></category>
		<category><![CDATA[tips]]></category>

		<guid isPermaLink="false">http://www.barryvan.com.au/?p=295</guid>
		<description><![CDATA[In this post, I will walk through the new columns specification that arrived in CSS 3. I will show you the current implementation state of columns in the four major rendering engines: Gecko (Firefox), Webkit (Safari &#038; Chrome), Trident (Internet Explorer), and Presto (Opera). Before we get on to platform-specific issues and workarounds, though, we&#8217;ll [...]]]></description>
			<content:encoded><![CDATA[<p>In this post, I will walk through the new columns specification that arrived in CSS 3. I will show you the current implementation state of columns in the four major rendering engines: Gecko (Firefox), Webkit (Safari &#038; Chrome), Trident (Internet Explorer), and Presto (Opera).</p>
<p>Before we get on to platform-specific issues and workarounds, though, we&#8217;ll look at the various CSS properties available for working with columns.</p>
<p>For more in-depth information on columns, you should check out the <a href="http://www.w3.org/TR/css3-multicol/">W3C working draft</a> and Mozilla&#8217;s <a href="https://developer.mozilla.org/en/CSS3_Columns">MDC page on columns</a>. The Webkit blog <a href="http://webkit.org/blog/88/css3-multi-column-support/">also has an article</a>, but it&#8217;s not particularly informative.</p>
<h2>Contents</h2>
<ul>
<li>
		<a href="#capabilities">Browser capabilities</a>
	</li>
<li>
		<a href="#bugs">Browser bugs</a></p>
<ul>
<li><a href="#gecko-bugs">Gecko</a></li>
<li><a href="#webkit-bugs">Webkit</a></li>
</ul>
</li>
<li>
		<a href="#properties">Properties</a></p>
<ul>
<li><a href="#column-count">column-count</a></li>
<li><a href="#column-width">column-width</a></li>
<li><a href="#columns">columns</a></li>
<li><a href="#column-gap">column-gap</a></li>
<li><a href="#column-rule-color">column-rule-color</a></li>
<li><a href="#column-rule-style">column-rule-style</a></li>
<li><a href="#column-rule-width">column-rule-width</a></li>
<li><a href="#column-rule">column-rule</a></li>
<li><a href="#column-span">column-span</a></li>
<li><a href="#column-fill">column-fill</a></li>
</ul>
</li>
</ul>
<p>I will add more to this entry as I discover more about columns &#8212; the goal is to make it an easy-to-understand reference.</p>
<h2><a name="capabilities" href="#capabilities">Browser capabilities</a></h2>
<table class="capabilities" cellspacing="0" cellpadding="0">
<thead>
<tr>
<td>Property</td>
<td>Gecko</td>
<td>Webkit</td>
<td>Trident</td>
<td>Presto</td>
</tr>
</thead>
<tbody>
<tr>
<td class="property"><a href="#column-count">column-count</a></td>
<td class="full">-moz-column-count</td>
<td class="full">-webkit-column-count</td>
<td class="none">&#10007;</td>
<td class="none">&#10007;</td>
</tr>
<tr>
<td class="property"><a href="#column-width">column-width</a></td>
<td class="full">-moz-column-width</td>
<td class="full">-webkit-column-width</td>
<td class="none">&#10007;</td>
<td class="none">&#10007;</td>
</tr>
<tr>
<td class="property"><a href="#columns">columns</a></td>
<td class="none">&#10007;</td>
<td class="full">-webkit-columns</td>
<td class="none">&#10007;</td>
<td class="none">&#10007;</td>
</tr>
<tr>
<td class="property"><a href="#column-gap">column-gap</a></td>
<td class="full">-moz-column-gap</td>
<td class="full">-webkit-column-gap</td>
<td class="none">&#10007;</td>
<td class="none">&#10007;</td>
</tr>
<tr>
<td class="property"><a href="#column-rule-color">column-rule-color</a></td>
<td class="partial"><a href="#gecko-bugs">-moz-column-rule-color</a></td>
<td class="full">-webkit-column-rule-color</td>
<td class="none">&#10007;</td>
<td class="none">&#10007;</td>
</tr>
<tr>
<td class="property"><a href="#column-rule-style">column-rule-style</a></td>
<td class="partial"><a href="#gecko-bugs">-moz-column-rule-style</a></td>
<td class="full">-webkit-column-rule-style</td>
<td class="none">&#10007;</td>
<td class="none">&#10007;</td>
</tr>
<tr>
<td class="property"><a href="#column-rule-width">column-rule-width</a></td>
<td class="partial"><a href="#gecko-bugs">-moz-column-rule-width</a></td>
<td class="full">-webkit-column-rule-width</td>
<td class="none">&#10007;</td>
<td class="none">&#10007;</td>
</tr>
<tr>
<td class="property"><a href="#column-rule">column-rule</a></td>
<td class="partial"><a href="#gecko-bugs">-moz-column-rule</a></td>
<td class="full">column-rule</td>
<td class="none">&#10007;</td>
<td class="none">&#10007;</td>
</tr>
<tr>
<td class="property"><a href="#column-span">column-span</a></td>
<td class="none">&#10007;</td>
<td class="none">&#10007;</td>
<td class="none">&#10007;</td>
<td class="none">&#10007;</td>
</tr>
<tr>
<td class="property"><a href="#column-fill">column-fill</a></td>
<td class="none">&#10007;</td>
<td class="none">&#10007;</td>
<td class="none">&#10007;</td>
<td class="none">&#10007;</td>
</tr>
<tr>
<td class="property">break-before</a></td>
<td class="none">&#10007;</td>
<td class="none">&#10007;</td>
<td class="none">&#10007;</td>
<td class="none">&#10007;</td>
</tr>
<tr>
<td class="property">break-inside</a></td>
<td class="none">&#10007;</td>
<td class="none">&#10007;</td>
<td class="none">&#10007;</td>
<td class="none">&#10007;</td>
</tr>
</tbody>
</table>
<p>Browsers used for testing: Firefox 3.5.4 (Windows), Safari 4.0.2 (Windows), Internet Explorer 8.0.6001, Opera 10.00 (Windows)</p>
<p>Please let me know if this table is inaccurate, and I will update it.</p>
<h2><a name="bugs" href="#bugs">Browser bugs</a></h2>
<p>These are the bugs that I have encountered using CSS columns &#8212; if you know of more, please let me know, and I&#8217;ll add them to these lists.</p>
<h3><a name="gecko-bugs" href="#gecko-bugs">Gecko bugs</a></h3>
<ul>
<li>Specifying an &#8220;overflow&#8221; (or &#8220;overflow-x&#8221; or &#8220;overflow-y&#8221;) property on an element with columns prevents the column rule from being rendered at all.</li>
<li>Column rules occasionally don&#8217;t render, regardless of the &#8220;overflow&#8221; property.</li>
<li>There is no way to break columns.</li>
</ul>
<h3><a name="webkit-bugs" href="#webkit-bugs">Webkit bugs</a></h3>
<ul>
<li>Pixel creep: Pixels from a later column can creep back to the bottom of the previous column. This can happen with plain text, but it is much more noticeable when you use a non-layout altering effect like text-shadow or box-shadow.</li>
<li>Text that overflows the column horizontally is chopped off</li>
<li>There is no way to break columns.</li>
</ul>
<h2><a name="properties" href="#properties">Properties</a></h2>
<h3><a name="column-count" href="#column-count">column-count</a></h3>
<p><strong>Value:</strong> <integer> | auto<br />
<strong>Initial value:</strong> auto</p>
<p>If you don&#8217;t set the <a href="#column-width">column-width</a> property, <a href="#column-count">column-count</a> specifies the number of columns into which the content should be flowed.</p>
<p>If you specify <a href="#column-width">column-width</a>, <a href="#column-count">column-count</a> imposes a limit on the maximum number of columns to be rendered if you supply a numeric value.</p>
<h3><a name="column-width" href="#column-width">column-width</a></h3>
<p><strong>Value:</strong> <length> | auto<br />
<strong>Initial value:</strong> auto</p>
<p>This property indicates the <em>optimal</em> column width &#8212; columns may be rendered narrower or wider by the UA, according to the available space.</p>
<p>If <a href="#column-width">column-width</a> has the value &#8220;auto&#8221;, then the width of the columns is determined by other means (for example, <a href="#column-count">column-count</a>).</p>
<h3><a name="columns" href="#columns">columns</a></h3>
<p><strong>Value:</strong> <a href="#column-width">column-width</a> &#038;&#038; <a href="#column-count">column-count</a></p>
<p>The <a href="#columns">columns</a> property is a short-hand property, used to set both <a href="#column-width">column-width</a> and <a href="#column-count">column-count</a> simultaneously.</p>
<h3><a name="column-gap" href="#column-gap">column-gap</a></h3>
<p><strong>Value:</strong> <length> | normal<br />
<strong>Initial value:</strong> normal</p>
<p>Use <a href="#column-gap">column-gap</a> to specify the size of the gutter that lies between columns. Most UAs will render &#8220;normal&#8221; as 1em.</p>
<h3><a name="column-rule-color" href="#column-rule-color">column-rule-color</a></h3>
<p><strong>Value:</strong><br />
<color>
<p>When a <a href="#column-rule">column-rule</a> is specified, you may use <a href="#column-rule-color">column-rule-color</a> to set the colour for the line drawn between columns. This property is approximately equivalent to the various border-(?)-color properties.</p>
<h3><a name="column-rule-style" href="#column-rule-style">column-rule-style</a></h3>
<p><strong>Value:</strong> <border-style></p>
<p>By using <a href="#column-rule-style">column-rule-style</a>, you may determine how the line between columns is to be rendered, if at all. Similar to border-(?)-style.</p>
<h3><a name="column-rule-width" href="#column-rule-width">column-rule-width</a></h3>
<p><strong>Value:</strong> <border-width><br />
<strong>Initial value:</strong> medium</p>
<p><a href="#column-rule-width">column-rule-width</a> sets the width of the line rendered in the gutter between columns. Basically, it&#8217;s the same as the border-(?)-width properties.</p>
<h3><a name="column-rule" href="#column-rule">column-rule</a></h3>
<p><strong>Value:</strong> <a href="#column-rule-width">column-rule-width</a> &#038;&#038; <a href="#column-rule-style">column-rule-style</a> &#038; &#038; <a href="#column-rule-color">column-rule-color</a></p>
<p>Shorthand for setting all three column-rule properties.</p>
<h3><a name="column-span" href="#column-span">column-span</a></h3>
<p><strong>Value:</strong> 1 | all<br />
<strong>Initial value:</strong> 1</p>
<p>By using <a href="#column-span">column-span</a>, you can allow an element to span either the entire set of columns, or none at all.</p>
<p>Note that you cannot set an arbitrary number of columns to span &#8212; this property essentially &#8216;interrupts&#8217; the column flow and restarts it below the spanned element.</p>
<h3><a name="column-fill" href="#column-fill">column-fill</a></h3>
<p><strong>Value:</strong> auto | balance<br />
<strong>Initial value:</strong> balance</p>
<p>If you have set a height for your columnified element, setting <a href="#column-fill">column-fill</a> to &#8216;auto&#8217; will cause the columns to be &#8216;filled&#8217; in turn, rather than have the content balanced equally between them.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.barryvan.com.au/2009/10/css-columns/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

