<?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>SitePoint » Learn CSS &#124; HTML5 &#124; JavaScript &#124; Wordpress &#124; Tutorials-Web Development &#124; Reference &#124; Books and More &#187; Web Design Tutorials &amp; Articles</title> <atom:link href="http://www.sitepoint.com/category/design/web-design/feed/" rel="self" type="application/rss+xml" /><link>http://www.sitepoint.com</link> <description></description> <lastBuildDate>Mon, 28 May 2012 01:26:54 +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" /> <item><title>Scalable Vector Graphics: Drawing Basics</title><link>http://www.sitepoint.com/svg-drawing-basics/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=svg-drawing-basics</link> <comments>http://www.sitepoint.com/svg-drawing-basics/#comments</comments> <pubDate>Tue, 22 May 2012 16:38:16 +0000</pubDate> <dc:creator>Craig Buckler</dc:creator> <category><![CDATA[Client Side Coding]]></category> <category><![CDATA[Design]]></category> <category><![CDATA[HTML5]]></category> <category><![CDATA[Responsive Web Design]]></category> <category><![CDATA[Tutorials]]></category> <category><![CDATA[Web Design Tutorials & Articles]]></category> <category><![CDATA[Web Tech]]></category> <category><![CDATA[graphics]]></category> <category><![CDATA[HTML5 Dev Center]]></category> <category><![CDATA[SVG]]></category> <guid
isPermaLink="false">http://www.sitepoint.com/?p=54645</guid> <description><![CDATA[<img
width="50" height="50" src="http://www.sitepoint.com/wp-content/uploads/1/files/2012/05/672-svg-basics-50x50.png" class="attachment-thumbnail wp-post-image" alt="672-svg-basics" title="672-svg-basics" />Craig's latest tutorial explains how to create SVG images and add simple drawing elements with nothing more than a text editor.]]></description> <content:encoded><![CDATA[<img
width="50" height="50" src="http://www.sitepoint.com/wp-content/uploads/1/files/2012/05/672-svg-basics-50x50.png" class="attachment-thumbnail wp-post-image" alt="672-svg-basics" title="672-svg-basics" /><p></p><p>In my previous posts we discussed <a
href="http://www.sitepoint.com/svg-scalable-vector-graphics-overview/">what SVGs are</a> and <a
href="http://www.sitepoint.com/7-reasons-to-consider-svgs-instead-of-canvas/">reasons you should consider SVGs for your project</a>. In this article we&#8217;ll look at the basic concepts, document structure and drawing elements.</p><h2>SVG Co-ordinate Space</h2><p>An SVG is defined in whatever co-ordinate space you give it. That space does not necessarily relate to pixels, cm, inches or other units because the images are scalable to any dimension.</p><p>Optionally, you can define a viewbox which determines the co-ordinates your SVG uses. The following SVGs would look identical:</p><ul><li>An SVG with a viewbox of 0,0 to 200,100 with a line from 0,0 to 100,50.</li><li>An SVG with a viewbox of 0,0 to 300,150 with a line from 0,0 to 150,75.</li></ul><p><img
src="http://blogs.sitepointstatic.com/images/tech/675-svg-drawing-space.png" width="300" height="267" alt="SVG drawing space" class="center" /></p><p>Your images are rendered within a viewport, i.e. the whole browser window or a block in an HTML page. By default, an SVG viewbox will stretch in either direction to fill the viewport space. However, you can state that you want the aspect ratio preserved.<div
id='div-gpt-ad-1328644474660-10' style='width:728px; height:90px;'> <script type='text/javascript'>googletag.cmd.push(function() { googletag.display('div-gpt-ad-1328644474660-10'); });</script> </div></p><p>Unlike mathematical graphs, the SVG co-ordinate system starts at the top left (usually 0,0) with the x-axis pointing right and y-axis pointing down. Therefore, a point at 100,200 represents 100 units to the right of the left hand edge and 200 units down from the top edge.</p><h2>SVG Length Units</h2><p>Lengths in SVG can be specified either as:</p><ul><li>a relative value in the SVG space, e.g. 10</li><li>an absolute or relative measurement, e.g. 10px. SVG supports em, ex, px, pt, pc, cm, mm, in and percentage units.</li></ul><p>If your image will be scaled, use units which are relative to your viewbox, e.g. a line width of 10 within a 100&#215;100 viewbox will be 10% of the full width/height.</p><h2>SVG XML Document</h2><p>An SVG image is defined as an XML document. Assuming you&#8217;re creating a new SVG file, such as <a
href="http://blogs.sitepointstatic.com/examples/tech/svg-basics/image.svg">image.svg</a>, an XML declaration and doctype must appear at the top of the document:</p><pre><code>
&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; standalone=&quot;no&quot;?&gt;
&lt;!DOCTYPE svg PUBLIC &quot;-//W3C//DTD SVG 1.1//EN&quot; &quot;http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd&quot;&gt;
</code></pre><p>This is followed by the root SVG element:</p><pre><code>
&lt;svg xmlns=&quot;http://www.w3.org/2000/svg&quot;&gt;
</code></pre><p>Several <a
href="http://www.w3.org/TR/SVG11/struct.html#SVGElement">optional attributes can be applied to the svg element</a>. Two important ones are:</p><ul><li><a
href="http://www.w3.org/TR/SVG/coords.html#ViewBoxAttribute">viewBox</a>: establish the dimensions &#8212; a rectangular co-ordinate area used for your image specified as &#8220;min-X min-Y width and height&#8221;, e.g. <code>viewBox="0 0 600 400"</code>. It&#8217;s important to remember this is an abstract space; it does not relate to pixels and your drawing elements are not constrained within these co-ordinates.</li><li><a
href="http://www.w3.org/TR/SVG11/coords.html#PreserveAspectRatioAttribute">preserveAspectRatio</a>: defines how a viewbox is scaled. There are many options, for example <code>preserveAspectRatio="xMidYMid meet"</code> ensures the middle of an SVG&#8217;s viewbox is aligned with the middle of the viewport (the browser window or HTML element containing the SVG) and the image fits the space available while preserving its aspect ratio.</li></ul><p>An optional title and description can be defined using <code>title</code> and <code>desc</code> elements. Our basic XML document is therefore:</p><pre><code>
&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; standalone=&quot;no&quot;?&gt;
&lt;!DOCTYPE svg PUBLIC &quot;-//W3C//DTD SVG 1.1//EN&quot; &quot;http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd&quot;&gt;
&lt;svg xmlns=&quot;http://www.w3.org/2000/svg&quot; viewBox=&quot;0 0 600 400&quot; preserveAspectRatio=&quot;xMidYMid meet&quot;&gt;
	&lt;title&gt;My First Scalable Vector Graphic&lt;/title&gt;
	&lt;desc&gt;An experimental SVG from SitePoint.com&lt;/desc&gt;
	&lt;!-- drawing elements to go here --&gt;
&lt;/svg&gt;
</code></pre><h2>Grouping Elements</h2><p>Any set of elements (lines, circles, rectangles, text, etc.) can be grouped using <code>&lt;g&gt; &hellip; &lt;/g&gt;</code> tags. In essence, it&#8217;s identical to grouping drawing objects in a graphics package so they can be manipulated as a single item.</p><p>Personally, I prefer to define a root group node so I can modify the whole image easily via JavaScript or CSS, e.g.</p><pre><code>
&lt;g id=&quot;main&quot;&gt;
	&lt;!-- drawing elements to go here --&gt;
&lt;/g&gt;
</code></pre><p>A single group can have any number of nested inner groups.</p><h2>Lines</h2><p>A single line between two points is drawn using the <code>line</code> element:</p><pre><code>
&lt;line x1=&quot;10&quot; y1=&quot;10&quot; x2=&quot;100&quot; y2=&quot;200&quot;
stroke=&quot;#999&quot; stroke-width=&quot;5&quot; stroke-linecap=&quot;round&quot; /&gt;
</code></pre><p>The stroke-linecap attribute defines the line-end effect and accepts values of butt (the default), round, square or inherit:</p><p><img
src="http://www.w3.org/TR/SVG11/images/painting/linecap.png" alt="SVG stroke-linecap" class="center" /></p><h2>Polylines</h2><p>Polylines define a set of connected straight line segments:</p><pre><code>
&lt;polyline points=&quot;580,10 560,390 540,200 520,390 400,390&quot;
stroke=&quot;#c00&quot; stroke-width=&quot;5&quot; stroke-linecap=&quot;round&quot;
stroke-linejoin=&quot;round&quot; fill=&quot;none&quot; /&gt;
</code></pre><p>The stroke-linejoin attribute defines the line-joining effect and accepts values of miter (the default), round, bevel or inherit:</p><p><img
src="http://www.w3.org/TR/SVG11/images/painting/linejoin.png" alt="SVG stroke-linejoin" class="center" /></p><h2>Polygons</h2><p>Polygons are are similar to polylines except that the resulting shape will always be closed:</p><pre><code>
&lt;polygon points=&quot;350,75 379,161 469,161 397,215 423,301 350,250 277,301 303,215 231,161 321,161&quot;
stroke=&quot;#ff0&quot; stroke-width=&quot;10&quot; fill=&quot;#ff6&quot; /&gt;
</code></pre><h2>Rectangles</h2><p>Square or rounded rectangles are defined using the <code>rect</code> element:</p><pre><code>
&lt;rect x=&quot;100&quot; y=&quot;10&quot; width=&quot;150&quot; height=&quot;100&quot; rx=&quot;10&quot; ry=&quot;20&quot;
stroke=&quot;#060&quot; stroke-width=&quot;8&quot; fill=&quot;#0f0&quot; /&gt;
</code></pre><p>The x and y attributes define the top-left corner. rx and ry specify the horizontal and vertical corner rounding.</p><h2>Circles</h2><p>Circles are defined using a center point and radius:</p><pre><code>
&lt;circle cx=&quot;100&quot; cy=&quot;300&quot; r=&quot;80&quot;
stroke=&quot;#909&quot; stroke-width=&quot;10&quot; fill=&quot;#f6f&quot; /&gt;
</code></pre><h2>Ellipses</h2><p>Ellipses are defined using a center point and two radii values:</p><pre><code>
&lt;ellipse cx=&quot;450&quot; cy=&quot;50&quot; rx=&quot;80&quot; ry=&quot;30&quot;
stroke=&quot;#0cc&quot; stroke-width=&quot;10&quot; fill=&quot;#0ff&quot; /&gt;
</code></pre><h2>Text</h2><p>Basic text can be added using the <code>text</code> element:</p><pre><code>
&lt;text x=&quot;240&quot; y=&quot;390&quot; font-family=&quot;sans-serif&quot; font-size=&quot;50&quot; fill=&quot;#00f&quot;&gt;SVG&lt;/text&gt;
</code></pre><p>The x and y attributes define the bottom-left co-ordinate of the first character in the string.</p><h2>The Result</h2><p>Our final SVG document contains the following XML code:</p><pre><code>
&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; standalone=&quot;no&quot;?&gt;
&lt;!DOCTYPE svg PUBLIC &quot;-//W3C//DTD SVG 1.1//EN&quot; &quot;http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd&quot;&gt;
&lt;svg xmlns=&quot;http://www.w3.org/2000/svg&quot; viewBox=&quot;0 0 600 400&quot; preserveAspectRatio=&quot;xMidYMid meet&quot;&gt;
	&lt;title&gt;My First Scalable Vector Graphic&lt;/title&gt;
	&lt;desc&gt;An experimental SVG from SitePoint.com&lt;/desc&gt;
	&lt;g id=&quot;main&quot;&gt;
		&lt;line x1=&quot;10&quot; y1=&quot;10&quot; x2=&quot;100&quot; y2=&quot;200&quot; stroke=&quot;#00c&quot; stroke-width=&quot;5&quot; stroke-linecap=&quot;round&quot; /&gt;
		&lt;polyline points=&quot;580,10 560,390 540,200 520,390 400,390&quot; stroke=&quot;#c00&quot; stroke-width=&quot;5&quot; stroke-linecap=&quot;round&quot; stroke-linejoin=&quot;round&quot; fill=&quot;none&quot; /&gt;
		&lt;polygon points=&quot;350,75 379,161 469,161 397,215 423,301 350,250 277,301 303,215 231,161 321,161&quot; stroke=&quot;#ff0&quot; stroke-width=&quot;10&quot; fill=&quot;#ffc&quot; /&gt;
		&lt;rect x=&quot;100&quot; y=&quot;10&quot; width=&quot;150&quot; height=&quot;100&quot; rx=&quot;10&quot; ry=&quot;20&quot; stroke=&quot;#060&quot; stroke-width=&quot;8&quot; fill=&quot;#0f0&quot; /&gt;
		&lt;circle cx=&quot;100&quot; cy=&quot;300&quot; r=&quot;80&quot; stroke=&quot;#909&quot; stroke-width=&quot;10&quot; fill=&quot;#f6f&quot; /&gt;
		&lt;ellipse cx=&quot;450&quot; cy=&quot;50&quot; rx=&quot;80&quot; ry=&quot;30&quot; stroke=&quot;#0cc&quot; stroke-width=&quot;10&quot; fill=&quot;#0ff&quot; /&gt;
		&lt;text x=&quot;240&quot; y=&quot;390&quot; font-family=&quot;sans-serif&quot; font-size=&quot;50&quot; fill=&quot;#00f&quot;&gt;SVG&lt;/text&gt;
	&lt;/g&gt;
&lt;/svg&gt;
</code></pre><p>and renders this image:</p><p><a
href="http://blogs.sitepointstatic.com/examples/tech/svg-basics/image.svg"><br
/> <img
src="http://blogs.sitepointstatic.com/images/tech/675-svg-drawing-screen.png" width="407" height="274" alt="SVG example" class="center" style="block" /><p
class="center">click to view the actual SVG</p><p></a></p><p>While this is a simple example, the file is 1,176 bytes <strong>before</strong> minification and gzipping. The equivalent compressed PNG above is 5,611 bytes &#8212; it&#8217;s almost 5x larger and cannot be scaled above its native 407&#215;274 resolution without losing quality.</p><p>Further Scalable Vector Graphic articles will appear on SitePoint soon&hellip;</p> <span
id="pty_trigger"></span><div
style='padding:20px 0px 50px 0px;'><div
style='float:left;padding-left:40px;'><div
id='div-gpt-ad-1335489406190-0' style='width:300px; height:100px;'> <script type='text/javascript'>googletag.cmd.push(function() { googletag.display('div-gpt-ad-1335489406190-0'); });</script> </div></div><div
style='float:right;padding-right:40px;'><div
id='div-gpt-ad-1335489406190-1' style='width:300px; height:100px;'> <script type='text/javascript'>googletag.cmd.push(function() { googletag.display('div-gpt-ad-1335489406190-1'); });</script> </div></div><div
style='clear:both'></div></div><div
style='clear:both'></div>]]></content:encoded> <wfw:commentRss>http://www.sitepoint.com/svg-drawing-basics/feed/</wfw:commentRss> <slash:comments>8</slash:comments> </item> <item><title>5 Fantastic Podcasts For Web Designers</title><link>http://www.sitepoint.com/5-fantastic-podcasts-for-web-designers/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=5-fantastic-podcasts-for-web-designers</link> <comments>http://www.sitepoint.com/5-fantastic-podcasts-for-web-designers/#comments</comments> <pubDate>Mon, 26 Mar 2012 16:00:47 +0000</pubDate> <dc:creator>Megan Kirby</dc:creator> <category><![CDATA[graphic design]]></category> <category><![CDATA[Inspiration]]></category> <category><![CDATA[Web Design Tutorials & Articles]]></category> <guid
isPermaLink="false">http://www.sitepoint.com/?p=52869</guid> <description><![CDATA[If you are a web designer looking to learn new skills, or even just to listen in on conversations about your passion, then podcasts might just be the ticket for you. You can listen in the car, at work, or even at the gym, to gain new insights into your career. Talk about multi-tasking! Here [...]]]></description> <content:encoded><![CDATA[<p></p><p>If you are a web designer looking to learn new skills, or even just to listen in on conversations about your passion, then podcasts might just be the ticket for you. You can listen in the car, at work, or even at the gym, to gain new insights into your career. Talk about multi-tasking! Here are 5 of my favorite web design podcasts:</p><h2><a
href="http://5by5.tv/bigwebshow">1. The Big Web Show</a></h2><p>The Big Web Show focuses on a special guest each episode. This is great, because this allows each episode to take a new direction, usually going in depth into what the guest&#8217;s specialty is, or is really passionate about. It is produced by the 5by5 Network and features topics like web publishing, art direction, content strategy, typography and more. Big Web has a very loose format, but still manages to pack in a lot of great  information, and the guest format brings in new perspective each and every episode.</p><h2><a
href="http://5by5.tv/webahead">2. The Web Ahead</a></h2><p>Also produced by the 5by5 Network, The Web Ahead is the more technical cousin of The Big Web Show. More dedicated to the web developer, the show hosted by Jen Simmons focuses on the changing technologies and future of the web. They discuss such topics as HTML5, mobile, responsive web design, iOS, and Android. There are all topics that web designers should be well aware of, even if they are on the front-end.<div
id='div-gpt-ad-1328644474660-10' style='width:728px; height:90px;'> <script type='text/javascript'>googletag.cmd.push(function() { googletag.display('div-gpt-ad-1328644474660-10'); });</script> </div></p><h2><a
href="http://thedeependdesign.com/graphic-design-podcast/">3. The Deeply Graphic DesignCast</a></h2><p>With only 8 episodes under its belt, <em>Deeply Graphic</em> has already found its stride. While not exclusively devoted to web design, many of their episodes do focus on it. Already, there is a 2 part episode all about the web design trends of 2012, as well as an episode dedicated to online portfolio websites. Most of the other episodes focus on general business-side topics that print as well as web designers can apply to their business. Produced by <a
href="http://thedeependdesign.com">The Deep End</a> design studio in Los Angeles, the three hosts have varied experience, and weigh in on issues from different viewpoints, which makes for a very interesting and entertaining show.</p><h2><a
href="http://shoptalkshow.com/">4. Shop Talk</a></h2><p><em>Shop Talk</em> is a podcast with a twist… its also a live call-in show! The two hosts, Chris and Dave share a genuine enthusiasm about web design and development that is infectious. They have guests on a regular basis and they have a lot of fun talking about some really geeky things. But I just happen to be a geek too, so it fits into my day perfectly.</p><h2><a
href="http://boagworld.com/podcast-archive/">5. The Boagworld Show</a></h2><p><em>Boagworld</em> combines entertaining banter and great information into an extremely listenable package. They follow the format which I like, one topic per episode. But these guys take it a step further, and organize their podcasts into &#8220;seasons&#8221; of 6 episodes each. Each season is its own umbrella topic, and each episode fits nicely under that umbrella.</p><p>&nbsp;</p> <span
id="pty_trigger"></span><div
style='padding:20px 0px 50px 0px;'><div
style='float:left;padding-left:40px;'><div
id='div-gpt-ad-1335489406190-0' style='width:300px; height:100px;'> <script type='text/javascript'>googletag.cmd.push(function() { googletag.display('div-gpt-ad-1335489406190-0'); });</script> </div></div><div
style='float:right;padding-right:40px;'><div
id='div-gpt-ad-1335489406190-1' style='width:300px; height:100px;'> <script type='text/javascript'>googletag.cmd.push(function() { googletag.display('div-gpt-ad-1335489406190-1'); });</script> </div></div><div
style='clear:both'></div></div><div
style='clear:both'></div>]]></content:encoded> <wfw:commentRss>http://www.sitepoint.com/5-fantastic-podcasts-for-web-designers/feed/</wfw:commentRss> <slash:comments>6</slash:comments> </item> <item><title>Bringing Cut the Rope to Life in an HTML5 Browser</title><link>http://www.sitepoint.com/bringing-cut-the-rope-to-life-in-an-html5-browser/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=bringing-cut-the-rope-to-life-in-an-html5-browser</link> <comments>http://www.sitepoint.com/bringing-cut-the-rope-to-life-in-an-html5-browser/#comments</comments> <pubDate>Wed, 08 Feb 2012 22:50:01 +0000</pubDate> <dc:creator>Giorgio Sardo</dc:creator> <category><![CDATA[HTML & CSS]]></category> <category><![CDATA[HTML5]]></category> <category><![CDATA[JavaScript]]></category> <category><![CDATA[Web Design Tutorials & Articles]]></category> <category><![CDATA[Web Tech]]></category> <category><![CDATA[HTML5 Dev Center]]></category> <guid
isPermaLink="false">http://www.sitepoint.com/?p=51213</guid> <description><![CDATA[<img
width="50" height="29" src="http://www.sitepoint.com/wp-content/uploads/1/files/2012/02/feature3-50x29.png" class="attachment-thumbnail wp-post-image" alt="feature" title="feature" />Award-winning mobile game Cut the Rope is an immediate favorite for anyone who plays it. It’s as fun as it is adorable. So we had an idea: let’s make this great game available to an even bigger audience by offering it on the web using the power of HTML5. To do this, Microsoft’s Internet Explorer [...]]]></description> <content:encoded><![CDATA[<img
width="50" height="29" src="http://www.sitepoint.com/wp-content/uploads/1/files/2012/02/feature3-50x29.png" class="attachment-thumbnail wp-post-image" alt="feature" title="feature" /><p></p><p>Award-winning mobile game <strong>Cut the Rope</strong> is an immediate favorite for anyone who plays it. It’s as fun as it is adorable. So we had an idea: let’s make this great game available to an even bigger audience by offering it on the web using the power of HTML5.</p><p>To do this, Microsoft’s Internet Explorer team partnered with <a
href="http://zeptolab.com/">ZeptoLab</a> (the creators of the game) and the specialists at <a
href="http://thinkpixellab.com/">Pixel Lab</a> to bring <strong>Cut the Rope</strong> to life in a browser. The end result is an authentic translation of the game for the web, showcasing some of the best that HTML5 has to offer: canvas-rendered graphics, browser-based audio and video, CSS3 styling and the personality of WOFF fonts.</p><p>You can play the HTML5 version of <strong>Cut the Rope</strong> at: <a
href="http://www.cuttherope.ie/">www.cuttherope.ie</a>.</p><p>We think that the HTML5 version makes the web more fun and it demonstrates the advances in standards support made in the latest version of Internet Explorer. With that in mind, we want to share some of the cool “behind the scenes” technical details used on this project to help you build your own HTML5 sites and ultimately get ready for the <a
href="http://msdn.microsoft.com/en-us/windows">Windows 8 Store</a>!<div
id='div-gpt-ad-1328644474660-10' style='width:728px; height:90px;'> <script type='text/javascript'>googletag.cmd.push(function() { googletag.display('div-gpt-ad-1328644474660-10'); });</script> </div></p><p><img
class="alignnone size-full wp-image-51216" title="figure1" src="http://www.sitepoint.com/wp-content/uploads/2012/02/figure11.png" alt="Cut the Rope in IE9" width="220" height="220" /></p><p><em>Cut the Rope running in IE9 as an HTML5 application, ported from the original iOS source code.</em></p><p><img
class="alignnone size-full wp-image-51218" title="figure2" src="http://www.sitepoint.com/wp-content/uploads/2012/02/figure21.png" alt="special levels" width="220" height="171" /><br
/> <em> A screenshot of one of the specially designed levels that are uniquely available in this version.</em></p><p><strong>Objective-C to JavaScript</strong></p><p>In bringing <strong>Cut the Rope</strong> to a new platform, we wanted to ensure we preserved the unique physics, motion, and personality of the experience. So early on we decided to approach this game as a “port” from the native iOS version (rather than a rewrite). We kicked off the project with an extensive investigation of the original Objective-C codebase. Turns out it’s a big and complex game. The native iOS version consists of about 15,000 lines of code (excluding libraries)! The most complex parts of the codebase are the physics, animation, and drawing engines. They’re complex on their own, but made even more so by the fact that all three are tightly connected and highly optimized.</p><p>It was a daunting task: get this code into a browser while maintaining the unique personality and incredible quality that gamers are accustomed to. To accomplish this, we bet on JavaScript.</p><p>In the past, JavaScript had a reputation of being a slow language. Frankly, that reputation was initially valid. Older JavaScript engines were designed for simple “scripting” kinds of tasks (hence the name). Today, however, JavaScript engines have been highly optimized. With features like just-in-time compilation, JavaScript now can execute at near native speeds.</p><p>Beyond that, we know that coding for JavaScript is different from &#8211; and requires a different kind of mindset than &#8211; coding in a compiled language. As we ported the game from Objective-C, we knew we would need to embrace the task of making these sorts of changes and optimizations.</p><p>One obvious example was the lack of <em>structs</em> in JavaScript. Structs are lightweight aggregations of related properties. It’s easy to use a JavaScript object to hold a set of properties, but there are important differences between that approach and a proper struct. The first difference is that structs get copied whenever they’re assigned to a variable or passed to a function. So, a function written in a compiled language like Objective-C can modify a struct passed as a parameter without affecting the value in the caller. Even within a function, assignment of a struct to a different variable will copy the values. JavaScript objects, on the other hand, are passed by reference. So when a function modifies an object parameter, the changes will be visible to the caller.</p><p>An easy way to mimic the nature of structs is to create copies of JavaScript objects for assignment or parameter passing. In native languages there is typically very little overhead to using structs. Creating an object in JavaScript is much more expensive, so we had to be very careful to minimize the number of allocations. Particularly on assignments, whenever possible we tried to copy individual properties rather than creating entirely new object instances.</p><p>Another example is the object oriented nature of the Objective-C codebase. In lieu of traditional object-based inheritance, JavaScript offers prototypical inheritance, inheritance based on the Prototype property. This is a highly simplified form of object inheritance that really isn’t compatible with a traditional object oriented language like Objective-C. Fortunately, there are a variety of class libraries that can help you write object-oriented programming (OOP) style code for JavaScript; we made use of <a
href="http://ejohn.org/blog/simple-javascript-inheritance/">a very simple one</a> that was written by John Ressig (of jQuery fame). (Note that ECMAScript5, the specification for the newest version of JavaScript, also includes some support for classes but we opted not to use it in this port due to our lack of familiarity with that version of the language coupled with our aggressive development schedule).</p><p>In addition to porting from Objective-C to JavaScript, we also needed to port our graphics code from OpenGL to the HTML5 Canvas API. Overall, this went really smoothly. Canvas is an amazingly fast rendering surface, especially in a browser where that API is hardware accelerated (like Internet Explorer 9).</p><p><img
class="alignnone size-full wp-image-51219" title="figure3" src="http://www.sitepoint.com/wp-content/uploads/2012/02/figure31.png" alt="aliased lines" width="220" height="220" /></p><p><em>An example of drawing the ropes with aliased lines using the canvas API.</em></p><p>Surprisingly, we encountered a few areas where the Canvas provides more functionality than does the version of OpenGL ES that was used by the mobile version of Cut the Rope. One example is drawing <a
href="http://en.wikipedia.org/wiki/Spatial_anti-aliasing">anti-alias lines</a>. Drawing anti-aliased lines in OpenGL requires tessellating a line into a triangle strip and fading the opacity of the end caps to complete transparency. The HTML5 canvas automatically handles anti-aliasing for lines drawn with its line API. This meant we actually needed to remove code from the OpenGL version. Unwinding the array of triangle vertices in the OpenGL code also gave us much better performance over trying to natively copy the triangle strip method of drawing lines.</p><p>In the end, we have nearly 15,000 lines of code executing in the browser (it’s been minified so if you view the source code in your browser, it will be many lines fewer than that). Anticipating the complexity associated with that much code, Denis Morozov (the Director of Development at ZeptoLab) asked a fair question early on: will HTML5 give us the speed and performance that we need for this game?</p><p>To answer that, we created an early “performance” milestone, one where we focused on getting a minimal version of the most intense parts of the game running. Namely, we wanted to see what the ropes looked like and whether we could handle the complex physics engine in the browser.</p><p><strong>Performance</strong></p><p>Three weeks into the project, we finally had the basics of the physics and drawing engines in place with a simple timer to bootstrap the animation. We could now render a couple of ropes, a star, and an Om Nom sprite into the game scene. Progress! By week four, we had included some basic mouse interaction and with that we could actually play the game! We were testing performance along the way, but we wanted to let the team at ZeptoLab give us their feedback.</p><p>When we shared the code with ZeptoLab, they were pleasantly surprised by the performance (particularly the speed and smoothness from the game) that we were seeing in modern browsers. To be honest, we had been holding our breath just a little. We expected JavaScript to be fast but the physics calculations were intense and had to happen in real-time. This is a great example of where common preconceptions about the “slowness” of JavaScript turn out to be wrong. The latest generation of JavaScript engines is incredibly fast.</p><p>In this case, we were previewing the game in Internet Explorer 9. When you load the game, Internet Explorer 9’s Chakra JavaScript engine pre-compiles the code on a background thread—just as a compiler would compile a language like Objective-C or C++. It then, in real time, sends the compiled code (byte-code) to the game thread for execution. The result is near-native execution speeds. Amazingly, this is something that you just get for free from the JavaScript engine—we didn’t have to do anything special in the code.</p><p><img
class="alignnone size-full wp-image-51220" title="figure4" src="http://www.sitepoint.com/wp-content/uploads/2012/02/figure41.png" alt="framerate test results" width="220" height="220" /></p><p><em>Framerate test results early in the project (note that framerates are capped at 60FPS)</em></p><p>Our bet on JavaScript was paying off, so we turned our attention to hardware and browsers. With Internet Explorer’s hardware-accelerated rendering stack and our experience with <a
href="http://windowsteamblog.com/ie/b/ie/archive/2011/06/03/behind-the-scenes-of-disney-tron-legacy-digital-book-site.aspx">Disney Tron</a> and other <a
href="http://www.beautyoftheweb.com/">HTML5 sites</a>, we didn’t have any concerns about its ability to run the game perfectly on our test machines. We were easily hitting our capped goal of 60 FPS (frames per second). We wanted to be sure, however, that the game ran well on other hardware with other browsers. <a
href="http://www.cuttherope.ie/dev/notes-framerates.jpg">Here’s what we saw</a> after some preliminary testing.</p><p>Based on those numbers, we set 30 FPS as our minimum bar. We decided that when the browser goes below that threshold, we would notify the user. They could still play the game, but we’d inform them that it could feel a little bit sluggish. This ensures that we support the huge diversity of hardware and software that’s out there and provide the best experience we can to all of the game’s visitors.</p><p>Two things we want to point out. One, the current version of the game works best on desktop PCs and Macs with a mouse. We have not added the support for touch based input yet, but this is something we’re considering for future versions.</p><p>Second, the current version of Chrome (version 16) has <a
href="http://code.google.com/p/chromium/issues/detail?id=107933">known issues related to media playback</a> that make sound unpredictable in Cut the Rope. We researched workarounds and have attempted to re-encode the media in multiple formats (including WebM), but haven&#8217;t found a format or MIME configuration or anything else that will reliably fix the problem. These appear to be browser bugs and known issues. More importantly, the game continues to be playable and enjoyable in spite of the intermittent audio. In light of that, while we can say Internet Explorer 9 users get a great plug-in free experience, Chrome and some Firefox users could have run into an audio problem but will notice we fall back to a flash plugin to ensure that sound effects and music will work.</p><p><strong>Tools</strong></p><p>A great thing about HTML5 is that you don’t need to learn a new language to unlock the power of this new technology. If you know and understand JavaScript, you already have access to all that a modern browser can do. You could even create your own game like this!</p><p><strong>Code Editor and Development Environment</strong></p><p><img
class="alignnone size-full wp-image-51221" title="figure5" src="http://www.sitepoint.com/wp-content/uploads/2012/02/figure51.png" alt="VWD 2010 Express" width="220" height="161" /></p><p><em>Visual Web Developer 2010 Express is a free download and a great editor for even experienced web developers.</em></p><p><img
class="alignnone size-full wp-image-51222" title="figure6" src="http://www.sitepoint.com/wp-content/uploads/2012/02/figure61.png" alt="profiler screenshot" width="220" height="260" /></p><p><em>A screenshot from the profiler that shows the disproportionate amount of time being spent in Calc2PointBezier, a function that&#8217;s used to caculate the positions of the rope segments.</em></p><p>There are some great free tools that make working with JavaScript and HTML5 easy. Much of our development was done in Visual Web Developer 2010 (<a
href="http://www.microsoft.com/visualstudio/en-us/products/2010-editions/visual-web-developer-express">the &#8220;express&#8221; version is available for free here</a>). This is a really robust web editor with autocompletion for JavaScript and CSS. It’s great that the express version is free! We did most of our testing in Internet Explorer 9 on Windows 7 and from time to time we would also test on Firefox, Chrome, Safari, and in Internet Explorer 10 developer preview. In general, all major browsers have a very consistent implementation of the HTML5 features we used and, in most cases, anything we tested in Internet Explorer 9 “just worked” everywhere else.</p><p><strong>Check out our Resource Loader!</strong></p><p>Cut the Rope has unique and very detailed visual styling &#8211; lots of media in the form of images, sounds and video &#8211; which comes at a small cost. The result is that the whole game is much bigger than an average website. Combined, it’s around 6 MB (compared to 200-300K for a typical site). That much media can take a little while to download and we can&#8217;t start the game until we know everything is there. A traditional web page is pretty forgiving if you&#8217;re missing an image or two but the HTML5 canvas API (drawImage) will fail if the image isn&#8217;t available.</p><p>To tackle this challenge, we wanted to create a resource loader that downloads all of the content we need for the page and gives us good feedback as things are downloaded. This bit of code does a bunch of smart things:</p><p>1. It deals with the peculiarities of how different browsers handle downloads and how they inform you of their progress.</p><p>2. It lets you make smart decisions about the order in which things are downloaded (you might want to start big files first, for example, or maybe download all of the menu images before you get the game images).</p><p>3. Finally, it gives you smart events as things arrive so that you can show the user progress or even start part of the game when the first group is completed.</p><p>Building these types of libraries is tricky to do well. Since we’re really pleased with how this all came together, we wanted to share the code for our resource loader with you. The result is PxLoader, a javascript Resource Loader library that you can user to make preloaders for HTML5 applications, games and sites. It&#8217;s open source and free. You can grab it from the top of the page, or just click <a
href="http://thinkpixellab.com/pxloader">here</a>.</p><p><strong>Performance Tools in Internet Explorer</strong></p><p>Another indispensable tool in the development process was the JavaScript Profiler in Internet Explorer 9. Profiling lets you discover hot spots and bottlenecks in your code. At one point in our first performance related milestone, we nearly called it quits when we discovered that on some machines we were stuck at 20 or 30 FPS.</p><p>We did some initial code reviews, but nothing was jumping out. We loaded the game with the profiler and immediately saw that we were spending a lot of time inside the satisfyConstraints() function. That function calculates some of the math related to the physics of the ropes. The Objective-C implementation which we had ported was written recursively, passing a new object into each successively deeper call.</p><p>With some guidance from Microsoft, we decided to replace the recursive function with an “unpacked” iterative version of the same code. The results were amazing. We saw a 10x improvement in every browser! Frankly, we would have never found that without the profiling tools in Internet Explorer 9.</p><p><strong>What’s next?</strong></p><p>At BUILD in September, Microsoft showed a developer preview of Windows 8. With this announcement, the HTML5 story got more interesting because Metro style applications can be created using a variety of developer toolsets, including HTML5. This means that web developers can take code that was written for the web and easily and seamlessly port it to Windows 8. The investment in immersive experiences online now can pay off in real profits later with the Windows Store.</p><p>In fact, with very little extra work, we were able to port this HTML5 experience to a Windows 8 Metro style app. Read about <strong>Cut the Rope</strong> and its integration with the Windows Store in <a
href="http://blogs.msdn.com/b/windowsstore/archive/2011/12/06/announcing-the-new-windows-store.aspx">this blog post</a>.</p><p>We are excited to see what developers can build today with HTML5. You can download Internet Explorer 9 and find other beautiful sites at <a
href="http://www.beautyoftheweb.com/">www.beautyoftheweb.com</a>, or download the Developer Preview of Windows 8 at <a
href="http://dev.windows.com/">dev.windows.com</a>.</p> <span
id="pty_trigger"></span><div
style='padding:20px 0px 50px 0px;'><div
style='float:left;padding-left:40px;'><div
id='div-gpt-ad-1335489406190-0' style='width:300px; height:100px;'> <script type='text/javascript'>googletag.cmd.push(function() { googletag.display('div-gpt-ad-1335489406190-0'); });</script> </div></div><div
style='float:right;padding-right:40px;'><div
id='div-gpt-ad-1335489406190-1' style='width:300px; height:100px;'> <script type='text/javascript'>googletag.cmd.push(function() { googletag.display('div-gpt-ad-1335489406190-1'); });</script> </div></div><div
style='clear:both'></div></div><div
style='clear:both'></div>]]></content:encoded> <wfw:commentRss>http://www.sitepoint.com/bringing-cut-the-rope-to-life-in-an-html5-browser/feed/</wfw:commentRss> <slash:comments>8</slash:comments> </item> <item><title>Responsive Web Design</title><link>http://www.sitepoint.com/responsive-web-design/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=responsive-web-design</link> <comments>http://www.sitepoint.com/responsive-web-design/#comments</comments> <pubDate>Mon, 30 Jan 2012 12:30:21 +0000</pubDate> <dc:creator>Katrien De Graeve</dc:creator> <category><![CDATA[HTML & CSS]]></category> <category><![CDATA[HTML5]]></category> <category><![CDATA[Responsive Web Design]]></category> <category><![CDATA[Web Design Tutorials & Articles]]></category> <category><![CDATA[Web Tech]]></category> <category><![CDATA[HTML5 Dev Center]]></category> <guid
isPermaLink="false">http://www.sitepoint.com/?p=50784</guid> <description><![CDATA[<img
width="50" height="50" src="http://www.sitepoint.com/wp-content/uploads/1/files/2012/01/rwd1-50x50.png" class="attachment-thumbnail wp-post-image" alt="rwd" title="rwd" />Belgian Microsoft evangelist Katrien De Graeve lays out just what can be achieved with media queries in CSS.]]></description> <content:encoded><![CDATA[<img
width="50" height="50" src="http://www.sitepoint.com/wp-content/uploads/1/files/2012/01/rwd1-50x50.png" class="attachment-thumbnail wp-post-image" alt="rwd" title="rwd" /><p></p><p>It all started with <a
href="http://www.alistapart.com/articles/responsive-web-design/">Responsive Web Design</a>, an article by Ethan Marcotte on A List Apart. Essentially, the article proposed addressing the ever-changing landscape of devices, browsers, screen sizes and orientations by creating flexible, fluid and adaptive Websites. Instead of responding to today’s needs for a desktop web version adapted to the most common screen resolution, along with a particular mobile version (often specific to a single mobile device), the idea is to approach the issue the other way around: use flexible and fluid layouts that adapt to almost any screen.</p><p><strong>Core Concepts</strong></p><p>Three key technical features are at the heart of responsive web design:</p><ul><li>Media queries and media query listeners</li><li>A flexible grid-based layout that uses relative sizing</li><li>Flexible images and media, through dynamic resizing or CSS</li></ul><p>Truly responsive web design requires all three features to be implemented.</p><p>The key point is adapting to the user’s needs and device capabilities. Suppose a mobile user will be viewing your site on a small screen. Taking the user’s needs into account doesn’t just mean adapting your content to the screen size. It also means thinking about what that mobile user will require first when visiting your site and then laying out the content accordingly. Maybe you’ll present the information in a different order. Don’t assume the user won’t need access to all the site information because she’s on a mobile device. You might need to change the fonts or interaction areas to respond better to a touch environment. All these factors influence responsive web design.<div
id='div-gpt-ad-1328644474660-10' style='width:728px; height:90px;'> <script type='text/javascript'>googletag.cmd.push(function() { googletag.display('div-gpt-ad-1328644474660-10'); });</script> </div></p><p>While mobile devices are changing the display landscape, with the appearance of more and more small screens, don’t forget what’s happening at the other end of the spectrum. Displays are also getting larger and larger. Having to serve both segments shouldn’t stop designers from being innovative on either.</p><h3>Media Queries</h3><p>Starting with CSS 2.1, media types were used to apply CSS for both screen and print. You might remember these media types:</p><pre>&lt;link rel="stylesheet" type="text/css" href="style.css" media="screen" /&gt;
&lt;link rel="stylesheet" type="text/css" href="printfriendly.css" media="print" /&gt;</pre><p>That was it! Luckily, the W3C improved <a
href="http://www.w3.org/TR/css3-mediaqueries/">media queries</a> in CSS3, moving them a big step forward.</p><p>Today, you can use media queries to scope styles to specific capabilities, applying different styles based on the capabilities that match your query. You can even combine queries that test for several features by using semantic operators such as AND and NOT). Features include width, height, max-width, max-height, device-height, orientation, aspect-ratio, resolution and more.</p><p>There are three ways to implement media queries:</p><ol><li>Use the @import rule to import style rules from other style sheets:</li><li>@import url(style600min.css) screen and (min-width: 600px);</li><li>Put media queries directly in the style sheet, as shown below.</li></ol><pre>#nav
    {
        float: right;
    }
        #nav ul
        {
            list-style: none;
        }
    @media screen and (min-width: 400px) and (orientation: portrait)
        {
            #nav li
            {
                float: right;
                margin: 0 0 0 .5em;
                border:1px solid #000000;
            }
        }
    @media screen and (min-width: 800px)
        {
            #nav
            {
                width: 200px;
            }
                #nav li
                {
                    float: left;
                    margin: 0 0 0 .5em;
                    border: none;
                }
        }</pre><p>Include a query in a linked style sheet’s <code>media</code> attribute:</p><p><code>&lt;link rel="stylesheet" type="text/css" media="screen and (max-device-width: 800px)" href="style800.css" <strong>/&gt;</strong></code><br
/> &nbsp;<br
/> Because of the (cascading) nature of CSS, default styles are defined at the top with the media query matching rules and styles below. Styles defined at the top will be cascaded to the matching styles in the rule, or even completely overwritten.</p><p>The following images present an example of a responsive web design approach that uses media queries.</p><p><strong>Figure 1</strong> and <strong>Figure 2</strong> both show a desktop using Internet Explorer 9 in two different resolutions. <strong>Figure 3</strong> shows the same responsive site on a Windows Phone, also with Internet Explorer 9.</p><p><img
class="alignnone size-full wp-image-50787" title="figure1" src="http://www.sitepoint.com/wp-content/uploads/2012/01/figure12.png" alt="navigation appears on the left" width="550" height="329" /><br
/> <strong>Figure 1 Navigation Appears on the Left</strong><br
/> &nbsp;<br
/> <img
class="alignnone size-full wp-image-50788" title="figure2" src="http://www.sitepoint.com/wp-content/uploads/2012/01/figure23.png" alt="navigation switches to the top" width="550" height="523" /><br
/> <strong>Figure 2 In an 800&#215;600 Resized Window, Navigation Switches to the Top</strong><br
/> &nbsp;<br
/> <img
class="alignnone size-full wp-image-50789" title="figure3" src="http://www.sitepoint.com/wp-content/uploads/2012/01/figure3.png" alt="on a windows phone" width="302" height="548" /><br
/> <strong>Figure 3 The Same Site on a Windows Phone</strong><br
/> &nbsp;<br
/> If you’re looking for some great examples of responsive web design that take full advantage of media queries, the <a
href="http://mediaqueri.es/">http://mediaqueri.es/</a> enthusiast site can be addictive, as <strong>Figure 4</strong> shows.</p><p><img
class="alignnone size-full wp-image-50790" title="figure4" src="http://www.sitepoint.com/wp-content/uploads/2012/01/figure41.png" alt="screenshot of media queries fan site" width="550" height="366" /></p><p><strong>Figure 4 A Collection of Sites That Use Media Queries</strong></p><h3>Media Query Listeners</h3><p>Taking media queries a step further, the CSS Object Model (CSSOM) working group at the W3C also created media query listeners, which provide an API for responding to media query changes. Instead of having to poll for changes or load several versions of a resource, you can use the API, for example, to download images only of a particular size when a media query match is triggered.</p><p>Today, <a
href="http://www.mozilla.org/en-US/firefox/">Firefox</a> and the <a
href="http://msdn.microsoft.com/ie/hh272903#_DOMMediaQuery">Internet Explorer 10 Platform Preview</a> implement media query listeners; you can see the demo “<a
href="http://ie.microsoft.com/testdrive/HTML5/CSS3MediaQueries/Default.html#MediaQueryListeners">CSS3 Media Queries &amp; Media Query Listeners</a>” on the IE Test Drive.</p><h3>A Word about the Viewport</h3><p>When testing media queries on mobile browsers, you might notice that the correct media queries are not actually being applied. When this happens, the mobile browser is doing some work on your behalf to render the page optimally on the smaller screen.</p><p>So do you think there isn’t a way of getting the real resolution? Actually there is, in the viewport meta tag. The viewport meta tag controls the logical dimensions and scaling of the mobile browser’s (chrome-less) window. Setting the width equal to the device-width works around the problem:</p><p><code>&lt;meta name="viewport" content="width=device-width"&gt;</code><br
/> &nbsp;<br
/> Other viewport settings include <code>maximum-zoom</code> and <code>initial-scale</code>.</p><h3>Flexible Grids</h3><p>A flexible grid-based layout is one of the cornerstones of responsive design. The term “grid” is used rather freely and doesn’t imply a requirement to implement any of the available grid frameworks. What it means here is using CSS for positioning and for laying out margins and spacing, and for implementing various <a
href="http://sixrevisions.com/web_design/a-guide-on-layout-types-in-web-design/">web layout types</a> in a new way. Layouts and text sizes are typically expressed in pixels. Designers love pixels. Photoshop loves pixels. But a pixel can be one dot on one device and eight dots on another. So how do you approach responsive web design if everything is pixel-based? You might not like the answer: You stop using pixel-based layouts and start using percentages or the <code>em</code> for sizing.</p><p>By basing text sizes, widths and margins on percentages or on the <code>em</code>, a unit of measurement based on a font’s point size, you can turn a fixed size into a relative size. This means you’ll need to do a little math to achieve a flexible grid and text size system. But the formula for calculating the <code>em</code> is very simple:</p><p><code>target ÷ context = result</code><br
/> &nbsp;<br
/> Let’s say the normal context for the body font size is 16 pixels. If the designer specifies that the H1 should be 24 pixels, you can calculate the following:</p><p><code>24 ÷ 16 = 1.5</code><br
/> &nbsp;<br
/> This results in the following CSS style:</p><pre>h1{
    font-size: 1.5em;
}</pre><p>&nbsp;</p><p>Always take the context into account. Continuing with the previous example, if you have an element inside the <code>H1</code> that needs to be 12 pixels, you use the current <code>H1</code> as the context. The context is now 24 pixels, so the context calculation for “H1 a” is:</p><p><code>12 ÷ 24 = 0.5</code><br
/> &nbsp;</p><p>And the CSS style is:</p><pre>h1 a{
    font-size: 0.5em;
}</pre><p>&nbsp;<br
/> You can also use percentages. The calculation algorithm is the same; you just end up with percentages.</p><p>Flexible grids use this approach. You can find several frameworks to help you craft your grid, such as <a
href="http://fluid.newgoldleaf.com/">Fluid Grid System</a> or <a
href="http://www.designinfluences.com/fluid960gs/">Fluid 960 Grid System</a> (a fluid version of 960 Grid System). Moreover, several groups within the W3C have submitted new specs for better flexible grids, with some useful results.</p><h3>CSS3 Grid Layout</h3><p>The <a
href="http://dev.w3.org/csswg/css3-grid-align/">CSS3 Grid Layout</a> (also known as Grid Alignment or, simply, the Grid), brings a typical grid system to CSS, similar to what XAML or Silverlight developers may be familiar with. At the time of this writing, the spec is an “Editor’s Draft.” It allows for defining regions in a layout, with columns and rows, spanning, spacing, padding, grid templates and more, enforcing full separation of concerns between HTML elements and CSS. Unlike HTML tables that are content, the Grid allows for placing HTML primitives into grid regions separate from actual content.</p><p>Combining the CSS3 Grid with media queries creates a powerful solution for building fluid, responsive applications.</p><p>How does the Grid work? You start by setting the display block to ‘grid’. (You need to use CSS vendor prefixes because this is not yet a CSS3 recommendation. Right now, only Internet Explorer 10 Platform Preview supports the spec, so you’ll see the CSS vendor prefix -ms- used here.) Let’s look at three examples of how you can set up different views depending on screen size. Media queries are used to apply different grid styles depending on the screen width.</p><p>In the first example, the HTML for defining the content consists of one header and three different blocks of text.</p><pre>&lt;div id="mygrid"&gt;
    &lt;header id="myheader"&gt;
        &lt;h1&gt;Hello world&lt;/h1&gt;
    &lt;/header&gt;
    &lt;div id="block1"&gt;
        &lt;h2&gt;Lorem Ipsum section 1&lt;/h2&gt;
        &lt;p&gt;
            Phasellus venenatis sem vel velit tincidunt tincidunt.
              Curabitur gravida, ante sit amet [... ...]
        &lt;/p&gt;
    &lt;/div&gt;
    &lt;div id="block2"&gt;
        &lt;h2&gt;Lorem Ipsum section 2&lt;/h2&gt;
        &lt;p&gt;
        Nam tempus justo eu massa ultrices eget imperdiet ligula placerat.
        Suspendisse [... ...].
        &lt;/p&gt;
    &lt;/div&gt;
    &lt;div id="block3"&gt;
        &lt;h2&gt;Lorem Ipsum section 3&lt;/h2&gt;
        &lt;ul&gt;
            &lt;li&gt;Curabitur ultrices tristique purus, sed pellentesque
               magna scelerisque ut.&lt;/li&gt;
            &lt;li&gt;[... ...] &lt;/li&gt;
        &lt;/ul&gt;
    &lt;/div&gt;
&lt;/div&gt;</pre><p>You start by laying out the blocks of content under each other so that the content fits smartphones.</p><pre>@media only screen and (max-width : 480px) {
    #mygrid {
        display: -ms-grid;
        margin: 3px;
        -ms-grid-columns: 100%; /*one column taking full width */
        -ms-grid-rows: 70px auto auto auto; /*4 rows */
    }
    #myheader {
       -ms-grid-row: 1;
       -ms-grid-column: 1;
    }
    #block1 {
        -ms-grid-row: 2; /*place into row 2 / column 1*/
        -ms-grid-column: 1;
    }
    #block2 {
        -ms-grid-row: 3;
        -ms-grid-column: 1;
    }
    #block3 {
        -ms-grid-row: 4;
        -ms-grid-column: 1;
    }
}</pre><p>&nbsp;</p><p>You can add background colors as shown in <strong>Figure 5</strong> to make it clearer that you’re working with grid items.</p><p><img
class="alignnone size-full wp-image-50791" title="figure5" src="http://www.sitepoint.com/wp-content/uploads/2012/01/figure51.png" alt="background colors" width="276" height="449" /></p><p><strong>Figure 5 Blocks of Content with Background Colors</strong></p><p>In the second example, a media query applies styles defined for screen sizes greater than 481 pixels—anything wider than a typical smartphone. You can use the Grid to define two columns and move the blocks into desired positions, as below. The results are shown in <strong>Figure 6</strong>.</p><pre>@media only screen and (min-width : 481px) {
/*make two columns and move block 3 next to 1 — just because we can*/
    #mygrid {
        display: -ms-grid;
        -ms-grid-columns: 10px 1fr 10px 1fr 10px; /*10px columns to spacing in between*/
        -ms-grid-rows: 100px 1fr 1fr; /*100px row and two rows each taking 1 fraction of available space*/
        margin: 5px;
    }
    #myheader {
        -ms-grid-row: 1;
        -ms-grid-column: 1;
        -ms-grid-column-span: 5;
        background-color: #EEB215;
    }
    #block1 {
        -ms-grid-row: 2;
        -ms-grid-column: 2;
        background-color: #B2B0B0;
    }
    #block2 {
        -ms-grid-row: 3;
        -ms-grid-column: 2;
        background-color: #726E6E;
    }
    #block3 {
        -ms-grid-row: 2; /*block 3 can go into row 2*/
        -ms-grid-column: 4;
         background-color: #515050;
    }
}</pre><p><img
class="alignnone size-full wp-image-50792" title="figure6" src="http://www.sitepoint.com/wp-content/uploads/2012/01/figure61.png" alt="two adjacent columns" width="550" height="434" /><br
/> <strong>Figure 6 A New Layout with Two Adjacent Columns</strong></p><p>The third grid sample displays on screen widths greater than 1220 pixels. You define a grid with a wide header that spans multiple columns and then define three columns, each occupying one fraction of the available space, with a few 10-pixel columns in between. The results are shown in <strong>Figure 7</strong>.</p><pre>@media only screen and (min-width: 1220px) {
    #mygrid {
        display: -ms-grid;
        -ms-grid-columns: 1fr 10px 1fr 10px 1fr;
        -ms-grid-rows: 100px 1fr;
        margin: 5px;
    }
    #myheader {
        -ms-grid-row: 1;
        -ms-grid-column: 1;
        -ms-grid-column-span: 5;
        background-color: #EEB215;
    }
    #block1 {
        -ms-grid-row: 2;
        -ms-grid-column: 1;
        background-color: #B2B0B0;
    }
    #block2 {
        -ms-grid-row: 2;
        -ms-grid-column: 3;
        background-color: #726E6E;
    }
    #block3 {
        -ms-grid-row: 2;
        -ms-grid-column: 5;
        background-color: #515050;
    }
}</pre><p>&nbsp;<br
/> <img
class="alignnone size-full wp-image-50793" title="figure7" src="http://www.sitepoint.com/wp-content/uploads/2012/01/figure71.png" alt="three columns" width="551" height="187" /><br
/> <strong>Figure 7 Three Side-by-Side Columns with a Spanning Header</strong></p><p>The Grid specification is a welcome addition for implementing responsive web designs.</p><p>Two other new CSS specifications are also worth mentioning: the <a
href="http://www.w3.org/TR/2009/WD-css3-flexbox-20090723/">Flexible Box Layout Module</a> (Flexbox) and The <a
href="http://www.w3.org/TR/css3-multicol/">Multi-column Layout Module</a>. Both show a great deal of promise for designing responsive Websites.</p><p>Flexbox, currently a working draft at the W3C, adds support for four new layout modes: block, inline, table, and positioned. It enables you to lay out complex pages with relative position and constant size, even when screen sizes change.</p><p>The multi-column layout module is currently a candidate recommendation at the W3C. This solution is for content that you need to lay out in columns and that flow from one column into the next. You can view an interactive example of multi-column layout in this <a
href="http://ie.microsoft.com/testdrive/Graphics/hands-on-css3/hands-on_multi-column.htm">lab</a>.</p><h3>Flexible Images and Media</h3><p>The final aspect of responsive web design is flexible images and media. Basically, this feature allows you to adapt your images or other media to load differently depending on the device, either by scaling or by using the CSS overflow property.</p><p>Scaling in CSS is pretty simple to implement for both images and video. You can set the media element’s max-width to 100 percent, and the browser will make the image shrink and expand depending on its container. You should supply the image in the best quality and size possible and then let CSS adapt the image to the right size.</p><pre>img, object {
    max-width: 100%;
}</pre><p>&nbsp;</p><p>An alternative to scaling images is cropping them with CSS. For example, applying overflow:hidden allows you to crop images dynamically so that they fit into their containers as the containers resize to fit a new screen environment.</p><p>Having several options to scale and crop images in CSS might not be enough. Do you really need to take up all of a visitor’s mobile bandwidth because you don’t have a smaller version of an image? To better serve users, flexible images might mean using an alternative image—or even no image at all. Folks in the web design community are coming up with <a
href="http://filamentgroup.com/lab/responsive_images_experimenting_with_context_aware_image_sizing/">solutions</a> based on JavaScript and cookies, and you can expect more of this as responsive web design evolves and becomes the basis for many quality Websites.</p><h3>Legacy Browsers</h3><p>What about older browsers that don’t support media queries? What about Internet Explorer before version 8, which has issues with scaling images? Solutions in the form of polyfills can help. Here are some useful examples.</p><ul><li>css3-mediaqueries.js by Wouter van der Graaf: <a
href="http://msdn.microsoft.com/en-us/magazine/code.google.com/p/css3-mediaqueries-js/">code.google.com/p/css3-mediaqueries-js/</a></li><li>Response.js: <a
href="http://msdn.microsoft.com/en-us/magazine/github.com/scottjehl/Respond">github.com/scottjehl/Respond</a></li><li>Fluid images: <a
href="http://msdn.microsoft.com/en-us/magazine/unstoppablerobotninja.com/entry/fluid-images/">unstoppablerobotninja.com/entry/fluid-images/</a></li></ul><h3>In Closing</h3><p>Jumping on the responsive web design wagon isn’t something to take lightly. Take into account what you need to achieve, and consider whether catering to a specific version of a desktop or mobile device makes the most sense.</p><p>Responsive web design is in its early stages. Web designers will continue to offer different opinions and recommend directions related to whether to build for mobile first, how to fit these decisions into the design process, whether to slice up the comps into all the different screen sizes, and so forth. And as more and more screen sizes and form factors arrive, the conversation will continue.</p><p>HTML and CSS standards are evolving to help web designers deal with these issues. It’s clear that some form of responsive web design will be used to meet the challenges, and it’s equally clear that standards will continue to evolve as better ways of handling the changing world of devices and browsers are discovered.</p><p>Here are some additional resources:</p><ul><li><a
href="http://www.alistapart.com/articles/responsive-web-design/">Responsive Web Design</a></li><li><a
href="http://www.smashingmagazine.com/2011/07/22/responsive-web-design-techniques-tools-and-design-strategies/">Responsive Web Design Techniques, Tools and Design Strategies</a></li><li><a
href="http://stuffandnonsense.co.uk/blog/about/hardboiled_css3_media_queries">Hardboiled CSS3 Media Queries</a></li><li><a
href="http://goldengridsystem.com/">Golden Grid System</a></li><li><a
title="Permanent Link to A Brief Look at Grid-Based Layouts in Web Design" href="http://sixrevisions.com/web_design/a-brief-look-at-grid-based-layouts-in-web-design/">A Brief Look at Grid-Based Layouts in Web Design</a></li></ul> <span
id="pty_trigger"></span><div
style='padding:20px 0px 50px 0px;'><div
style='float:left;padding-left:40px;'><div
id='div-gpt-ad-1335489406190-0' style='width:300px; height:100px;'> <script type='text/javascript'>googletag.cmd.push(function() { googletag.display('div-gpt-ad-1335489406190-0'); });</script> </div></div><div
style='float:right;padding-right:40px;'><div
id='div-gpt-ad-1335489406190-1' style='width:300px; height:100px;'> <script type='text/javascript'>googletag.cmd.push(function() { googletag.display('div-gpt-ad-1335489406190-1'); });</script> </div></div><div
style='clear:both'></div></div><div
style='clear:both'></div>]]></content:encoded> <wfw:commentRss>http://www.sitepoint.com/responsive-web-design/feed/</wfw:commentRss> <slash:comments>13</slash:comments> </item><div><div
class="post_box two_ads" style="float:left;padding-left:2px;"><div
id='div-gpt-ad-1328645237920-0' style='width:728px; height:90px;'> <script type='text/javascript'>googletag.cmd.push(function() { googletag.display('div-gpt-ad-1328645237920-0'); });</script> </div></div></div><div
class="clear">&nbsp;</div> <item><title>Webfont Icons: an Alternative to Images</title><link>http://www.sitepoint.com/webfont-icons/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=webfont-icons</link> <comments>http://www.sitepoint.com/webfont-icons/#comments</comments> <pubDate>Tue, 17 Jan 2012 16:49:01 +0000</pubDate> <dc:creator>Craig Buckler</dc:creator> <category><![CDATA[CSS Tutorials]]></category> <category><![CDATA[Gems]]></category> <category><![CDATA[HTML & CSS]]></category> <category><![CDATA[HTML5]]></category> <category><![CDATA[JavaScript & CSS]]></category> <category><![CDATA[Web Design Tutorials & Articles]]></category> <category><![CDATA[CSS3]]></category> <category><![CDATA[graphics]]></category> <category><![CDATA[HTML5 Dev Center]]></category> <category><![CDATA[icons]]></category> <category><![CDATA[webfonts]]></category> <guid
isPermaLink="false">http://www.sitepoint.com/?p=49595</guid> <description><![CDATA[<img
width="50" height="50" src="http://www.sitepoint.com/wp-content/uploads/1/files/2011/12/621-icon-fonts-50x50.png" class="attachment-thumbnail wp-post-image" alt="621-icon-fonts" title="621-icon-fonts" />Craig's latest tutorial describes how to use webfont icons in your pages and why they have several advantages over images.]]></description> <content:encoded><![CDATA[<img
width="50" height="50" src="http://www.sitepoint.com/wp-content/uploads/1/files/2011/12/621-icon-fonts-50x50.png" class="attachment-thumbnail wp-post-image" alt="621-icon-fonts" title="621-icon-fonts" /><p></p><p>Let&#8217;s be honest, creating dozens of tiny icons in a graphics package isn&#8217;t fun. Even when you&#8217;ve gathered a decent set, you end up managing dozens of tiny files or creating image sprites and slicing them in CSS.</p><p>Fortunately, HTML5 provides us with another option: webfonts. A font set can contain graphical icons and character sets. Wingdings is the most well known but free fonts such as <a
href="http://somerandomdude.com/work/iconic/">Iconic</a> can be more useful and provide example HTML and CSS code.</p><p><a
href="http://blogs.sitepointstatic.com/examples/tech/icon-fonts/index.html"><strong>View the webfont icon demonstration page&hellip;</strong></a></p><p>Once you&#8217;ve found or created a suitable font, you&#8217;ll need to convert it to a number of formats to ensure good cross-browser compatibility. The <a
href="http://www.fontsquirrel.com/fontface/generator">@Font-Face Generator at fontsquirrel.com</a> does the hard work for you and supplies a ZIP file containing all the fonts and CSS code. The font is then imported at the top of your CSS file, e.g.</p><pre><code>
@font-face {
	font-family: &quot;IconicStroke&quot;;
	src: url(&quot;iconic_stroke.eot&quot;);
	src: url(&quot;iconic_stroke.woff&quot;) format(&quot;woff&quot;),
	url(&quot;iconic_stroke.ttf&quot;) format(&quot;truetype&quot;),
	url(&quot;iconic_stroke.otf&quot;) format(&quot;opentype&quot;),
	url(&quot;iconic_stroke.svg#iconic&quot;) format(&quot;svg&quot;);
}
</code></pre><p>It&#8217;s possible to add icon characters to your HTML file, such as using an &#8216;r&#8217; for Iconic&#8217;s RSS icon. However, that may confuse people using screen readers so CSS pseudo elements are a safer option, e.g.</p><p>Your HTML:</p><pre><code>
&lt;a href=&quot;rss.xml&quot; class=&quot;rss&quot;&gt;RSS Feed&lt;/a&gt;
</code></pre><p>Your CSS:</p><pre><code>
.rss:before
{
	font-family: &quot;IconicStroke&quot;;
	content: &quot;r&quot;;
}
</code></pre><h2>The Advantages of Webfont Icons</h2><p>Webfonts can be an ideal alternative to graphics:</p><ul><li>fonts can be scaled to any size, use any color and have CSS effects applied</li><li>webfonts offer good cross-browser compatibility and even work in IE6</li><li>a single font file can be more efficient than multiple images</li></ul><h2>The Disadvantages of Webfont Icons</h2><p>Webfonts may not always be appropriate:</p><ul><li>font characters are single-color (although CSS3 effects can help)</li><li>generating fonts is not as easy as PNGs or SVGs</li><li>image file sizes will be smaller if you only require a few icons.</li></ul><p>Overall, there&#8217;s little to dislike about webfont icons and they could cut development time. Have you used them in any of your projects?</p><p><a
href="http://blogs.sitepointstatic.com/examples/tech/icon-fonts/index.html"><strong>View the webfont icon demonstration page&hellip;</strong></a></p> <span
id="pty_trigger"></span><div
style='padding:20px 0px 50px 0px;'><div
style='float:left;padding-left:40px;'><div
id='div-gpt-ad-1335489406190-0' style='width:300px; height:100px;'> <script type='text/javascript'>googletag.cmd.push(function() { googletag.display('div-gpt-ad-1335489406190-0'); });</script> </div></div><div
style='float:right;padding-right:40px;'><div
id='div-gpt-ad-1335489406190-1' style='width:300px; height:100px;'> <script type='text/javascript'>googletag.cmd.push(function() { googletag.display('div-gpt-ad-1335489406190-1'); });</script> </div></div><div
style='clear:both'></div></div><div
style='clear:both'></div>]]></content:encoded> <wfw:commentRss>http://www.sitepoint.com/webfont-icons/feed/</wfw:commentRss> <slash:comments>17</slash:comments> </item> <item><title>DesignFestival: 18 Great Stripe Generators and Textures on the Web</title><link>http://feedproxy.google.com/~r/DesignFestival/~3/Xw7FblTfp-U/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=designfestival-18-great-stripe-generators-and-textures-on-the-web-3</link> <comments>http://feedproxy.google.com/~r/DesignFestival/~3/Xw7FblTfp-U/#comments</comments> <pubDate>Fri, 23 Dec 2011 10:00:37 +0000</pubDate> <dc:creator>Tara Hornor</dc:creator> <category><![CDATA[Design]]></category> <category><![CDATA[Inspiration]]></category> <category><![CDATA[Resources]]></category> <category><![CDATA[Web Design Tutorials & Articles]]></category> <category><![CDATA[Web Tech]]></category> <category><![CDATA[resources]]></category> <guid
isPermaLink="false">http://www.sitepoint.com/?p=49638</guid> <description><![CDATA[ Stripes are a great way to create some energy in your background or just give your designs some texture. This collection gives you two sets of tools: generators and images. The stripe generators allow you to create and download repeatable stripe patterns right out of the browser. These are great for simple stripe patterns and quick design if you don’t have the software to create your own stripe patterns, making them perfect for use in any design project. ]]></description> <content:encoded><![CDATA[<p></p><p> Stripes are a great way to create some energy in your background or just give your designs some texture. This collection gives you two sets of tools: generators and images. The stripe generators allow you to create and download repeatable stripe patterns right out of the browser. These are great for simple stripe patterns and quick design if you don’t have the software to create your own stripe patterns, making them perfect for use in any design project.</p><p>Continue reading here:<br
/> <a
target="_blank" href="http://feedproxy.google.com/~r/DesignFestival/~3/Xw7FblTfp-U/" title="DesignFestival: 18 Great Stripe Generators and Textures on the Web">DesignFestival: 18 Great Stripe Generators and Textures on the Web</a></p> <span
id="pty_trigger"></span><div
style='padding:20px 0px 50px 0px;'><div
style='float:left;padding-left:40px;'><div
id='div-gpt-ad-1335489406190-0' style='width:300px; height:100px;'> <script type='text/javascript'>googletag.cmd.push(function() { googletag.display('div-gpt-ad-1335489406190-0'); });</script> </div></div><div
style='float:right;padding-right:40px;'><div
id='div-gpt-ad-1335489406190-1' style='width:300px; height:100px;'> <script type='text/javascript'>googletag.cmd.push(function() { googletag.display('div-gpt-ad-1335489406190-1'); });</script> </div></div><div
style='clear:both'></div></div><div
style='clear:both'></div>]]></content:encoded> <wfw:commentRss>http://feedproxy.google.com/~r/DesignFestival/~3/Xw7FblTfp-U/feed/</wfw:commentRss> <slash:comments>0</slash:comments> </item> <item><title>DesignFestival: WordPress Plugins for Graphic Designers and Photographers</title><link>http://feedproxy.google.com/~r/DesignFestival/~3/RlErxMmwNoQ/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=designfestival-wordpress-plugins-for-graphic-designers-and-photographers-2</link> <comments>http://feedproxy.google.com/~r/DesignFestival/~3/RlErxMmwNoQ/#comments</comments> <pubDate>Mon, 19 Dec 2011 06:00:45 +0000</pubDate> <dc:creator>Tara Hornor</dc:creator> <category><![CDATA[Design]]></category> <category><![CDATA[graphic design]]></category> <category><![CDATA[Layout]]></category> <category><![CDATA[photoblogging]]></category> <category><![CDATA[plugins]]></category> <category><![CDATA[Resources]]></category> <category><![CDATA[Web Design Tutorials & Articles]]></category> <category><![CDATA[Web Tech]]></category> <category><![CDATA[wordpress]]></category> <guid
isPermaLink="false">http://www.sitepoint.com/?p=49497</guid> <description><![CDATA[ If you are a freelance graphic designer or photographer, then you need a way to show off your work. WordPress is hands down one of the best ways to manage your own website. You can easily update content in minutes and the high degree of customization means you can make your WordPress site look exactly the way you want it. We broke down the three main plugin categories into gallery plugins, share/bookmark plugins, and social media plugins]]></description> <content:encoded><![CDATA[<p></p><p> If you are a freelance graphic designer or photographer, then you need a way to show off your work. WordPress is hands down one of the best ways to manage your own website. You can easily update content in minutes and the high degree of customization means you can make your WordPress site look exactly the way you want it. We broke down the three main plugin categories into gallery plugins, share/bookmark plugins, and social media plugins</p><p>Read More:<br
/> <a
target="_blank" href="http://feedproxy.google.com/~r/DesignFestival/~3/RlErxMmwNoQ/" title="DesignFestival: WordPress Plugins for Graphic Designers and Photographers">DesignFestival: WordPress Plugins for Graphic Designers and Photographers</a></p> <span
id="pty_trigger"></span><div
style='padding:20px 0px 50px 0px;'><div
style='float:left;padding-left:40px;'><div
id='div-gpt-ad-1335489406190-0' style='width:300px; height:100px;'> <script type='text/javascript'>googletag.cmd.push(function() { googletag.display('div-gpt-ad-1335489406190-0'); });</script> </div></div><div
style='float:right;padding-right:40px;'><div
id='div-gpt-ad-1335489406190-1' style='width:300px; height:100px;'> <script type='text/javascript'>googletag.cmd.push(function() { googletag.display('div-gpt-ad-1335489406190-1'); });</script> </div></div><div
style='clear:both'></div></div><div
style='clear:both'></div>]]></content:encoded> <wfw:commentRss>http://feedproxy.google.com/~r/DesignFestival/~3/RlErxMmwNoQ/feed/</wfw:commentRss> <slash:comments>0</slash:comments> </item> <item><title>DesignFestival: How to Make a Unique Header for WordPress</title><link>http://feedproxy.google.com/~r/DesignFestival/~3/PCn8yINlE-c/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=designfestival-how-to-make-a-unique-header-for-wordpress</link> <comments>http://feedproxy.google.com/~r/DesignFestival/~3/PCn8yINlE-c/#comments</comments> <pubDate>Fri, 16 Dec 2011 06:59:59 +0000</pubDate> <dc:creator>Tara Hornor</dc:creator> <category><![CDATA[Design]]></category> <category><![CDATA[Tutorial]]></category> <category><![CDATA[Web Design Tutorials & Articles]]></category> <category><![CDATA[Web Tech]]></category> <guid
isPermaLink="false">http://www.sitepoint.com/?p=49470</guid> <description><![CDATA[ If you use WordPress to manage your website, you likely started with a theme that needs to be modified. It’s easy enough to use the built-in tools in WordPress to modify CSS and sidebars, but arguably the most important identifier for your site is the header. So how do you find this, create your own, and get it in place? ]]></description> <content:encoded><![CDATA[<p></p><p> If you use WordPress to manage your website, you likely started with a theme that needs to be modified. It’s easy enough to use the built-in tools in WordPress to modify CSS and sidebars, but arguably the most important identifier for your site is the header. So how do you find this, create your own, and get it in place?</p><p>Read more here:<br
/> <a
target="_blank" href="http://feedproxy.google.com/~r/DesignFestival/~3/PCn8yINlE-c/" title="DesignFestival: How to Make a Unique Header for WordPress">DesignFestival: How to Make a Unique Header for WordPress</a></p> <span
id="pty_trigger"></span><div
style='padding:20px 0px 50px 0px;'><div
style='float:left;padding-left:40px;'><div
id='div-gpt-ad-1335489406190-0' style='width:300px; height:100px;'> <script type='text/javascript'>googletag.cmd.push(function() { googletag.display('div-gpt-ad-1335489406190-0'); });</script> </div></div><div
style='float:right;padding-right:40px;'><div
id='div-gpt-ad-1335489406190-1' style='width:300px; height:100px;'> <script type='text/javascript'>googletag.cmd.push(function() { googletag.display('div-gpt-ad-1335489406190-1'); });</script> </div></div><div
style='clear:both'></div></div><div
style='clear:both'></div>]]></content:encoded> <wfw:commentRss>http://feedproxy.google.com/~r/DesignFestival/~3/PCn8yINlE-c/feed/</wfw:commentRss> <slash:comments>0</slash:comments> </item><div><div
class="post_box two_ads" style="float:left;padding-left:2px;"><div
id='div-gpt-ad-1328645237920-1' style='width:728px; height:90px;'> <script type='text/javascript'>googletag.cmd.push(function() { googletag.display('div-gpt-ad-1328645237920-1'); });</script> </div></div></div><div
class="clear">&nbsp;</div> <item><title>DesignFestival: Resource: 5 Free Icon Sets for Your Web Projects</title><link>http://feedproxy.google.com/~r/DesignFestival/~3/QcogKHRIs-I/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=designfestival-resource-5-free-icon-sets-for-your-web-projects</link> <comments>http://feedproxy.google.com/~r/DesignFestival/~3/QcogKHRIs-I/#comments</comments> <pubDate>Wed, 14 Dec 2011 13:59:27 +0000</pubDate> <dc:creator>Joel Falconer</dc:creator> <category><![CDATA[Design]]></category> <category><![CDATA[Inspiration]]></category> <category><![CDATA[Web Design Tutorials & Articles]]></category> <category><![CDATA[Web Tech]]></category> <guid
isPermaLink="false">http://www.sitepoint.com/?p=49352</guid> <description><![CDATA[ Need icons in a hurry for your next web project? Here are five icon sets that can be had for free, perfect for web projects of all kinds and including a social services icon set. Token Glyphish WebAppers Icon Set Sapphire Icon Set Polaroid Social Icon Set ]]></description> <content:encoded><![CDATA[<p></p><p> Need icons in a hurry for your next web project? Here are five icon sets that can be had for free, perfect for web projects of all kinds and including a social services icon set. Token Glyphish WebAppers Icon Set Sapphire Icon Set Polaroid Social Icon Set</p><p>View article:<br
/> <a
target="_blank" href="http://feedproxy.google.com/~r/DesignFestival/~3/QcogKHRIs-I/" title="DesignFestival: Resource: 5 Free Icon Sets for Your Web Projects">DesignFestival: Resource: 5 Free Icon Sets for Your Web Projects</a></p> <span
id="pty_trigger"></span><div
style='padding:20px 0px 50px 0px;'><div
style='float:left;padding-left:40px;'><div
id='div-gpt-ad-1335489406190-0' style='width:300px; height:100px;'> <script type='text/javascript'>googletag.cmd.push(function() { googletag.display('div-gpt-ad-1335489406190-0'); });</script> </div></div><div
style='float:right;padding-right:40px;'><div
id='div-gpt-ad-1335489406190-1' style='width:300px; height:100px;'> <script type='text/javascript'>googletag.cmd.push(function() { googletag.display('div-gpt-ad-1335489406190-1'); });</script> </div></div><div
style='clear:both'></div></div><div
style='clear:both'></div>]]></content:encoded> <wfw:commentRss>http://feedproxy.google.com/~r/DesignFestival/~3/QcogKHRIs-I/feed/</wfw:commentRss> <slash:comments>0</slash:comments> </item> <item><title>DesignFestival: Designing for the Web: Templates and Grid Systems</title><link>http://feedproxy.google.com/~r/DesignFestival/~3/c0I-dKEg87M/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=designfestival-designing-for-the-web-templates-and-grid-systems</link> <comments>http://feedproxy.google.com/~r/DesignFestival/~3/c0I-dKEg87M/#comments</comments> <pubDate>Tue, 13 Dec 2011 13:00:44 +0000</pubDate> <dc:creator>Felix Mak</dc:creator> <category><![CDATA[Design]]></category> <category><![CDATA[Tutorial]]></category> <category><![CDATA[Web Design Tutorials & Articles]]></category> <category><![CDATA[Web Tech]]></category> <guid
isPermaLink="false">http://www.sitepoint.com/?p=49269</guid> <description><![CDATA[ Continuing on from the previous article in this series, Designing for the Web: Resolution and Size , we cover some helpful and important factors while creating a template for designing a website. In this article, we will cover some important issues and introduce some tools for you to use when designing a website. Just keep in mind that as in the print sphere, the web sphere contains a multitude of choices for design as well as development. This is only one method and we are attempting to come from more of a designer angle rather than a developer one. ]]></description> <content:encoded><![CDATA[<p></p><p>Continuing on from the previous article in this series, Designing for the Web: Resolution and Size , we cover some helpful and important factors while creating a template for designing a website. In this article, we will cover some important issues and introduce some tools for you to use when designing a website. Just keep in mind that as in the print sphere, the web sphere contains a multitude of choices for design as well as development. This is only one method and we are attempting to come from more of a designer angle rather than a developer one.</p><p>Read this article:<br
/> <a
title="DesignFestival: Designing for the Web: Templates and Grid Systems" href="http://feedproxy.google.com/~r/DesignFestival/~3/c0I-dKEg87M/" target="_blank">DesignFestival: Designing for the Web: Templates and Grid Systems</a></p> <span
id="pty_trigger"></span><div
style='padding:20px 0px 50px 0px;'><div
style='float:left;padding-left:40px;'><div
id='div-gpt-ad-1335489406190-0' style='width:300px; height:100px;'> <script type='text/javascript'>googletag.cmd.push(function() { googletag.display('div-gpt-ad-1335489406190-0'); });</script> </div></div><div
style='float:right;padding-right:40px;'><div
id='div-gpt-ad-1335489406190-1' style='width:300px; height:100px;'> <script type='text/javascript'>googletag.cmd.push(function() { googletag.display('div-gpt-ad-1335489406190-1'); });</script> </div></div><div
style='clear:both'></div></div><div
style='clear:both'></div>]]></content:encoded> <wfw:commentRss>http://feedproxy.google.com/~r/DesignFestival/~3/c0I-dKEg87M/feed/</wfw:commentRss> <slash:comments>0</slash:comments> </item> <item><title>DesignFestival: 10 Top CSS Design Resources</title><link>http://feedproxy.google.com/~r/DesignFestival/~3/OngLWRoJUX4/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=designfestival-10-top-css-design-resources</link> <comments>http://feedproxy.google.com/~r/DesignFestival/~3/OngLWRoJUX4/#comments</comments> <pubDate>Fri, 09 Dec 2011 21:39:00 +0000</pubDate> <dc:creator>Tara Hornor</dc:creator> <category><![CDATA[Design]]></category> <category><![CDATA[Inspiration]]></category> <category><![CDATA[Web Design Tutorials & Articles]]></category> <category><![CDATA[Web Tech]]></category> <category><![CDATA[inspiration]]></category> <guid
isPermaLink="false">http://www.sitepoint.com/?p=49124</guid> <description><![CDATA[ Cascading Style Sheets (CSS) gives you unprecedented control of the layout and design of any web document. As browser support only improves, we will see CSS becoming the primary styling system. This is partly because CSS is so light when compared to most JavaScript, AJAX, or image-based design systems. And as the support for more transitional features like sliders and gradients find their way into CSS, there may not be a need for anything but CSS in the near future. ]]></description> <content:encoded><![CDATA[<p></p><p>Cascading Style Sheets (CSS) gives you unprecedented control of the layout and design of any web document. As browser support only improves, we will see CSS becoming the primary styling system. This is partly because CSS is so light when compared to most JavaScript, AJAX, or image-based design systems. And as the support for more transitional features like sliders and gradients find their way into CSS, there may not be a need for anything but CSS in the near future.</p><p>Continued here:<br
/> <a
title="DesignFestival: 10 Top CSS Design Resources" href="http://feedproxy.google.com/~r/DesignFestival/~3/OngLWRoJUX4/" target="_blank">DesignFestival: 10 Top CSS Design Resources</a></p> <span
id="pty_trigger"></span><div
style='padding:20px 0px 50px 0px;'><div
style='float:left;padding-left:40px;'><div
id='div-gpt-ad-1335489406190-0' style='width:300px; height:100px;'> <script type='text/javascript'>googletag.cmd.push(function() { googletag.display('div-gpt-ad-1335489406190-0'); });</script> </div></div><div
style='float:right;padding-right:40px;'><div
id='div-gpt-ad-1335489406190-1' style='width:300px; height:100px;'> <script type='text/javascript'>googletag.cmd.push(function() { googletag.display('div-gpt-ad-1335489406190-1'); });</script> </div></div><div
style='clear:both'></div></div><div
style='clear:both'></div>]]></content:encoded> <wfw:commentRss>http://feedproxy.google.com/~r/DesignFestival/~3/OngLWRoJUX4/feed/</wfw:commentRss> <slash:comments>0</slash:comments> </item> <item><title>DesignFestival: I Still Love Flash. Here’s Why.</title><link>http://feedproxy.google.com/~r/DesignFestival/~3/1Lt2cHs_FjM/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=designfestival-i-still-love-flash-here%25e2%2580%2599s-why</link> <comments>http://feedproxy.google.com/~r/DesignFestival/~3/1Lt2cHs_FjM/#comments</comments> <pubDate>Mon, 05 Dec 2011 17:25:24 +0000</pubDate> <dc:creator>Felix Mak</dc:creator> <category><![CDATA[Design]]></category> <category><![CDATA[Flash]]></category> <category><![CDATA[Opinion]]></category> <category><![CDATA[Web Design Tutorials & Articles]]></category> <category><![CDATA[Web Tech]]></category> <guid
isPermaLink="false">http://www.sitepoint.com/?p=48907</guid> <description><![CDATA[ In recent times, people from all quarters have been getting their boots into Flash. The late Steve Jobs felt that (other than the competing business model issues) supporting Flash was not in the interest of Apple’s customers and that iOS products would not support it. A week or two ago, I came across the Occupy Flash movement. ]]></description> <content:encoded><![CDATA[<p></p><p> In recent times, people from all quarters have been getting their boots into Flash. The late Steve Jobs felt that (other than the competing business model issues) supporting Flash was not in the interest of Apple’s customers and that iOS products would not support it. A week or two ago, I came across the Occupy Flash movement.</p><p>More:<br
/> <a
target="_blank" href="http://feedproxy.google.com/~r/DesignFestival/~3/1Lt2cHs_FjM/" title="DesignFestival: I Still Love Flash. Here’s Why.">DesignFestival: I Still Love Flash. Here’s Why.</a></p> <span
id="pty_trigger"></span><div
style='padding:20px 0px 50px 0px;'><div
style='float:left;padding-left:40px;'><div
id='div-gpt-ad-1335489406190-0' style='width:300px; height:100px;'> <script type='text/javascript'>googletag.cmd.push(function() { googletag.display('div-gpt-ad-1335489406190-0'); });</script> </div></div><div
style='float:right;padding-right:40px;'><div
id='div-gpt-ad-1335489406190-1' style='width:300px; height:100px;'> <script type='text/javascript'>googletag.cmd.push(function() { googletag.display('div-gpt-ad-1335489406190-1'); });</script> </div></div><div
style='clear:both'></div></div><div
style='clear:both'></div>]]></content:encoded> <wfw:commentRss>http://feedproxy.google.com/~r/DesignFestival/~3/1Lt2cHs_FjM/feed/</wfw:commentRss> <slash:comments>0</slash:comments> </item> <item><title>DesignFestival: Designing for the Dark Side</title><link>http://feedproxy.google.com/~r/DesignFestival/~3/-JSyV7wcsSc/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=designfestival-designing-for-the-dark-side</link> <comments>http://feedproxy.google.com/~r/DesignFestival/~3/-JSyV7wcsSc/#comments</comments> <pubDate>Thu, 01 Dec 2011 23:18:09 +0000</pubDate> <dc:creator>Tara Hornor</dc:creator> <category><![CDATA[Design]]></category> <category><![CDATA[Inspiration]]></category> <category><![CDATA[User Experience]]></category> <category><![CDATA[Web Design Tutorials & Articles]]></category> <category><![CDATA[Web Tech]]></category> <category><![CDATA[user experience]]></category> <guid
isPermaLink="false">http://www.sitepoint.com/?p=48730</guid> <description><![CDATA[ Whatever your motivation — the client told you to do it, you’re tired of white or light backgrounds, or your deep-seated anger over your own father cutting your hand off (just don’t be a hater!) — designing dark websites can be a serious challenge. Careful use of the Creative Force is in order as dark designs have special considerations. A few design tips will keep you from fully giving in to the Dark Side, although this might just be your destiny… For those of you looking for some inspiration, check out this collection of 20 dark websites with some excellent examples. If you need some design advice, keep reading]]></description> <content:encoded><![CDATA[<p></p><p>Whatever your motivation — the client told you to do it, you’re tired of white or light backgrounds, or your deep-seated anger over your own father cutting your hand off (just don’t be a hater!) — designing dark websites can be a serious challenge. Careful use of the Creative Force is in order as dark designs have special considerations. A few design tips will keep you from fully giving in to the Dark Side, although this might just be your destiny… For those of you looking for some inspiration, check out this collection of 20 dark websites with some excellent examples. If you need some design advice, keep reading</p><p>Read more here:<br
/> <a
title="DesignFestival: Designing for the Dark Side" href="http://feedproxy.google.com/~r/DesignFestival/~3/-JSyV7wcsSc/" target="_blank">DesignFestival: Designing for the Dark Side</a></p> <span
id="pty_trigger"></span><div
style='padding:20px 0px 50px 0px;'><div
style='float:left;padding-left:40px;'><div
id='div-gpt-ad-1335489406190-0' style='width:300px; height:100px;'> <script type='text/javascript'>googletag.cmd.push(function() { googletag.display('div-gpt-ad-1335489406190-0'); });</script> </div></div><div
style='float:right;padding-right:40px;'><div
id='div-gpt-ad-1335489406190-1' style='width:300px; height:100px;'> <script type='text/javascript'>googletag.cmd.push(function() { googletag.display('div-gpt-ad-1335489406190-1'); });</script> </div></div><div
style='clear:both'></div></div><div
style='clear:both'></div>]]></content:encoded> <wfw:commentRss>http://feedproxy.google.com/~r/DesignFestival/~3/-JSyV7wcsSc/feed/</wfw:commentRss> <slash:comments>0</slash:comments> </item> <item><title>DesignFestival: Designing for the Web: Resolution and Size</title><link>http://feedproxy.google.com/~r/DesignFestival/~3/wOX6eGyTl5U/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=designfestival-designing-for-the-web-resolution-and-size</link> <comments>http://feedproxy.google.com/~r/DesignFestival/~3/wOX6eGyTl5U/#comments</comments> <pubDate>Mon, 28 Nov 2011 22:44:51 +0000</pubDate> <dc:creator>Felix Mak</dc:creator> <category><![CDATA[Web Design Tutorials & Articles]]></category> <category><![CDATA[Web Tech]]></category> <guid
isPermaLink="false">http://www.sitepoint.com/?p=48539</guid> <description><![CDATA[ As a graphic designer working in print, it is important to understand and work to a set of fixed standards. This ensures that what the designer produces will actually be usable as a print item and also printable! For example in print, designing a simple business card has its own factors to watch for — this is also dependant on who you use to print your jobs. Some common issues to watch for would be if the job is of a standard size (and if the printer offers its own set of guidelines and sizes), if you decide to print in laser (which affects price as well as color), or offset, if you are using solid or process, how much bleed should you leave and if they have affordable metallics — the list could go on and on! Even with so many varied print issues, we feel comfortable ensconsed in our guidelines and the familiar set of difficulties. ]]></description> <content:encoded><![CDATA[<p></p><p> As a graphic designer working in print, it is important to understand and work to a set of fixed standards. This ensures that what the designer produces will actually be usable as a print item and also printable! For example in print, designing a simple business card has its own factors to watch for — this is also dependant on who you use to print your jobs. Some common issues to watch for would be if the job is of a standard size (and if the printer offers its own set of guidelines and sizes), if you decide to print in laser (which affects price as well as color), or offset, if you are using solid or process, how much bleed should you leave and if they have affordable metallics — the list could go on and on! Even with so many varied print issues, we feel comfortable ensconsed in our guidelines and the familiar set of difficulties.</p><p>View article:<br
/> <a
target="_blank" href="http://feedproxy.google.com/~r/DesignFestival/~3/wOX6eGyTl5U/" title="DesignFestival: Designing for the Web: Resolution and Size">DesignFestival: Designing for the Web: Resolution and Size</a></p> <span
id="pty_trigger"></span><div
style='padding:20px 0px 50px 0px;'><div
style='float:left;padding-left:40px;'><div
id='div-gpt-ad-1335489406190-0' style='width:300px; height:100px;'> <script type='text/javascript'>googletag.cmd.push(function() { googletag.display('div-gpt-ad-1335489406190-0'); });</script> </div></div><div
style='float:right;padding-right:40px;'><div
id='div-gpt-ad-1335489406190-1' style='width:300px; height:100px;'> <script type='text/javascript'>googletag.cmd.push(function() { googletag.display('div-gpt-ad-1335489406190-1'); });</script> </div></div><div
style='clear:both'></div></div><div
style='clear:both'></div>]]></content:encoded> <wfw:commentRss>http://feedproxy.google.com/~r/DesignFestival/~3/wOX6eGyTl5U/feed/</wfw:commentRss> <slash:comments>0</slash:comments> </item> </channel> </rss>
<!-- Performance optimized by W3 Total Cache. Learn more: http://www.w3-edge.com/wordpress-plugins/

Page Caching using memcached
Database Caching 43/98 queries in 0.074 seconds using memcached
Object Caching 2296/2400 objects using memcached

Served from: www.sitepoint.com @ 2012-05-27 19:46:07 -->
