<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/rss2full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><rss 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/" xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" version="2.0">

<channel>
	<title>Broken Links</title>
	
	<link>http://www.broken-links.com</link>
	<description>Thoughts on web development and technologies by Peter Gasston</description>
	<lastBuildDate>Sat, 04 Feb 2012 12:11:26 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
	
<xhtml:meta xmlns:xhtml="http://www.w3.org/1999/xhtml" name="robots" content="noindex" />
		<atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/rss+xml" href="http://feeds.feedburner.com/PeterGasstonsGeekBlog" /><feedburner:info uri="petergasstonsgeekblog" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://www.broken-links.com/?pushpress=hub" /><feedburner:emailServiceId>PeterGasstonsGeekBlog</feedburner:emailServiceId><feedburner:feedburnerHostname>http://feedburner.google.com</feedburner:feedburnerHostname><item>
		<title>Where do we draw the line for browser support?</title>
		<link>http://feedproxy.google.com/~r/PeterGasstonsGeekBlog/~3/aO2EOe2mDx0/</link>
		<comments>http://www.broken-links.com/2012/02/03/where-do-we-draw-the-line-for-browser-support/#comments</comments>
		<pubDate>Fri, 03 Feb 2012 19:46:01 +0000</pubDate>
		<dc:creator>Peter</dc:creator>
				<category><![CDATA[browsers]]></category>
		<category><![CDATA[Opinion]]></category>

		<guid isPermaLink="false">http://www.broken-links.com/?p=1497</guid>
		<description><![CDATA[Prompted by the announcement on 37Signals that their next platform update would not support IE7 or IE8 (or many other older browsers), a vigorous debate took place on Twitter around the subject of for how long we should support browsers which don’t have the most modern features. For all its many positives, Twitter is no [...]]]></description>
			<content:encoded><![CDATA[<p>Prompted by the <a href="http://37signals.com/svn/posts/3097-developing-for-old-browsers-is-almost-a-thing-of-the-past">announcement on 37Signals</a> that their next platform update would not support IE7 or IE8 (or many other older browsers), a vigorous debate took place on Twitter around the subject of for how long we should support browsers which don’t have the most modern features. For all its many positives, Twitter is no place for nuanced argument, so this article is for me to try to frame my opinion a little better.</p>
<p><span id="more-1497"></span></p>
<p>My idealistic view is that the web should work for everyone, regardless of their method of access. Idealism always takes second place to pragmatism, however; I know that we have to work within our limits, we can’t provide a first-class experience for everyone all of the time. So where do we draw the line for browser support?</p>
<p>The answer is the same as always: <em>it depends</em>.</p>
<p>When making the decision, you should use a Cost-Benefit Analysis (<abbr>CBA</abbr>). The <strong>cost</strong> includes your resources: how much time you have, how much money, the staff you have available. All of these are finite. The <strong>benefit</strong> (or lack of) is mostly to your users: not only the ones who may be excluded, but also the others who could get a reduced service if you have to divert resources to legacy support.</p>
<p>In 37Signals case they know their users well, they’ve done this before and obviously feel the benefits are greatly in favour of their current user base. If someone can’t get access to their website it’s not the end of the world, there are alternatives available.</p>
<p>But your market may be different. You may not even know your market. Telling people that they must update their browser is making a lot of presumptions about them:</p>
<ul>
<li>That they are aware of what a browser is. <a href="http://www.youtube.com/watch?v=o4MwTvtyrUQ">A lot of people aren’t</a>. It’s why Google are spending millions on a global campaign (not entirely selflessly, of course).</li>
<li>That they have the ability to update it — and I don’t just mean technical ability, but cognitive and physical ability too.</li>
<li>That the technology they use supports updating or using alternative browsers. Many (most?) of the devices I know do, but I’m not aware of the technology markets across Africa and Asia, for example.</li>
</ul>
<p>Most importantly, you must assess the benefit of the content — or the lack of access thereof — to the user. You could be building a site about healthcare which contains content that could save lives — literally vital information. <a href="http://christianheilmann.com/2012/01/19/some-real-world-browser-stats/">Christian Heilmann recently posted browser stats from a healthcare site</a> which showed that ~50% of visitors were using a browser which wouldn’t meet 37Signals’ criteria.</p>
<p>With all that in mind, after we’ve done the <abbr>CBA</abbr> I would say that the very least consideration of ours should be how easy it is to do something. I said in the discussion that “we play the cards we’re dealt” — that wasn’t intended to be a statement of passivity, but rather one of acceptance that we don’t control our users. If they use IE6, we build for them. We can educate and encourage, but only up to a point. Beyond that point we start to become arrogant.</p>
<p>So that’s my opinion, I look forward to hearing yours.</p>
 <p><a href="http://www.broken-links.com/?flattrss_redirect&amp;id=1497&amp;md5=c0a1d60075fd28565e9869a6dd69fa00" title="Flattr" target="_blank"><img src="http://www.broken-links.com/wp-content/plugins/flattr/img/flattr-badge-large.png" alt="flattr this!"/></a></p><div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/PeterGasstonsGeekBlog?a=aO2EOe2mDx0:zAHq0wt4eso:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/PeterGasstonsGeekBlog?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/PeterGasstonsGeekBlog?a=aO2EOe2mDx0:zAHq0wt4eso:D7DqB2pKExk"><img src="http://feeds.feedburner.com/~ff/PeterGasstonsGeekBlog?i=aO2EOe2mDx0:zAHq0wt4eso:D7DqB2pKExk" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/PeterGasstonsGeekBlog?a=aO2EOe2mDx0:zAHq0wt4eso:F7zBnMyn0Lo"><img src="http://feeds.feedburner.com/~ff/PeterGasstonsGeekBlog?i=aO2EOe2mDx0:zAHq0wt4eso:F7zBnMyn0Lo" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/PeterGasstonsGeekBlog?a=aO2EOe2mDx0:zAHq0wt4eso:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/PeterGasstonsGeekBlog?i=aO2EOe2mDx0:zAHq0wt4eso:V_sGLiPBpWU" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/PeterGasstonsGeekBlog/~4/aO2EOe2mDx0" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.broken-links.com/2012/02/03/where-do-we-draw-the-line-for-browser-support/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		<atom:link rel="payment" href="http://www.broken-links.com/?flattrss_redirect&amp;id=1497&amp;md5=c0a1d60075fd28565e9869a6dd69fa00" type="text/html" />
	<feedburner:origLink>http://www.broken-links.com/2012/02/03/where-do-we-draw-the-line-for-browser-support/</feedburner:origLink></item>
		<item>
		<title>DRY vs Media Queries — a use case for Mixins</title>
		<link>http://feedproxy.google.com/~r/PeterGasstonsGeekBlog/~3/lZ5nOqboAwI/</link>
		<comments>http://www.broken-links.com/2012/01/17/dry-vs-media-queries-a-use-case-for-mixins/#comments</comments>
		<pubDate>Tue, 17 Jan 2012 15:00:11 +0000</pubDate>
		<dc:creator>Peter</dc:creator>
				<category><![CDATA[css]]></category>
		<category><![CDATA[less]]></category>
		<category><![CDATA[mixins]]></category>
		<category><![CDATA[sass]]></category>
		<category><![CDATA[standards]]></category>
		<category><![CDATA[variables]]></category>

		<guid isPermaLink="false">http://www.broken-links.com/?p=1475</guid>
		<description><![CDATA[CSS pre-processors like Sass and LESS extend CSS in many useful ways, not least by allowing you to use variables in your code either as single values or blocks of multiple property/value pairs, called Mixins. So useful are these that developer Tab Atkins proposed to the W3C that they be adopted into CSS itself, but [...]]]></description>
			<content:encoded><![CDATA[<p>CSS pre-processors like <a href="http://sass-lang.com/">Sass</a> and <a href="http://lesscss.org/"><abbr>LESS</abbr></a> extend <abbr>CSS</abbr> in many useful ways, not least by allowing you to use variables in your code either as single values or blocks of multiple property/value pairs, called Mixins. So useful are these that developer <a href="http://www.xanthir.com/blog/b49w0">Tab Atkins proposed to the W3C</a> that they be adopted into <abbr>CSS</abbr> itself, but they were rejected as no suitable use cases were seen.</p>
<p>I think I’ve found a scenario in which, while the use of Mixins aren’t vital, they’re certainly very useful, and it’s because of one of the core principles of coding: <abbr>DRY</abbr> (Don’t Repeat Yourself).</p>
<p><span id="more-1475"></span></p>
<p>Just in case you’re not familiar with Mixins, they are reusable blocks of code. In Sass they’re defined with the <code>@mixin</code> at-rule and a unique identifier, like so:</p>
<pre>@mixin foobar {
  color: red;
  font-size: 1.5em;
}</pre>
<p>And wherever you want those rules to apply, you call them with <code>@include</code>:</p>
<pre>h1 {
  @include foobar;
  font-weight: bold;
}
h2 { @include foobar; }</pre>
<p>So you can see, it prevents repetition. The W3C’s case is that you can code around this using CSS as it is:</p>
<pre>h1, h2 {
  color: red;
  font-size: 1.5em;
}
h1 { font-weight: bold; }</pre>
<p>Which is fair enough in the example I’ve provided, and in simple stylesheets. But what about in more complex stylesheets? Depending on how they’re ordered, you either have to use some selectors very far away from where the other rules are applied to it, or you repeat the rules. And what happens when you bring Media Queries into the equation?</p>
<p>Imagine you have two elements and you want to have them styled differently, but if a media query is in play for them both to be the same, like this:</p>
<pre>h1 { color: red; }
h2 { color: blue; }
@media screen and (max-width: 640px) {
  h2 { color: red; }
}</pre>
<p><b><abbr lang="la" title="Nota Bene">NB</abbr>:</b> I’ve used only a single property here for the sake of clarity, but it’s more likely I would be using multiple properties so the situation would be even more complicated.</p>
<p>To avoid repeating myself I could add a class to the <code>h1</code> using JavaScript and <code>matchMedia</code>, but that of course relies on the user having JS enabled and so isn’t a real solution. Or I could pre-process the CSS with a server-side language, but again that’s reliant on another technology which I can’t say for certain is available (in an offline appplication, for example).</p>
<p>With the example I’ve given, I could actually approach the problem from the opposite direction:</p>
<pre>h1, h2 { color: red; }
@media screen and (min-width: 640px) {
  h2 { color: blue; }
}</pre>
<p>But that means the queries I use are being forced on me by the limitations of CSS; I may want to use my original query for different reasons, but if I want to avoid repetition I have no choice.</p>
<p>That’s where Mixins would come in handy, allowing me both the flexibility to choose the queries that better suit the way I’m working, and avoiding repetition:</p>
<pre>@mixin primarycolor { color: red; }
h1 { @include primarycolor; }
h2 { color: blue; }
@media screen and (max-width: 640px) {
  h2 { @include primarycolor; }
}</pre>
<p>So, there’s my use case. It’s not bulletproof, there are ways around it, but they all impose limitations on me which I don’t feel should be imposed. I’d be interested to hear your thoughts on this, so please leave a comment if you have something to add.</p>
 <p><a href="http://www.broken-links.com/?flattrss_redirect&amp;id=1475&amp;md5=56811f9bcb637bfe0b9b6edb6d8acbaf" title="Flattr" target="_blank"><img src="http://www.broken-links.com/wp-content/plugins/flattr/img/flattr-badge-large.png" alt="flattr this!"/></a></p><div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/PeterGasstonsGeekBlog?a=lZ5nOqboAwI:AX90CVtJMlc:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/PeterGasstonsGeekBlog?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/PeterGasstonsGeekBlog?a=lZ5nOqboAwI:AX90CVtJMlc:D7DqB2pKExk"><img src="http://feeds.feedburner.com/~ff/PeterGasstonsGeekBlog?i=lZ5nOqboAwI:AX90CVtJMlc:D7DqB2pKExk" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/PeterGasstonsGeekBlog?a=lZ5nOqboAwI:AX90CVtJMlc:F7zBnMyn0Lo"><img src="http://feeds.feedburner.com/~ff/PeterGasstonsGeekBlog?i=lZ5nOqboAwI:AX90CVtJMlc:F7zBnMyn0Lo" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/PeterGasstonsGeekBlog?a=lZ5nOqboAwI:AX90CVtJMlc:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/PeterGasstonsGeekBlog?i=lZ5nOqboAwI:AX90CVtJMlc:V_sGLiPBpWU" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/PeterGasstonsGeekBlog/~4/lZ5nOqboAwI" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.broken-links.com/2012/01/17/dry-vs-media-queries-a-use-case-for-mixins/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<atom:link rel="payment" href="http://www.broken-links.com/?flattrss_redirect&amp;id=1475&amp;md5=56811f9bcb637bfe0b9b6edb6d8acbaf" type="text/html" />
	<feedburner:origLink>http://www.broken-links.com/2012/01/17/dry-vs-media-queries-a-use-case-for-mixins/</feedburner:origLink></item>
		<item>
		<title>The new (and hopefully final) linear gradient syntax</title>
		<link>http://feedproxy.google.com/~r/PeterGasstonsGeekBlog/~3/TNHqh5JhDBs/</link>
		<comments>http://www.broken-links.com/2012/01/11/the-new-and-hopefully-final-linear-gradient-syntax/#comments</comments>
		<pubDate>Wed, 11 Jan 2012 11:30:31 +0000</pubDate>
		<dc:creator>Peter</dc:creator>
				<category><![CDATA[css]]></category>
		<category><![CDATA[firefox]]></category>
		<category><![CDATA[firefox 10]]></category>
		<category><![CDATA[gradients]]></category>
		<category><![CDATA[linear gradients]]></category>

		<guid isPermaLink="false">http://www.broken-links.com/?p=1445</guid>
		<description><![CDATA[The latest Working Draft of the CSS3 Image Values and Replaced Content module was released last month, and contains some changes to the gradient syntaxes — for what you’d hope would be the last time. The updated syntaxes are a little more logical, but offer the same flexibility. Firefox 10, which is due for release [...]]]></description>
			<content:encoded><![CDATA[<p>The latest Working Draft of the <i>CSS3 Image Values and Replaced Content</i> module was released last month, and contains some changes to the gradient syntaxes — for what you’d hope would be the last time. The updated syntaxes are a little more logical, but offer the same flexibility.</p>
<p>Firefox 10, which is due for release in a few weeks, will see an implementation of the updated <code>linear-gradient</code> and <code>repeating-linear-gradient</code> functions, so in this article I’ll take a look at those, and write a follow-up when the radial gradient updates are available for use.</p>
<p><span id="more-1445"></span></p>
<p>The simplest linear gradient function remains this, which creates a top to bottom gradient (you can see it in <a href="http://www.broken-links.com/tests/newgradients/#example1">Example 1</a>):</p>
<pre>div { background: linear-gradient(#000, #FFF); }</pre>
<p>If you want the gradient to go in a different direction (and you probably will), you should now use the keyword ‘<em>to</em>’ plus the side  (<em>top</em>, <em>bottom</em>, <em>left</em>, <em>right</em>) you want the gradient to end at; for example, a gradient from left to right would go like this:</p>
<pre>div { background: linear-gradient(to right, #000, #FFF); }</pre>
<p><a href="http://www.broken-links.com/tests/newgradients/#example2">Example 2</a> shows that in action, as long as you have Firefox version 10 or greater.</p>
<p>You can make simple diagonals by using two direction keywords; this one will go from top-left to bottom-right:</p>
<pre>div { background: linear-gradient(to right bottom, #000, #FFF); }</pre>
<p>The previous syntax allowed you to use direction keywords without <em>to</em>, and this would be the origin of the gradient; that is, the previous example (top-left to bottom-right) would be written like this:</p>
<pre>div { background: linear-gradient(left top, #000, #FFF); }</pre>
<p><a href="http://www.broken-links.com/tests/newgradients/#example3">Example 3</a> illustrates this; if you have Firefox 9 or below you’ll see the old syntax in use, but if you have 10 or above you’ll see the new one. The new Firefox implementation allows you to still use the old syntax for the sake of backwards compatibility, but it will be dropped when the unprefixed functions are implemented.</p>
<p>The rest of the syntax remains consistent. For more complex diagonals you can still use angles:</p>
<pre>div { background: linear-gradient(70deg, #000, #FFF); }</pre>
<p>That’s shown in <a href="http://www.broken-links.com/tests/newgradients/#example4">Example 4</a>. <b><abbr title="Nota Bene" lang="la">NB</abbr>:</b> although the spec states that <em>0deg</em> is bottom to top, all current implementations (including this updated one in Firefox 10) measure <em>0deg</em> as left to right. I’m not sure whether all of the browsers will have to change, or the spec will.</p>
<p>Each <em>color-stop</em> can also have a length or percentage value to further customise the gradient:</p>
<pre>div { background: linear-gradient(#000 20px, #FFF 90%, #000); }</pre>
<p><a href="http://www.broken-links.com/tests/newgradients/#example5">Example 5</a> shows this.</p>
<p>There have been a lot of changes to the syntax since it was first proposed, but I think they’ve all been for the better. The linear gradient functions are quite straightforward, understandable, and flexible enough for the majority of use cases, which is what we want from CSS.</p>
<p>To know more, I recommend you read the relevant section of the <a href="http://www.w3.org/TR/css3-images/#linear-gradients">CSS3 Image Values and Replaced Content</a> module.</p>
 <p><a href="http://www.broken-links.com/?flattrss_redirect&amp;id=1445&amp;md5=5a0f962794077b6d1875e7663788c56b" title="Flattr" target="_blank"><img src="http://www.broken-links.com/wp-content/plugins/flattr/img/flattr-badge-large.png" alt="flattr this!"/></a></p><div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/PeterGasstonsGeekBlog?a=TNHqh5JhDBs:aDFvSpsdh6I:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/PeterGasstonsGeekBlog?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/PeterGasstonsGeekBlog?a=TNHqh5JhDBs:aDFvSpsdh6I:D7DqB2pKExk"><img src="http://feeds.feedburner.com/~ff/PeterGasstonsGeekBlog?i=TNHqh5JhDBs:aDFvSpsdh6I:D7DqB2pKExk" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/PeterGasstonsGeekBlog?a=TNHqh5JhDBs:aDFvSpsdh6I:F7zBnMyn0Lo"><img src="http://feeds.feedburner.com/~ff/PeterGasstonsGeekBlog?i=TNHqh5JhDBs:aDFvSpsdh6I:F7zBnMyn0Lo" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/PeterGasstonsGeekBlog?a=TNHqh5JhDBs:aDFvSpsdh6I:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/PeterGasstonsGeekBlog?i=TNHqh5JhDBs:aDFvSpsdh6I:V_sGLiPBpWU" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/PeterGasstonsGeekBlog/~4/TNHqh5JhDBs" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.broken-links.com/2012/01/11/the-new-and-hopefully-final-linear-gradient-syntax/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		<atom:link rel="payment" href="http://www.broken-links.com/?flattrss_redirect&amp;id=1445&amp;md5=5a0f962794077b6d1875e7663788c56b" type="text/html" />
	<feedburner:origLink>http://www.broken-links.com/2012/01/11/the-new-and-hopefully-final-linear-gradient-syntax/</feedburner:origLink></item>
		<item>
		<title>My Happy New Year</title>
		<link>http://feedproxy.google.com/~r/PeterGasstonsGeekBlog/~3/gv4Mif4Cuow/</link>
		<comments>http://www.broken-links.com/2012/01/06/my-happy-new-year/#comments</comments>
		<pubDate>Fri, 06 Jan 2012 16:00:10 +0000</pubDate>
		<dc:creator>Peter</dc:creator>
				<category><![CDATA[css]]></category>
		<category><![CDATA[Miscellanea]]></category>
		<category><![CDATA[3d transforms]]></category>
		<category><![CDATA[animations]]></category>
		<category><![CDATA[transforms]]></category>
		<category><![CDATA[writing]]></category>

		<guid isPermaLink="false">http://www.broken-links.com/?p=1448</guid>
		<description><![CDATA[One more post about things I’ve written elsewhere, then I’ll be back to writing original content here again… Another pair of articles by me got published today; they’re both introduction-level: Adventures In The Third Dimension, on Smashing Magazine, is a beginners guide to CSS 3D Transforms, explaining the syntax with a few demos; and for [...]]]></description>
			<content:encoded><![CDATA[<p>One more post about things I’ve written elsewhere, then I’ll be back to writing original content here again…</p>
<p>Another pair of articles by me got published today; they’re both introduction-level:</p>
<p><a href="http://coding.smashingmagazine.com/2012/01/06/adventures-in-the-third-dimension-css-3-d-transforms/">Adventures In The Third Dimension</a>, on <strong>Smashing Magazine</strong>, is a beginners guide to CSS 3D Transforms, explaining the syntax with a few demos; and for <strong>Ubelly</strong> I wrote <a href="http://www.ubelly.com/2012/01/the-five-minute-guide-to-css-animations/">The Five-Minute Guide to CSS Animations</a>, which does the same job for CSS Animations.</p>
<p>I’ve an article coming up for .net Magazine soon; it’s called <em>10 CSS Techniques for 2012</em>, it’ll be the cover article, and I’m very excited about as I wrote it in collaboration with <a href="http://ibuypink.com/">Andreas Johansson</a>, <a href="http://csswizardry.com/">Harry Roberts</a>, <a href="http://lea.verou.me/">Lea Verou</a>, <a href="http://nicolasgallagher.com/">Nicolas Gallagher</a>, and <a href="http://pauladamdavis.com/">Paul Adam Davis</a>, all of whom do great work.</p>
<p>After that I have two more articles to write, should be tech editing a book on CSS3, then probably starting work on my own second book. 2012 is going to be a very busy year.</p>
 <p><a href="http://www.broken-links.com/?flattrss_redirect&amp;id=1448&amp;md5=7b342b3b6500c7545c21d9334ac3a28d" title="Flattr" target="_blank"><img src="http://www.broken-links.com/wp-content/plugins/flattr/img/flattr-badge-large.png" alt="flattr this!"/></a></p><div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/PeterGasstonsGeekBlog?a=gv4Mif4Cuow:SfCLvInP6jA:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/PeterGasstonsGeekBlog?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/PeterGasstonsGeekBlog?a=gv4Mif4Cuow:SfCLvInP6jA:D7DqB2pKExk"><img src="http://feeds.feedburner.com/~ff/PeterGasstonsGeekBlog?i=gv4Mif4Cuow:SfCLvInP6jA:D7DqB2pKExk" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/PeterGasstonsGeekBlog?a=gv4Mif4Cuow:SfCLvInP6jA:F7zBnMyn0Lo"><img src="http://feeds.feedburner.com/~ff/PeterGasstonsGeekBlog?i=gv4Mif4Cuow:SfCLvInP6jA:F7zBnMyn0Lo" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/PeterGasstonsGeekBlog?a=gv4Mif4Cuow:SfCLvInP6jA:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/PeterGasstonsGeekBlog?i=gv4Mif4Cuow:SfCLvInP6jA:V_sGLiPBpWU" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/PeterGasstonsGeekBlog/~4/gv4Mif4Cuow" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.broken-links.com/2012/01/06/my-happy-new-year/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<atom:link rel="payment" href="http://www.broken-links.com/?flattrss_redirect&amp;id=1448&amp;md5=7b342b3b6500c7545c21d9334ac3a28d" type="text/html" />
	<feedburner:origLink>http://www.broken-links.com/2012/01/06/my-happy-new-year/</feedburner:origLink></item>
		<item>
		<title>A Year in Web Design</title>
		<link>http://feedproxy.google.com/~r/PeterGasstonsGeekBlog/~3/Z7HfRmIKzIA/</link>
		<comments>http://www.broken-links.com/2011/12/21/a-year-in-web-design/#comments</comments>
		<pubDate>Wed, 21 Dec 2011 13:40:20 +0000</pubDate>
		<dc:creator>Peter</dc:creator>
				<category><![CDATA[Opinion]]></category>
		<category><![CDATA[2011]]></category>
		<category><![CDATA[highlights]]></category>
		<category><![CDATA[opinion]]></category>
		<category><![CDATA[review]]></category>

		<guid isPermaLink="false">http://www.broken-links.com/?p=1442</guid>
		<description><![CDATA[I think it’s been a really exciting year for our industry; the explosion of web browsing away from the desktop, HTML5 beginning to prove itself as the best option for cross-platform development, the newly-resurgent Microsoft making good browsers again… if you make your living from building the web you can’t fail to be heartened by [...]]]></description>
			<content:encoded><![CDATA[<blockquote><p>I think it’s been a really exciting year for our industry; the explosion of web browsing away from the desktop, HTML5 beginning to prove itself as the best option for cross-platform development, the newly-resurgent Microsoft making good browsers again… if you make your living from building the web you can’t fail to be heartened by this flourish of new life. There’s been a great appetite for discovery of new browser features, with lots of demos being made using cutting-edge and experimental CSS, HTML and JavaScript, so the curious amongst us have had plenty to satisfy us.</p></blockquote>
<p>Part of my contribution to <a href="http://webdesign.tutsplus.com/articles/general/a-year-in-web-design-how-the-experts-saw-2011/">tutsplus.com’s experts(!) review of 2011</a>.</p>
 <p><a href="http://www.broken-links.com/?flattrss_redirect&amp;id=1442&amp;md5=afe6620998d6e699e89c5e36b7b0dbdd" title="Flattr" target="_blank"><img src="http://www.broken-links.com/wp-content/plugins/flattr/img/flattr-badge-large.png" alt="flattr this!"/></a></p><div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/PeterGasstonsGeekBlog?a=Z7HfRmIKzIA:SPn2nMQn80w:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/PeterGasstonsGeekBlog?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/PeterGasstonsGeekBlog?a=Z7HfRmIKzIA:SPn2nMQn80w:D7DqB2pKExk"><img src="http://feeds.feedburner.com/~ff/PeterGasstonsGeekBlog?i=Z7HfRmIKzIA:SPn2nMQn80w:D7DqB2pKExk" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/PeterGasstonsGeekBlog?a=Z7HfRmIKzIA:SPn2nMQn80w:F7zBnMyn0Lo"><img src="http://feeds.feedburner.com/~ff/PeterGasstonsGeekBlog?i=Z7HfRmIKzIA:SPn2nMQn80w:F7zBnMyn0Lo" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/PeterGasstonsGeekBlog?a=Z7HfRmIKzIA:SPn2nMQn80w:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/PeterGasstonsGeekBlog?i=Z7HfRmIKzIA:SPn2nMQn80w:V_sGLiPBpWU" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/PeterGasstonsGeekBlog/~4/Z7HfRmIKzIA" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.broken-links.com/2011/12/21/a-year-in-web-design/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<atom:link rel="payment" href="http://www.broken-links.com/?flattrss_redirect&amp;id=1442&amp;md5=afe6620998d6e699e89c5e36b7b0dbdd" type="text/html" />
	<feedburner:origLink>http://www.broken-links.com/2011/12/21/a-year-in-web-design/</feedburner:origLink></item>
		<item>
		<title>Things I’ve Written Elsewhere</title>
		<link>http://feedproxy.google.com/~r/PeterGasstonsGeekBlog/~3/pT9rMkboXZ4/</link>
		<comments>http://www.broken-links.com/2011/12/12/things-ive-written-elsewhere/#comments</comments>
		<pubDate>Mon, 12 Dec 2011 19:41:44 +0000</pubDate>
		<dc:creator>Peter</dc:creator>
				<category><![CDATA[Miscellanea]]></category>
		<category><![CDATA[articles]]></category>
		<category><![CDATA[css]]></category>
		<category><![CDATA[css3]]></category>
		<category><![CDATA[net magazine]]></category>
		<category><![CDATA[sass]]></category>
		<category><![CDATA[writing]]></category>

		<guid isPermaLink="false">http://www.broken-links.com/?p=1437</guid>
		<description><![CDATA[I’ve been writing some articles for different websites in the latter half of this year, and it strikes me that I haven’t done a very good job of promoting them on here. So please allow me to correct that, with this brief rundown in reverse chronological order. I’ve put together my list of the 20 [...]]]></description>
			<content:encoded><![CDATA[<p>I’ve been writing some articles for different websites in the latter half of this year, and it strikes me that I haven’t done a very good job of promoting them on here. So please allow me to correct that, with this brief rundown in reverse chronological order.</p>
<p>I’ve put together my list of the <a href="http://www.netmagazine.com/features/2011-review-20-css-sites-rocked">20 Best CSS Sites of 2011 for .net Magazine</a>. Choosing only 20 turned out to be really difficult, as I wanted to get a broad range of approaches. I’m sure there are plenty I missed out, including any that aren’t in the English language.</p>
<p>For <a href="http://thesassway.com/articles/how-sass-can-shape-the-future-of-css">The Sass Way I wrote about How Sass Can Shape The Future of CSS</a>, showing how many of the features contained in the pre-processed CSS extension are under discussion for inclusion in future versions of CSS.</p>
<p><a href="http://webdesign.tutsplus.com/articles/interviews/interview-with-css3-guru-peter-gasston/">Webdesigntuts+ interviewed me about my book and my opinions on CSS3</a>, including what I’m excited about for the future, and things to beware of when using cutting-edge properties.</p>
<p>And again <a href="http://www.netmagazine.com/features/future-css-layouts">for .net Magazine I discussed The Future of CSS Layouts</a>, a subject I’m really excited about at the moment, which led to an article that was very popular with .net’s readership.</p>
<p>I currently have two more articles waiting for technical review and proofreading, which I hope will see the light of day shortly, and have promised to write another two as soon as I get time (as well as one for a dead tree publication). I’m very happy to be writing about my craft, and appreciate feedback or further requests for articles from other sources — although, I won’t be able to write quite as much next year as I’m planning to start my second book.</p>
 <p><a href="http://www.broken-links.com/?flattrss_redirect&amp;id=1437&amp;md5=44d57c987d66ca76cf3fab737996ee72" title="Flattr" target="_blank"><img src="http://www.broken-links.com/wp-content/plugins/flattr/img/flattr-badge-large.png" alt="flattr this!"/></a></p><div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/PeterGasstonsGeekBlog?a=pT9rMkboXZ4:CF8C9iIjVn4:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/PeterGasstonsGeekBlog?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/PeterGasstonsGeekBlog?a=pT9rMkboXZ4:CF8C9iIjVn4:D7DqB2pKExk"><img src="http://feeds.feedburner.com/~ff/PeterGasstonsGeekBlog?i=pT9rMkboXZ4:CF8C9iIjVn4:D7DqB2pKExk" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/PeterGasstonsGeekBlog?a=pT9rMkboXZ4:CF8C9iIjVn4:F7zBnMyn0Lo"><img src="http://feeds.feedburner.com/~ff/PeterGasstonsGeekBlog?i=pT9rMkboXZ4:CF8C9iIjVn4:F7zBnMyn0Lo" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/PeterGasstonsGeekBlog?a=pT9rMkboXZ4:CF8C9iIjVn4:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/PeterGasstonsGeekBlog?i=pT9rMkboXZ4:CF8C9iIjVn4:V_sGLiPBpWU" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/PeterGasstonsGeekBlog/~4/pT9rMkboXZ4" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.broken-links.com/2011/12/12/things-ive-written-elsewhere/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<atom:link rel="payment" href="http://www.broken-links.com/?flattrss_redirect&amp;id=1437&amp;md5=44d57c987d66ca76cf3fab737996ee72" type="text/html" />
	<feedburner:origLink>http://www.broken-links.com/2011/12/12/things-ive-written-elsewhere/</feedburner:origLink></item>
		<item>
		<title>Metaphwoar! 2011: What I Do = WTF?</title>
		<link>http://feedproxy.google.com/~r/PeterGasstonsGeekBlog/~3/LYqYz0WxkQw/</link>
		<comments>http://www.broken-links.com/2011/12/02/metaphwoar-2011-what-i-do-wtf/#comments</comments>
		<pubDate>Fri, 02 Dec 2011 14:00:50 +0000</pubDate>
		<dc:creator>Peter</dc:creator>
				<category><![CDATA[Events]]></category>

		<guid isPermaLink="false">http://www.broken-links.com/?p=1429</guid>
		<description><![CDATA[Here’s the video of the talk I gave at Metaphwoar! 2011 last month. The brief is very loose: talk about anything related to the web, but use metaphor (similes are also valid). I chose to talk about what I do, trying to define what it is — but in a very lighthearted way, and in [...]]]></description>
			<content:encoded><![CDATA[<p>Here’s <a href="http://vimeo.com/32975247">the video of the talk I gave at Metaphwoar! 2011 last month</a>. The brief is very loose: talk about anything related to the web, but use metaphor (similes are also valid). I chose to talk about what I do, trying to define what it is — but in a very lighthearted way, and in less than 15 minutes.</p>
<div style='text-align:center;'>
<object type="application/x-shockwave-flash" width="400" height="300" data="http://www.vimeo.com/moogaloop.swf?clip_id=32975247&amp;server=www.vimeo.com&amp;fullscreen=1&amp;show_title=1&amp;show_byline=0&amp;show_portrait=0&amp;color=01AAEA">
	<param name="quality" value="best" />
	<param name="allowfullscreen" value="true" />
	<param name="scale" value="showAll" />
	<param name="movie" value="http://www.vimeo.com/moogaloop.swf?clip_id=32975247&amp;server=www.vimeo.com&amp;fullscreen=1&amp;show_title=1&amp;show_byline=0&amp;show_portrait=0&amp;color=01AAEA" />
	<param name="wmode" value="opaque" />
</object>
</div>
<p>I enjoyed giving this talk, and the whole event is worth a watch. You can <a href="http://vimeo.com/album/1765288/">see all the other videos on Vimeo</a>. Bonus: See if you can spot the point where I completely forgot what to say next. It’s quite early on…</p>
 <p><a href="http://www.broken-links.com/?flattrss_redirect&amp;id=1429&amp;md5=54bf3e758d33ce7b1fe2f175f748abaa" title="Flattr" target="_blank"><img src="http://www.broken-links.com/wp-content/plugins/flattr/img/flattr-badge-large.png" alt="flattr this!"/></a></p><div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/PeterGasstonsGeekBlog?a=LYqYz0WxkQw:hN3pTmouxTk:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/PeterGasstonsGeekBlog?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/PeterGasstonsGeekBlog?a=LYqYz0WxkQw:hN3pTmouxTk:D7DqB2pKExk"><img src="http://feeds.feedburner.com/~ff/PeterGasstonsGeekBlog?i=LYqYz0WxkQw:hN3pTmouxTk:D7DqB2pKExk" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/PeterGasstonsGeekBlog?a=LYqYz0WxkQw:hN3pTmouxTk:F7zBnMyn0Lo"><img src="http://feeds.feedburner.com/~ff/PeterGasstonsGeekBlog?i=LYqYz0WxkQw:hN3pTmouxTk:F7zBnMyn0Lo" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/PeterGasstonsGeekBlog?a=LYqYz0WxkQw:hN3pTmouxTk:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/PeterGasstonsGeekBlog?i=LYqYz0WxkQw:hN3pTmouxTk:V_sGLiPBpWU" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/PeterGasstonsGeekBlog/~4/LYqYz0WxkQw" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.broken-links.com/2011/12/02/metaphwoar-2011-what-i-do-wtf/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		<atom:link rel="payment" href="http://www.broken-links.com/?flattrss_redirect&amp;id=1429&amp;md5=54bf3e758d33ce7b1fe2f175f748abaa" type="text/html" />
	<feedburner:origLink>http://www.broken-links.com/2011/12/02/metaphwoar-2011-what-i-do-wtf/</feedburner:origLink></item>
		<item>
		<title>An Argument In Favour Of Vendor Prefixes</title>
		<link>http://feedproxy.google.com/~r/PeterGasstonsGeekBlog/~3/ZC-YowlZycE/</link>
		<comments>http://www.broken-links.com/2011/11/15/an-argument-in-favour-of-vendor-prefixes/#comments</comments>
		<pubDate>Tue, 15 Nov 2011 21:06:03 +0000</pubDate>
		<dc:creator>Peter</dc:creator>
				<category><![CDATA[Opinion]]></category>
		<category><![CDATA[standards]]></category>

		<guid isPermaLink="false">http://www.broken-links.com/?p=1418</guid>
		<description><![CDATA[Henri Sivonen has written a fantastically well-considered post called Vendor Prefixes Are Hurting The Web which I urge you to read in full, as I’m about to discuss it. I think some of his points are absolutely right, but I disagree on the final conclusion. The points that I think he nails are: Demos that [...]]]></description>
			<content:encoded><![CDATA[<p>Henri Sivonen has written a fantastically well-considered post called <a href="http://hsivonen.iki.fi/vendor-prefixes/">Vendor Prefixes Are Hurting The Web</a> which I urge you to read in full, as I’m about to discuss it. I think some of his points are absolutely right, but I disagree on the final conclusion. The points that I think he nails are:</p>
<ul>
<li>Demos that work in one browser/engine only and aren’t updated even when other browsers implement the new features, are harmful.</li>
<li>Using prefixed features as a way of actively excluding other browsers is lazy and anti-competitive.</li>
<li>Including an unprefixed property in anticipation of eventual standardisation works against the principle of using prefixes</li>
<li>When browsers have working, largely compatible, implementations of properties (like transform) they should remove the prefix even if the spec hasn’t reached the stage required by the W3C.</li>
</ul>
<p>However, I still think using prefixed properties is the right approach. If we do as Henri suggests and leave experimental features in experimental builds (an eminently sensible suggestion, I might add), the pace of progress will be much slower. I believe that having these features out there and getting people using them encourages competition (and collaboration) between browser makers, and the benefits of that competition are given to us, the developers, and passed on to the audiences of the sites we build.</p>
<p>That doesn’t mean that the current situation is ideal; far from it. But improving things will involve more effort from us, the developers and writers, the community in general. Chief responsibilities will be:</p>
<ul>
<li>Commit to supporting old demos that we have made.</li>
<li>Always make sure we plan our designs and builds in a way that they are not reliant on prefixed features, but degrade gracefully.</li>
<li>Don’t use an unprefixed property before standardisation has happened unless we can have reasonable confidence that it is safe.</li>
<li>Make sure we stress that the things we use and teach are experimental and subject to change.</li>
</ul>
<p>As an author and writer I’m guilty of some of the faults that are pointed out in his article, and I promise to do better in the future.</p>
<p>In closing, I want to congratulate Henri on writing this thought-provoking post. I was ready to dismiss it as one of the lazy articles criticising prefixes that occur regularly, but the argument was very well thought and well made, and made me change my mind a few times while I was writing this post.</p>
 <p><a href="http://www.broken-links.com/?flattrss_redirect&amp;id=1418&amp;md5=025c8b4a066ca165fe12cee5997a7a71" title="Flattr" target="_blank"><img src="http://www.broken-links.com/wp-content/plugins/flattr/img/flattr-badge-large.png" alt="flattr this!"/></a></p><div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/PeterGasstonsGeekBlog?a=ZC-YowlZycE:2k5Hl4n7iho:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/PeterGasstonsGeekBlog?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/PeterGasstonsGeekBlog?a=ZC-YowlZycE:2k5Hl4n7iho:D7DqB2pKExk"><img src="http://feeds.feedburner.com/~ff/PeterGasstonsGeekBlog?i=ZC-YowlZycE:2k5Hl4n7iho:D7DqB2pKExk" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/PeterGasstonsGeekBlog?a=ZC-YowlZycE:2k5Hl4n7iho:F7zBnMyn0Lo"><img src="http://feeds.feedburner.com/~ff/PeterGasstonsGeekBlog?i=ZC-YowlZycE:2k5Hl4n7iho:F7zBnMyn0Lo" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/PeterGasstonsGeekBlog?a=ZC-YowlZycE:2k5Hl4n7iho:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/PeterGasstonsGeekBlog?i=ZC-YowlZycE:2k5Hl4n7iho:V_sGLiPBpWU" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/PeterGasstonsGeekBlog/~4/ZC-YowlZycE" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.broken-links.com/2011/11/15/an-argument-in-favour-of-vendor-prefixes/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		<atom:link rel="payment" href="http://www.broken-links.com/?flattrss_redirect&amp;id=1418&amp;md5=025c8b4a066ca165fe12cee5997a7a71" type="text/html" />
	<feedburner:origLink>http://www.broken-links.com/2011/11/15/an-argument-in-favour-of-vendor-prefixes/</feedburner:origLink></item>
		<item>
		<title>Introducing CSS Regions</title>
		<link>http://feedproxy.google.com/~r/PeterGasstonsGeekBlog/~3/dccEfLvh73Q/</link>
		<comments>http://www.broken-links.com/2011/11/07/introducing-css-regions/#comments</comments>
		<pubDate>Mon, 07 Nov 2011 14:45:36 +0000</pubDate>
		<dc:creator>Peter</dc:creator>
				<category><![CDATA[css]]></category>

		<guid isPermaLink="false">http://www.broken-links.com/?p=1394</guid>
		<description><![CDATA[The latest stable release for Chrome (version 15) brings experimental support for a new feature, CSS Regions. What this does is take content from a source, and flow that content into a target — or, more importantly, multiple targets. This allows layouts which are more flexible than are currently possible. This is still a very [...]]]></description>
			<content:encoded><![CDATA[<p>The latest stable release for Chrome (version 15) brings experimental support for a new feature, <a href="http://dev.w3.org/csswg/css3-regions/"><abbr>CSS</abbr> Regions</a>. What this does is take content from a source, and flow that content into a target — or, more importantly, multiple targets. This allows layouts which are more flexible than are currently possible.</p>
<p>This is still a very experimental feature but it’s worth beginning to investigate, so in this article I’m going to very quickly walk through the syntax and discuss the current level of implementation. <b>Update, Nov 15:</b> I realised that I overlooked Microsoft’s implementation of <abbr>CSS</abbr> Regions, so I’ve updated this post to correct that.</p>
<p><span id="more-1394"></span></p>
<h2><abbr>CSS</abbr> Regions in Chrome</h2>
<p>If you’re using at least version 15 of Chrome, the example below should show you a paragraph of content split between three boxes; if you’re using another browser, you should see a paragraph of text followed by three empty boxes (<a href="http://jsfiddle.net/stopsatgreen/V4xAq/embedded/result/">see this example on JSFiddle</a> if the iframe’s not working, and resize the browser to see the flow in action).</p>
<p><iframe style="width: 100%; height: 300px" src="http://jsfiddle.net/stopsatgreen/V4xAq/embedded/result/" allowfullscreen="allowfullscreen" frameborder="0"></iframe></p>
<p>The syntax itself is quite straightforward. We’ll start with the source element — this must be included in your markup, but won’t show up in the document. <abbr>CSS</abbr> is used to set the source, but the property is currently in a state of flux: in Chrome 15 you must use the <code>–webkit-flow</code> property, and in Chrome 16, the newly revised <code>–webkit-flow-into</code> property. In both cases the value is a unique identifier of your own choice — note, however, that in the first property I’ve quoted the identifier as it’s actually a string:</p>
<pre>#source {
  -webkit-flow: 'foo';
  -webkit-flow-into: foo;
}</pre>
<p>You can then distribute that content across as many target elements as you like. The content will flow through those elements in DOM order, with overflow from the first element appearing in the second, overflow from there appearing in the third, and so on. Once again, how you do this has changed: in Chrome 15 you use the <code>content</code> property with the <code>–webkit-from-flow()</code> function as a value, and in Chrome 16 you use the <code>–webkit-flow-from</code> property — in both cases, referring to the identifier you created (formatted as a string for Chrome 15):</p>
<pre>.target1, .target2 {
  content: -webkit-from-flow('foo');
  -webkit-flow-from: foo;
}</pre>
<p>Just to muddy the waters even further, the build of Chrome I’m currently using (16.0.912.21) is halfway through the transition between the old and new syntaxes, and so although I expect this to change before 16 becomes stable, currently only works with this syntax:</p>
<pre>#source { -webkit-flow-into: foo; }
.target1, .target2 { content: -webkit-from-flow('foo'); }</pre>
<p>Anyway, the flowed content is effectively invisible to the target elements, so by default they will have neither <code>height</code> nor <code>width</code>; that being the case, you need to assign some dimensions to them. <abbr title="Nota Bene" lang="la">NB</abbr>: Not being aware of the flowed content also means <code>min-height</code> and <code>min-width</code> will behave identically to <code>height</code> and <code>width</code> (respectively).</p>
<pre>.target1, .target2 { height: 100px; width: 100%; }</pre>
<p>Having to set explicit dimensions does somewhat limit the possibilities of CSS Regions; they were created to support print-influenced semi-fixed layouts aimed at tablets or ebook readers, so their usefulness on the web at large is perhaps restricted (certainly when viewed against some of the <a href="http://www.netmagazine.com/features/future-css-layouts">more flexible layout methods that are being planned</a>).</p>
<p>A quick note about styling the flowed content: long term there will be a new rule, <code>@region</code>, which will allow you to style the content for each target, for example:</p>
<pre>@region .target1 { color: #F00; }</pre>
<p>At the current level of implementation, however, you have to apply the rules to the <strong>source</strong>, not to the targets; that is to say, you can only style the box of the target elements, not the content within them.</p>
<h2><abbr>CSS</abbr> Regions in <abbr title="Internet Explorer 10">IE10</abbr></h2>
<p>The <a href="http://msdn.microsoft.com/en-us/windows/apps/br229516.aspx">preview release of <abbr>IE10</abbr></a> also has support for <abbr>CSS</abbr> Regions, although their implementation has one important difference, in that the source must be contained in an <code>iframe</code>:</p>
<pre>&lt;iframe id="source" content="source.html"&gt;&lt;/iframe&gt;</pre>
<p>This is then used in the same way as the standard dictates:</p>
<pre>#source { -ms-flow-into: foo; }
.target1, .target2 { -ms-flow-from: foo; }</pre>
<p>You can read more in the <a href="http://msdn.microsoft.com/en-us/ie/hh272902.aspx#_CSSConnected"><abbr>IE10</abbr> Developer Guide</a>. I’d imagine this implementation will be updated to fully meet the spec before <abbr>IE10</abbr> is officially released. I don’t have access to a copy of the preview browser at the moment so I can’t test if this works, but will update this post when I get the opportunity.</p>
 <p><a href="http://www.broken-links.com/?flattrss_redirect&amp;id=1394&amp;md5=ab2bf6f77521522551cb5b1b9c85a8c3" title="Flattr" target="_blank"><img src="http://www.broken-links.com/wp-content/plugins/flattr/img/flattr-badge-large.png" alt="flattr this!"/></a></p><div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/PeterGasstonsGeekBlog?a=dccEfLvh73Q:Ym_1UheT3AM:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/PeterGasstonsGeekBlog?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/PeterGasstonsGeekBlog?a=dccEfLvh73Q:Ym_1UheT3AM:D7DqB2pKExk"><img src="http://feeds.feedburner.com/~ff/PeterGasstonsGeekBlog?i=dccEfLvh73Q:Ym_1UheT3AM:D7DqB2pKExk" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/PeterGasstonsGeekBlog?a=dccEfLvh73Q:Ym_1UheT3AM:F7zBnMyn0Lo"><img src="http://feeds.feedburner.com/~ff/PeterGasstonsGeekBlog?i=dccEfLvh73Q:Ym_1UheT3AM:F7zBnMyn0Lo" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/PeterGasstonsGeekBlog?a=dccEfLvh73Q:Ym_1UheT3AM:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/PeterGasstonsGeekBlog?i=dccEfLvh73Q:Ym_1UheT3AM:V_sGLiPBpWU" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/PeterGasstonsGeekBlog/~4/dccEfLvh73Q" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.broken-links.com/2011/11/07/introducing-css-regions/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		<atom:link rel="payment" href="http://www.broken-links.com/?flattrss_redirect&amp;id=1394&amp;md5=ab2bf6f77521522551cb5b1b9c85a8c3" type="text/html" />
	<feedburner:origLink>http://www.broken-links.com/2011/11/07/introducing-css-regions/</feedburner:origLink></item>
		<item>
		<title>Opera’s CSS Pagination Build</title>
		<link>http://feedproxy.google.com/~r/PeterGasstonsGeekBlog/~3/gqw1fMzCZ8g/</link>
		<comments>http://www.broken-links.com/2011/10/27/operas-css-pagination-build/#comments</comments>
		<pubDate>Thu, 27 Oct 2011 13:07:18 +0000</pubDate>
		<dc:creator>Peter</dc:creator>
				<category><![CDATA[browsers]]></category>
		<category><![CDATA[css]]></category>
		<category><![CDATA[experimental]]></category>
		<category><![CDATA[media queries]]></category>
		<category><![CDATA[opera]]></category>
		<category><![CDATA[pagination]]></category>

		<guid isPermaLink="false">http://www.broken-links.com/?p=1385</guid>
		<description><![CDATA[Opera recently released a Labs build of their browser with support for CSS pagination; that is, removing the scrollbar from documents and adding page controls instead (this is ideal for non-desktop devices, especially TV, where scrolling can be onerous). The syntax (as described in the Generated Content for Paged Media module) is very simple; you [...]]]></description>
			<content:encoded><![CDATA[<p>Opera recently released <a href="http://labs.opera.com/news/2011/10/19/">a Labs build of their browser with support for CSS pagination</a>; that is, removing the scrollbar from documents and adding page controls instead (this is ideal for non-desktop devices, especially TV, where scrolling can be onerous). The syntax (as described in the <a href="http://dev.w3.org/csswg/css3-gcpm/">Generated Content for Paged Media module</a>) is very simple; you first use a media query with the <code>paged</code> media type (prefixed in Opera) like so:</p>
<pre>@media -o-paged {}</pre>
<p>Then use new values for the <code>overflow</code> property on the scrollable element to control whether the pagination moves horizontally or vertically, and whether or not on-screen controls are shown, like so:</p>
<pre>@media -o-paged {
  html {
    height: 100%;
    overflow: -o-paged-x-controls;
  }
}</pre>
<p>This paginates the whole document horizontally, and adds controls. To see this working, you’ll need to <a href="http://labs.opera.com/news/2011/10/19/">download a copy of the Labs build</a> (available for Mac, Windows, Linux and Android), then you can visit this <a href="http://www.broken-links.com/tests/diveinto/">example page from Dive Into HTML5</a> I quickly set up. Navigate by dragging/swiping, cursor keys, or the native controls.</p>
<p>I really like this; it’s still early days, but the syntax seems clear and logical and works well in the demos I’ve seen, and I think it’s going to be really useful as the web migrates away from the desktop and onto other connected devices. More <a href="http://people.opera.com/howcome/2011/reader/index.html">information and examples are in the ‘Paging the Web’ article</a> on Håkon Wium Lie’s website, and I’ll definitely be delving further into this.</p>
 <p><a href="http://www.broken-links.com/?flattrss_redirect&amp;id=1385&amp;md5=acc3715e9826691d4f1c345d6dbff672" title="Flattr" target="_blank"><img src="http://www.broken-links.com/wp-content/plugins/flattr/img/flattr-badge-large.png" alt="flattr this!"/></a></p><div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/PeterGasstonsGeekBlog?a=gqw1fMzCZ8g:BCCtYMbrr2M:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/PeterGasstonsGeekBlog?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/PeterGasstonsGeekBlog?a=gqw1fMzCZ8g:BCCtYMbrr2M:D7DqB2pKExk"><img src="http://feeds.feedburner.com/~ff/PeterGasstonsGeekBlog?i=gqw1fMzCZ8g:BCCtYMbrr2M:D7DqB2pKExk" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/PeterGasstonsGeekBlog?a=gqw1fMzCZ8g:BCCtYMbrr2M:F7zBnMyn0Lo"><img src="http://feeds.feedburner.com/~ff/PeterGasstonsGeekBlog?i=gqw1fMzCZ8g:BCCtYMbrr2M:F7zBnMyn0Lo" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/PeterGasstonsGeekBlog?a=gqw1fMzCZ8g:BCCtYMbrr2M:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/PeterGasstonsGeekBlog?i=gqw1fMzCZ8g:BCCtYMbrr2M:V_sGLiPBpWU" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/PeterGasstonsGeekBlog/~4/gqw1fMzCZ8g" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.broken-links.com/2011/10/27/operas-css-pagination-build/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<atom:link rel="payment" href="http://www.broken-links.com/?flattrss_redirect&amp;id=1385&amp;md5=acc3715e9826691d4f1c345d6dbff672" type="text/html" />
	<feedburner:origLink>http://www.broken-links.com/2011/10/27/operas-css-pagination-build/</feedburner:origLink></item>
	</channel>
</rss><!-- Dynamic page generated in 0.972 seconds. --><!-- Cached page generated by WP-Super-Cache on 2012-02-04 19:28:56 -->

