<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/rss2full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><rss xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:sy="http://purl.org/rss/1.0/modules/syndication/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:creativeCommons="http://backend.userland.com/creativeCommonsRssModule" xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" version="2.0">

<channel>
	<title>Saddam Azad - User Interface Designer &amp; Front-end Engineer.</title>
	
	<link>http://azadcreative.com</link>
	<description>Journal and Portfolio of Saddam Azad, User Interface Designer and Front-End Web Developer</description>
	<lastBuildDate>Fri, 27 Jan 2012 07:24:25 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/rss+xml" href="http://feeds.feedburner.com/azadcreative" /><feedburner:info uri="azadcreative" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><creativeCommons:license>http://creativecommons.org/licenses/by/3.0/</creativeCommons:license><image><link>http://creativecommons.org/licenses/by/3.0/</link><url>http://creativecommons.org/images/public/somerights20.gif</url><title>Some Rights Reserved</title></image><feedburner:emailServiceId>azadcreative</feedburner:emailServiceId><feedburner:feedburnerHostname>http://feedburner.google.com</feedburner:feedburnerHostname><item>
		<title>Bulletproof CSS3 Dropdown Navigation Menu</title>
		<link>http://feedproxy.google.com/~r/azadcreative/~3/yZy6BiEbXfA/</link>
		<comments>http://azadcreative.com/2012/01/bulletproof-css3-dropdown-navigation-menu/#comments</comments>
		<pubDate>Thu, 26 Jan 2012 10:30:47 +0000</pubDate>
		<dc:creator>Saddam Azad</dc:creator>
				<category><![CDATA[Coding]]></category>
		<category><![CDATA[Design]]></category>

		<guid isPermaLink="false">http://azadcreative.com/?p=785</guid>
		<description><![CDATA[One of the most critical aspects of web design is the navigation. The navigation, above all else, must be clear, usable and cross-browser compliant. But the tragedy is in the fact that most websites have awful navigation designs that make content difficult to navigate to.

In this tutorial, we are going to build a fabulous cross-browser dropdown navigation menu with the help of some advanced CSS3 properties.]]></description>
			<content:encoded><![CDATA[<p>One of the most critical aspects of web design is the navigation. The navigation, above all else, must be clear, usable and cross-browser compliant. But the tragedy is in the fact that most websites have awful navigation designs that make content difficult to navigate to.</p>
<p>In this tutorial, we are going to build a fabulous cross-browser dropdown navigation menu with the help of some advanced CSS3 properties. CSS has made leaps and bounds in recent years. With an ever-solidifying specification and widespread browser support, using CSS3 properties today is very much a feasible option.</p>
<p>The world has moved on quite a bit and these days supporting our beloved browser Internet Explorer 6 is no longer a business requirement for most of our clients. Therefore, we can start taking advantage of the new technologies and reap their benefits.</p>
<p>Although CSS3 support still varies from browser to browser as they rely on proprietary vendor-specific properties. We will have a deep look into these properties as this tutorial progresses.</p>
<h2>The demo</h2>
<p>Before we go into the nitty-gritty of front-end web development, let us have a look at what we are trying to accomplish. Without further ado, the fully functional demo is presented below:</p>
<div class="iframe-wrapper">
  <iframe src="/demo/css3-nav-menu/index.html" frameborder="0" style="height:570px;width:700px;">Please upgrade your browser</iframe>
</div>
<p>Such navigation menus are common around the web. But here, in this tutorial, we are going to build it with CSS3 techniques without using a single image. We will also provide a fallback for older non-supporting browsers &#8211; thus achieving maximum cross-browser compatibility.</p>
<h2>The markup</h2>
<p>We are going to start from the basic top-level navigation only. After we have successfully styled the top-level horizontal navigation, we will gradually move to the second and third levels. The top-level navigation is simply an unordered list wrapped around a HTML5 <span class="highlight">&lt;nav&gt;</span> tag.</p>
<pre>&lt;nav&gt;
 &lt;ul&gt;
   &lt;li&gt;&lt;a href="#"&gt;Home&lt;/a&gt;&lt;/li&gt;
   &lt;li&gt;&lt;a href="#"&gt;Breakfast&lt;/a&gt;&lt;/li&gt;
   &lt;li&gt;&lt;a href="#"&gt;Brunch&lt;/a&gt;&lt;/li&gt;
   &lt;li&gt;&lt;a href="#"&gt;Lunch&lt;/a&gt;&lt;/li&gt;
   &lt;li&gt;&lt;a href="#"&gt;Tea&lt;/a&gt;&lt;/li&gt;
   &lt;li&gt;&lt;a href="#"&gt;Supper&lt;/a&gt;&lt;/li&gt;
 &lt;/ul&gt;
&lt;/nav&gt;</pre>
<p>Internet Explorer versions 8 and earlier cannot process HTML5 elements, let alone style them. Therefore, you must include the <a href="http://www.modernizr.com/">Modernizr</a> script in your pages. Modernizr is also handy for the purpose of progressive enhancement.</p>
<h2>The basic CSS scaffolding</h2>
<p>The scaffolding includes <a title="Reset CSS" href="http://meyerweb.com/eric/tools/css/reset/" target="_blank">Eric Meyer&#8217;s CSS Reset</a> and some basic styling that manipulates the markup to make a basic navigation. Let&#8217;s have a closer look:</p>
<p>Firstly, we are going to design a horizontal navigation menu as seen at the top of this website. In the following CSS code, we are going to define the structures of the document and the navigation menu.</p>
<pre>body {
 font-family: "Helvetica Neue", Helvetica, Arial, sans-serif;
 font-size: 13px;
 line-height: 30px;
 font-weight: 300;
 background: url(/demo/css3-nav-menu/images/background.jpg);
 min-width: 600px;
}
section.content {
 width: 660px;
 min-width: 500px;
 margin: 0 auto;
 text-align: center;
 zoom: 1;
}
section.content:before,
section.content:after {
 display: table;
 content: "";
 zoom: 1;
}
section.content:after {
 clear: both;
}
header {
 padding: 30px 0 0 0;
 text-align: center;
}</pre>
<p>The CSS code here is pretty much self-explanatory but allow me to explain certain bits and pieces:</p>
<ul>
<li>On the body element, we are applying a background image and setting the typography and layout settings for the entire document.</li>
<li>You are probably wondering what those <span class="highlight">:before</span> and <span class="highlight">:after</span> pseudo-classes are for. Maybe puzzled over the <span class="highlight">display:table</span> and <span class="highlight">content: &#8220;&#8221;</span> too? This is Nicolas Gallagher&#8217;s awesome <a title="A new micro clearfix hack" href="http://nicolasgallagher.com/micro-clearfix-hack/" target="_blank">micro clearfix hack</a>.</li>
</ul>
<pre>nav {
 zoom: 1;
 margin: 20px auto 0 auto;
 width: auto;
 text-align: left;
 background-color: #efefef;
}
nav:before, nav:after {
 display: table;
 content: "";
 zoom: 1;
}
nav:after {
 clear: both;
}</pre>
<pre>nav ul {
 float: left;
 zoom: 1;
 width: auto;
 background: #FFF;
 z-index: 100;
 border-right: 1px solid #e8e8e8;
}
nav ul:before, nav ul:after {
 display: table;
 content: "";
 zoom: 1;
}
nav ul:after {
 clear: both;
}</pre>
<p>The HTML5 nav element and the ul elements both gets a bit of styling and the same clearfix technique as before.</p>
<pre>nav ul li {
 float: left;
 padding: 0 0 10px 0;
 position: relative;
 outline: none;
 line-height: 1.2em;
 padding: 0 1px 0 0;
 border-left: 1px solid #e8e8e8;
}
nav ul a {
 padding: 15px 20px 15px 20px;
 font-weight: bold;
 outline: none;
 float: left;
 display: block;
 zoom: 1;
}
nav ul a:link, nav ul a:visited {
 color: #666;
 text-decoration: none;
 background-color: #ededed;
 background-repeat: repeat-x;
 outline: none;
}
nav ul a:hover, nav ul a:active {
 color: #a67b45;
 text-decoration: none;
 background-color: #ffffff;
}</pre>
<p>Finally, here is what happens:</p>
<ul>
<li>The list items are floated left to make a horizontal navigation menu.</li>
<li>The anchors are also floated left and styled with <span class="highlight">colour</span> and <span class="highlight">background colour</span>.</li>
</ul>
<p>At this point your document should look something like this:</p>
<div class="iframe-wrapper">
  <iframe src="/demo/css3-nav-menu/step1.html" frameborder="0" style="height:200px;width:700px;">Please upgrade your browser</iframe>
</div>
<p>Now let&#8217;s get to the good stuff!</p>
<h2>CSS3 Gradient</h2>
<p>Before we go further, be sure to have read Chris Coyier&#8217;s excellent article on <a title="Speed Up with CSS3 Gradients" href="http://css-tricks.com/css3-gradients/">CSS3 Gradients</a> if you have not already.</p>
<p>CSS3 gradients are incredibly useful for designing modern websites. Apart from providing flexibility in implementing design, they also reduce the number of HTTP requests &#8212; thus improving page load times.</p>
<pre>nav {
 ...

 background-repeat: repeat-x;
 background-image: -moz-linear-gradient(top, #ffffff, #ededed); /* FF3.6+ */
 background-image: -ms-linear-gradient(top, #ffffff, #ededed); /* IE10 */
 background-image: -webkit-gradient(linear, left top, left bottom, color-stop(0%, #ffffff), color-stop(100%, #ededed)); /* Safari 4+, Chrome 2+ */
 background-image: -webkit-linear-gradient(top, #ffffff, #ededed); /* Safari 5.1+, Chrome 10+ */
 background-image: -o-linear-gradient(top, #ffffff, #ededed); /* Opera 11.10+ */
 background-image: linear-gradient(top, #ffffff, #ededed); /* The standard */
 filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffff', endColorstr='#ededed', GradientType=0); /* IE9 and below */
}</pre>
<p>Firstly, we are adding CSS Gradients on the nav element (the code is highlighted in bold text). It is a subtle white-to-grey gradient applied using background-image property. Browsers that do not support CSS3 Gradients will fall back to the design displayed earlier.</p>
<p>You may have noticed that there are vendor prefixes for different browsers. Here is the order I use:</p>
<ol>
<li>Firstly <span class="highlight">-moz-linear-gradient</span> for older versions of Firefox</li>
<li>Followed by <span class="highlight">-ms-linear-gradient</span> for the upcoming version of Internet Explorer, version 10 (at the time of writing)</li>
<li><span class="highlight">-webkit-gradient</span> for older Webkit based browsers such as Safari 4 and Chrome 2.</li>
<li>For newer versions of Webkit browsers, apply <span class="highlight">-webkit-linear-gradient</span></li>
<li>For Opera versions 11.10 and above, <span class="highlight">-o-linear-gradient</span></li>
<li>The official standard for CSS3 Gradients: <span class="highlight">linear-gradient</span></li>
<li>Finally, everyone&#8217;s favourite browser family (Internet Explorer) needs a proprietary <span class="highlight">filter</span> property, which is not valid CSS.</li>
</ol>
<p>Exhausted? Well, this is the best we can do for now. In the future when everybody has a browser that supports CSS3 Gradients according to the official specification, simply remove all vendor-specific code.<br />
Now let us apply the same gradient to the anchors.</p>
<pre>nav ul a:link, nav ul a:visited {
 ...

 background-image: -moz-linear-gradient(top, #ffffff, #ededed);
 background-image: -ms-linear-gradient(top, #ffffff, #ededed);
 background-image: -webkit-gradient(linear, left top, left bottom, color-stop(0%, #ffffff), color-stop(100%, #ededed));
 background-image: -webkit-linear-gradient(top, #ffffff, #ededed);
 background-image: -o-linear-gradient(top, #ffffff, #ededed);
 background-image: linear-gradient(top, #ffffff, #ededed);
 filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffff', endColorstr='#ededed', GradientType=0);
}
nav ul a:hover, nav ul a:active {
 ...

 background-repeat: repeat-x;
 background-image: -moz-linear-gradient(top, #ededed, #ffffff);
 background-image: -ms-linear-gradient(top, #ededed, #ffffff);
 background-image: -webkit-gradient(linear, left top, left bottom, color-stop(0%, #ededed), color-stop(100%, #ffffff));
 background-image: -webkit-linear-gradient(top, #ededed, #ffffff);
 background-image: -o-linear-gradient(top, #ededed, #ffffff);
 background-image: linear-gradient(top, #ededed, #ffffff);
 filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ededed', endColorstr='#ffffff', GradientType=0);
}</pre>
<p>The highlighted code above adds a CSS3 gradient on each of the anchors within the navigation menu. For hover and active states, the gradient has been reversed.</p>
<p>Here is what your document should look like now:</p>
<div class="iframe-wrapper">
  <iframe src="/demo/css3-nav-menu/step2.html" frameborder="0" style="height:200px;width:700px;">Please upgrade your browser</iframe>
</div>
<h2>CSS3 Box Shadows</h2>
<p>Now that the CSS3 Gradients have been applied, things are looking good now. We are going to apply some <a title="CSS3 Box Shadows" href="http://www.css3.info/preview/box-shadow/" target="_blank">CSS3 Box Shadows</a> on the navigation menu to add some visual depth to the design.</p>
<pre>nav {
 ...

 -webkit-box-shadow: 0 1px 3px rgba(0, 0, 0, 0.2);
    -moz-box-shadow: 0 1px 3px rgba(0, 0, 0, 0.2);
         box-shadow: 0 1px 3px rgba(0, 0, 0, 0.2);
}</pre>
<p>We are going to add some nifty inset CSS Box Shadows on the <span class="highlight">:active</span> pseudo-classes of the anchors. That way when you click on the navigation items, you get a more interactive experience.</p>
<pre>nav ul a:active {
 -webkit-box-shadow: 0 0 3px 1px rgba(0, 0, 0, 0.3) inset;
    -moz-box-shadow: 0 0 3px 1px rgba(0, 0, 0, 0.3) inset;
         box-shadow: 0 0 3px 1px rgba(0, 0, 0, 0.3) inset;
}</pre>
<p>As demonstrated below, there are multiple applications of CSS Box Shadows:</p>
<div class="iframe-wrapper">
  <iframe src="/demo/css3-nav-menu/step3.html" frameborder="0" style="height:200px;width:700px;">Please upgrade your browser</iframe>
</div>
<h2>CSS3 Transition</h2>
<p>CSS3 provides us the ability to include transition effects that were only once available on Adobe Flash<sup><a href="http://azadcreative.com/2012/01/bulletproof-css3-dropdown-navigation-menu/#footnote_0_785" id="identifier_0_785" class="footnote-link footnote-identifier-link" title="Be sure to read Rich Bradshaw&amp;#8217;s comprehensive guide to CSS3 Transitions, Transforms and Animation.">1</a></sup>. Transitions are meant to be used sensibly to enrich the user experience. In this case, I am attempting to create a desktop-application-esque experience for the users.</p>
<p>The transition is to be placed so that the box shadows and colour of anchors change with a subtle transition effect. It is barely noticeable but adds to the overall smoothness of the interface.</p>
<pre>nav ul a:link, nav ul a:visited {
 ...

 -webkit-transition: all 0.3s ease;
    -moz-transition: all 0.3s ease;
     -ms-transition: all 0.3s ease;
      -o-transition: all 0.3s ease;
         transition: all 0.3s ease;
}

nav ul a:hover, nav ul a:active {
 ...

 -webkit-transition: all 0.1s ease;
    -moz-transition: all 0.1s ease;
     -ms-transition: all 0.1s ease;
      -o-transition: all 0.1s ease;
         transition: all 0.1s ease;
}</pre>
<p>The <span class="highlight">transition</span> is set to <span class="highlight">all</span> because we are transitioning two different properties of the anchor: the link <span class="highlight">colour</span> and <span class="highlight">box-shadow</span>. We could use <span class="highlight">transition: colour</span> and <span class="highlight">transition: box-shadow</span> separately but that would add too much redundancy with all the vendor-specific code.</p>
<p>If you are curious about the syntax of the transition, please refer to Dan Cederholm&#8217;s excellent guide to <a title="Understanding CSS3 Transitions" href="http://www.alistapart.com/articles/understanding-css3-transitions/" target="_blank">CSS3 Transitions</a> on A List Apart.</p>
<p>Let&#8217;s have a closer look at the vendor specific codes:</p>
<ol>
<li>We start with Webkit based browsers</li>
<li>Followed by Mozilla</li>
<li>The upcoming Microsoft Internet Explorer 10 comes with full support for CSS3 Transitions. Versions 9 and below have no support whatsoever.</li>
<li>Opera version 10.5+ supports transitions</li>
<li>Finally, the CSS3 standard.</li>
</ol>
<p>The document should now resemble something like this:</p>
<div class="iframe-wrapper">
  <iframe src="/demo/css3-nav-menu/step4.html" frameborder="0" style="height:200px;width:700px;">Please upgrade your browser</iframe>
</div>
<h2>The dropdown markup</h2>
<pre>&lt;ul id="menu"&gt;
 &lt;li&gt;&lt;a href="#"&gt;Home&lt;/a&gt;&lt;/li&gt;
 &lt;li class="breakfast active"&gt;&lt;a href="#"&gt;Breakfast&lt;/a&gt;
   &lt;ul&gt;
     &lt;li class="bread"&gt;&lt;a href="#"&gt;Bread&lt;/a&gt;
       &lt;ul&gt;
         &lt;li class="french"&gt;&lt;a href="#"&gt;French&lt;/a&gt;&lt;/li&gt;
         &lt;li class="english"&gt;&lt;a href="#"&gt;White&lt;/a&gt;&lt;/li&gt;
         &lt;li class="brown"&gt;&lt;a href="#"&gt;Brown&lt;/a&gt;&lt;/li&gt;
       &lt;/ul&gt;
     &lt;/li&gt;
     &lt;li class="eggs"&gt;&lt;a href="#"&gt;Eggs&lt;/a&gt;
       &lt;ul&gt;
         &lt;li&gt;&lt;a href="#"&gt;Eggs Benedict&lt;/a&gt;&lt;/li&gt;
         &lt;li&gt;&lt;a href="#"&gt;Deviled Eggs&lt;/a&gt;&lt;/li&gt;
         &lt;li&gt;&lt;a href="#"&gt;Scotch Eggs&lt;/a&gt;&lt;/li&gt;
         &lt;li&gt;&lt;a href="#"&gt;Scrambled Eggs&lt;/a&gt;&lt;/li&gt;
       &lt;/ul&gt;
     &lt;/li&gt;
     &lt;li class="bacon"&gt;&lt;a href="#"&gt;Bacon&lt;/a&gt;
       &lt;ul&gt;
         &lt;li&gt;&lt;a href="#"&gt;Canadian&lt;/a&gt;&lt;/li&gt;
         &lt;li&gt;&lt;a href="#"&gt;Southern&lt;/a&gt;&lt;/li&gt;
         &lt;li&gt;&lt;a href="#"&gt;Crisp&lt;/a&gt;&lt;/li&gt;
       &lt;/ul&gt;
     &lt;/li&gt;
     &lt;li class="jam"&gt;&lt;a href="#"&gt;Preserves&lt;/a&gt;
       &lt;ul&gt;
         &lt;li&gt;&lt;a href="#"&gt;Raspberry&lt;/a&gt;&lt;/li&gt;
         &lt;li&gt;&lt;a href="#"&gt;Gooseberry&lt;/a&gt;&lt;/li&gt;
         &lt;li&gt;&lt;a href="#"&gt;Strawberry&lt;/a&gt;&lt;/li&gt;
         &lt;li&gt;&lt;a href="#"&gt;Blackberry&lt;/a&gt;&lt;/li&gt;
       &lt;/ul&gt;
     &lt;/li&gt;
     &lt;li class="coffee"&gt;&lt;a href="#"&gt;Coffee&lt;/a&gt;
       &lt;ul&gt;
         &lt;li&gt;&lt;a href="#"&gt;Cappuccino&lt;/a&gt;&lt;/li&gt;
         &lt;li&gt;&lt;a href="#"&gt;Latte&lt;/a&gt;&lt;/li&gt;
         &lt;li&gt;&lt;a href="#"&gt;Espresso&lt;/a&gt;&lt;/li&gt;
         &lt;li&gt;&lt;a href="#"&gt;Macchiato&lt;/a&gt;&lt;/li&gt;
       &lt;/ul&gt;
     &lt;/li&gt;
   &lt;/ul&gt;
 &lt;/li&gt;

...
&lt;/ul&gt;</pre>
<p>The code above is simply a sample of the full markup. As you can see, there are nested unordered lists within the top-level list items. <a href="http://jsfiddle.net/KGK87/6/" target="_blank">Here is the full HTML</a>.</p>
<p>Now that we have a complete nested HTML structure in place, it is time to style them.</p>
<h2>Styling older browsers first</h2>
<p>The principles of <a title="Understanding Progressive Enhancement - ALA" href="http://www.alistapart.com/articles/understandingprogressiveenhancement" target="_blank">progressive enhancement</a> teaches that we must cater for older browsers first before adding more features to newer, more standards-compliant browsers. Following those principles, we will be styling a basic version of the dropdown navigation first.</p>
<pre>#menu li:hover &gt; ul {
 display: block;
}

#menu li:hover &gt; a {
 color: #a67b45;
}

nav li ul {
 display: none;
 margin: 0;
 position: absolute;
 top: 46px;
 left: 0px;
 width: 130px;
 border: none !important;
 padding: 2px;
 background: #999;
 z-index: 1000;
 zoom: 1;
 -webkit-box-shadow: none;
    -moz-box-shadow: none;
         box-shadow: none;
}

nav li ul:before, nav li ul:after {
 display: table;
 content: "";
 zoom: 1;
}

nav li ul:after {
 clear: both;
}

nav li ul a {
 float: none;
}

nav li ul li {
 width: 130px;
 display: block;
 border-top: 1px solid #cfcfcf;
 border-left: none !important;
}

nav li ul li ul {
 display: none;
 left: 130px !important;
 top: -3px;
}</pre>
<p>At the beginning of the code block, you will see that when you hover on the top-level item, its children are displayed by switching its <span class="highlight">display</span> property to <span class="highlight">block</span>.</p>
<p>Then the code goes on to define the structure of the sub-level menu system. Some recurring features such as the clearfix hack and CSS3 Box Shadows are seen at play.</p>
<p>What you will across all browsers at this point is this:</p>
<div class="iframe-wrapper">
  <iframe src="/demo/css3-nav-menu/step5.html" frameborder="0" style="height:500px;width:700px;">Please upgrade your browser</iframe>
</div>
<h2>Progressively enhanced</h2>
<p>Modernizr adds classes to the html element of the document according to the capabilities available in the browser. We will require browsers that support RGBA to display an enhanced design.</p>
<pre>.rgba nav li &gt; ul {
 padding: 10px;
 left: -10px;
 background: rgba(0, 0, 0, 0.1);
 -webkit-border-radius: 10px;
    -moz-border-radius: 10px;
         border-radius: 10px;
}

.rgba nav li ul li ul {
 top: -10px;
}

.rgba nav li &gt; ul {
  margin-top: -1px;
}</pre>
<p>Modernizr adds the class <span class="highlight">rgba</span> to the <span class="highlight">html element</span> of the document when the document loads. Using this method, we can style advanced browsers without affecting the older non-compliant ones.</p>
<p>With the enhanced design, standards-compliant browsers should now display the navigation with all the CSS3 RGBA goodness.</p>
<p>The code above has been update, thanks to a bug kindly reported by <a href="http://azadcreative.com/2012/01/bulletproof-css3-dropdown-navigation-menu/#comment-2925">Stephen</a>.</p>
<div class="iframe-wrapper">
  <iframe src="/demo/css3-nav-menu/step6.html" frameborder="0" style="height:500px;width:700px;">Please upgrade your browser</iframe>
</div>
<h2>The jQuery plugin</h2>
<p>For the purpose of this navigation, we are going to build a custom jQuery plugin. The purpose of the plugin is to:</p>
<ol>
<li>Find out if the navigation items have any children. If they do, add a <span class="highlight">hasChildren</span> classname</li>
<li>Wrap the inside list items anchors with a <span class="highlight">span</span>, which is useful for applying styling</li>
<li>Apply the class <span class="highlight">hover</span> when an onHover event occurs on the list items</li>
</ol>
<p>Allow me to give to give you the code straight away:</p>
<pre>$.fn.nav_dropdown = function(options) {

 var defaults = {};
 var opts = $.extend(defaults, options);

 // Apply on those items with children
 this.each(function() {
   $(this).find('li').each(function() {
     if($(this).find("ul").length &gt; 0) {
       $(this).addClass("hasChildren");
       $(this).find('&gt; a').wrapInner("&lt;span&gt;&lt;/span&gt;");
     }
   });
 });

 // Apply on all list items
 $(this).find("li").hover(function() {
   $(this).addClass('hover');
 }, function() {
   $(this).removeClass('hover');
 });

 $('li').has('ul').hover(function(){
   $(this).children('ul').show();
 }, function() {
   $(this).children('ul').hide();
 });
};</pre>
<p>As you can see above, the jQuery plugin is very basic and nothing to be overwhelmed with. I am using the wonderful <a title="A Plugin Development Pattern" href="http://www.learningjquery.com/2007/10/a-plugin-development-pattern" target="_blank">jQuery plugin authoring boilerplate</a> provided by Mike Alsup of Learning jQuery.</p>
<p>Now all you have to do is to call the function and tell it what HTML element to apply it to:</p>
<pre>$(function() {
  $('nav').nav_dropdown();
});</pre>
<p>We have added the <span class="highlight">hasChildren</span> class to the list items that contain further items as children. We will have to provide additional styling, so that users can visually tell them apart from the childless items.</p>
<h2>Styling items with children</h2>
<p>Before we go into the CSS styling, we have to create a CSS Sprite with arrows that act as pointers. There are four elements within the sprite as demonstrated below.</p>
<p><img class="alignnone size-full wp-image-799" title="The CSS Image Sprite" src="http://azadcreative.com/wp-content/uploads/2012/01/Sprite-def.jpg" alt="The CSS Image Sprite" width="700" height="200" /></p>
<p>Now that we have an image with arrows, let us apply the styling. Firstly, the top-level items get their visual cues with the following code:</p>
<pre>nav ul li.hasChildren a span {
 padding: 0 20px 0 0;
 background: url(/demo/css3-nav-menu/images/sprite.png);
 background-position: right top;
 background-repeat: no-repeat;
 display: block;
}
nav ul li.hasChildren a:hover span, nav ul li.hasChildren.hover a span {
 background-position: right -50px;
}</pre>
<p>Now for the sub-level navigation items, we are going to apply some styling:</p>
<pre>nav li ul li.hasChildren a &gt; span {
 background: url(/demo/css3-nav-menu/images/sprite.png);
 background-position: right -97px !important;
 background-repeat: no-repeat;
}
nav li ul li.hasChildren a:hover &gt; span,
nav li ul li.hasChildren.hover &gt; a span {
 background-position: right -138px !important;
}</pre>
<p>With the help of a little javascript and an image sprite, we have created a navigation where items are differentiable according to whether they have children.</p>
<p>And viola! That is all there is. Here is the final demo, one more time:</p>
<div class="iframe-wrapper">
  <iframe src="/demo/css3-nav-menu/index.html" frameborder="0" style="height:570px;width:700px;">Please upgrade your browser</iframe>
</div>
<h2>Conclusion</h2>
<p>And we&#8217;re done! The final code is <a title="Bulletproof CSS3 Dropdown Navigation Menu" href="http://jsfiddle.net/KGK87/6/" target="_blank">available at JSFiddle</a> for your convenience.</p>
<p>Congratulations, you now have a completely cross-browser compliant CSS3 Navigation Menu that is fully functional in older non-supporting browsers and takes advantage of advanced CSS3 features in modern browsers.</p>
<p>If this tutorial has been helpful to you or If you happen to be a front-end development guru who knows more than me, your feedback would be very much appreciated.</p>
<h3>Further reading</h3>
<p>For further reading, here are some excellent resources from world-class web developers:</p>
<ul>
<li><a title="Introduction to CSS3 – Borders" href="http://designshack.net/articles/introduction-to-css3-part-2-borders">Introduction to CSS3 &#8211; Borders</a> at DesignShack.</li>
<li><a title="The elusive CSS Border Gradient" href="http://blog.nateps.com/the-elusive-css-border-gradient">The elusive CSS Border Gradient</a> by Nate Smith.</li>
<li>Web Designer Wall has the beginner&#8217;s guide to <a title="Cross-Browser CSS Gradient" href="http://webdesignerwall.com/tutorials/cross-browser-css-gradient">Cross-browser CSS3 Gradient</a>.</li>
</ul>
<p>Please use this code for learning purposes only and please do not blindly copy/paste your way to glory. I cannot guarantee that the code will not break your existing layout. I herewith declare myself not responsible if the code presented here happens to break layouts or kill your neighbour&#8217;s cat.</p>
<h3>What can you do with an unordered list?</h3>
<p>As demonstrated above, we have styled a simple unordered list to design an outstanding cross-browser compliant navigation menu. What can you do with a humble <span class="highlight">ul</span>?</p>
<p>Start <a href="http://jsfiddle.net/KGK87/6/" target="_blank">forking the code</a> and show us what you can do. Make sure you link to the live demo in your comment below.</p>
<ol class="footnotes"><li id="footnote_0_785" class="footnote">Be sure to read Rich Bradshaw&#8217;s comprehensive guide to <a title="Using CSS3 Transitions, Transforms and Animation" href="http://css3.bradshawenterprises.com/all/">CSS3 Transitions, Transforms and Animation</a>.</li></ol><div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/azadcreative?a=yZy6BiEbXfA:NXy3Ogo2dj4:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/azadcreative?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/azadcreative?a=yZy6BiEbXfA:NXy3Ogo2dj4:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/azadcreative?i=yZy6BiEbXfA:NXy3Ogo2dj4:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/azadcreative?a=yZy6BiEbXfA:NXy3Ogo2dj4:gIN9vFwOqvQ"><img src="http://feeds.feedburner.com/~ff/azadcreative?i=yZy6BiEbXfA:NXy3Ogo2dj4:gIN9vFwOqvQ" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/azadcreative?a=yZy6BiEbXfA:NXy3Ogo2dj4:F7zBnMyn0Lo"><img src="http://feeds.feedburner.com/~ff/azadcreative?i=yZy6BiEbXfA:NXy3Ogo2dj4:F7zBnMyn0Lo" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/azadcreative/~4/yZy6BiEbXfA" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://azadcreative.com/2012/01/bulletproof-css3-dropdown-navigation-menu/feed/</wfw:commentRss>
		<slash:comments>13</slash:comments>
		<feedburner:origLink>http://azadcreative.com/2012/01/bulletproof-css3-dropdown-navigation-menu/</feedburner:origLink></item>
		<item>
		<title>Proofing Tools for Web Designers and Agencies</title>
		<link>http://feedproxy.google.com/~r/azadcreative/~3/Bv_s-nXpHp8/</link>
		<comments>http://azadcreative.com/2011/12/proofing-tools-for-web-designers-and-agencies/#comments</comments>
		<pubDate>Tue, 20 Dec 2011 10:00:46 +0000</pubDate>
		<dc:creator>Saddam Azad</dc:creator>
				<category><![CDATA[Design]]></category>
		<category><![CDATA[Freelancing]]></category>

		<guid isPermaLink="false">http://azadcreative.com/?p=553</guid>
		<description><![CDATA[<p>Clients are often short on words to truly explain their expectations and reactions in detail, over traditional forms of communication. As a designer, you may have found yourself struggling to understand exactly what the client wants from your designs once you&#8217;ve submitted a few mockups. Usually they want something to &#8220;pop&#8221;.</p>
<p>Thankfully, web technologies have advanced to [...]</p>]]></description>
			<content:encoded><![CDATA[<p>Clients are often short on words to truly explain their expectations and reactions in detail, over traditional forms of communication. As a designer, you may have found yourself struggling to understand exactly what the client wants from your designs once you&#8217;ve submitted a few mockups. Usually they want something to &#8220;pop&#8221;.</p>
<p>Thankfully, web technologies have advanced to the point that newer, more efficient means of communications have arrived &#8211; that are specifically tailored for this purpose.</p>
<p>I like to gather feedback, early and often. For this, I use web based proofing services. They are cheap and very efficient is maintaining an efficient channel of communication with the client. They help keep the designer and the client stay on the same page at all time.</p>
<p>Over the last 12 months, quite a few contenders have emerged in this space. Let&#8217;s have a look:</p>
<h2>ProofHQ</h2>
<p><a href="http://proofhq.com"><img class="alignright  wp-image-729" title="ProofHQ" src="http://azadcreative.com/wp-content/uploads/2011/12/ProofHQ.jpg" alt="ProofHQ" /></a>ProofHQ is a comprehensive proofing tool &#8212; complete with contact and client management and full featured annotation, review and approval process management.</p>
<p>The app provides a very intuitive interface for feedback and approval management for designers as well as decision makers in the client company.</p>
<p>ProofHQ is not just limited to web designers, it can also satisfy the proofing needs of professional print designers. It handles Adobe Creative Suite<sup><a href="http://azadcreative.com/2011/12/proofing-tools-for-web-designers-and-agencies/#footnote_0_553" id="identifier_0_553" class="footnote-link footnote-identifier-link" title="Photoshop .PSD and Illustrator .AI files have been tested. Other formats may or may not be supported.">1</a></sup> and multi-page PDF files with ease.</p>
<p>Among many great features, one that stands out is Basecamp integration. The seamless integration with the existing projects and milestones in Basecamp makes ProofHQ a perfect companion app.</p>
<p>Drag-and-Drop integration with the desktop and version management of concepts are nifty features that make this app truly fantastic.</p>
<div id="attachment_728" class="wp-caption alignnone" style="width: 670px"><img class=" wp-image-728 " title="ProofHQ Annotate" src="http://azadcreative.com/wp-content/uploads/2011/12/ProofHQ-Annotate.jpg" alt="ProofHQ Annotation and Comment Interface" width="660" height="557" /><p class="wp-caption-text">ProofHQ Annotation and Comment Interface</p></div>
<p>For the solitary freelance designer, there is the $17/month package with 2GB is storage and up to 30 proofs per month. There are 5 more packages, suitable for teams of all sizes, from 2 to 40 users.</p>
<p>Up to 40 GB of storage and 1000 proofs per month is enough for quite a large company. The price tag of $299/month is more than reasonable.</p>
<h2>Onotate</h2>
<p><a href="http://onotate.com"><img class="alignright  wp-image-731" title="Onotate" src="http://azadcreative.com/wp-content/uploads/2011/12/onotate.png" alt="Onotate" /></a>Onotate is another great service that focuses on annotation of design mockups. This tool gives the reviewer some really nifty tools to pinpoint the issues and annotate them clearly for the designer.</p>
<p>The simplicity on Onotate is sheer brilliance. The creation of Projects and Stages, as well the upload of concepts was a seamless process &#8212; all done through a brilliantly minimalistic interface.</p>
<p>The reviewers are given straight-forward tools for annotation and commenting on the concept. You can choose your mood when leaving a feedback on a concept.</p>
<div id="attachment_732" class="wp-caption alignnone" style="width: 670px"><img class=" wp-image-732 " title="Onotate Annotation" src="http://azadcreative.com/wp-content/uploads/2011/12/Onotate-annotation.jpg" alt="Onotate Annotation" width="660" height="287" /><p class="wp-caption-text">Onotate Annotation Interface</p></div>
<p>Onotate would be perfect for the freelance designer showing off their concepts and prototypes to clients and gathering feedback. I would imagine the client would love the minimalistic interface that lets them get the work done without getting in the way.</p>
<p>The pricing plan is very simple. The <strong>only</strong> plan is $15/month and provides access for unlimited people to unlimited storage. Very good value for money, if you ask me.</p>
<h2>DesignSignoff</h2>
<p><a href="http://designsignoff.com/"><img class="alignright  wp-image-737" title="DesignSignOff" src="http://azadcreative.com/wp-content/uploads/2011/12/DesignSignOff.gif" alt="DesignSignOff" /></a>This is a startup which recently acquired GetSignOff and have cooked up something quite fabulous.</p>
<p>DesignSignOff, as the name suggests, focuses on the process of review and sign-off of web design design prototypes. The app allows smooth collaboration between all parties and helps agencies get to the all-important milestone &#8211; Design SignOff.</p>
<p>What differentiates this app from the rest is its outstanding presentation toolkit. The app is designed for agencies that pitch concepts to clients. The clients can view the concepts in their own browsers and when the time is right, leave valuable feedback.</p>
<p>DesignSignOff is not just for design review and approval, it handles everything from pitch to sign-off. This is a truly innovative solution that alleviates much headache and streamlines the process at many top agencies.</p>
<div id="attachment_736" class="wp-caption alignnone" style="width: 670px"><img class=" wp-image-736 " title="DesignSignOff Review" src="http://azadcreative.com/wp-content/uploads/2011/12/DesignSignOff-Review.jpg" alt="DesignSignOff Review" width="660" height="452" /><p class="wp-caption-text">DesignSignOff Review Interface</p></div>
<p>The package for &#8216;the little guy&#8217; is $12 per month provides access to 1 user and allows 3 clients and up to 10 projects.</p>
<p>For small groups, the $25 per month package allows 20 clients and 50 projects, as well as SSL security. If you&#8217;re a behemoth looking for everything unlimited, it will set you back by a rather measly $35 a month.</p>
<h2>ConceptShare</h2>
<p><img class="alignright" title="ConceptShare" src="http://azadcreative.com/wp-content/uploads/2011/12/ConceptShare.png" alt="ConceptShare" />ConceptShare is the leading tool for design presentation and review. It cannot be easier to upload your design proofs for review. Almost every client I have worked with have familiarized with the interface of ConceptShare within minutes.</p>
<p><strong>Update:</strong> There has been a few changes with ConceptShare. They are now focused towards agencies and businesses looking for proofing software. If you are representing an agency, get in touch with their Sales Department for a trial.</p>
<h2>Conclusion</h2>
<p>In my experience, the clients love web based proofing because it allows them to show off the designer&#8217;s work to their colleagues and loved ones and gather their opinions which, in turn, shapes their own opinion. Nearly half my clients come back to me with feedback from their wives!</p>
<p>Web based Design Proofing/Review and Sign-off applications are a major part of my design process.</p>
<p>What are your experiences with such applications? Let me know your thoughts and opinion.</p>
<ol class="footnotes"><li id="footnote_0_553" class="footnote">Photoshop .PSD and Illustrator .AI files have been tested. Other formats may or may not be supported.</li></ol><div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/azadcreative?a=Bv_s-nXpHp8:nyKDU2OqSjE:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/azadcreative?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/azadcreative?a=Bv_s-nXpHp8:nyKDU2OqSjE:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/azadcreative?i=Bv_s-nXpHp8:nyKDU2OqSjE:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/azadcreative?a=Bv_s-nXpHp8:nyKDU2OqSjE:gIN9vFwOqvQ"><img src="http://feeds.feedburner.com/~ff/azadcreative?i=Bv_s-nXpHp8:nyKDU2OqSjE:gIN9vFwOqvQ" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/azadcreative?a=Bv_s-nXpHp8:nyKDU2OqSjE:F7zBnMyn0Lo"><img src="http://feeds.feedburner.com/~ff/azadcreative?i=Bv_s-nXpHp8:nyKDU2OqSjE:F7zBnMyn0Lo" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/azadcreative/~4/Bv_s-nXpHp8" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://azadcreative.com/2011/12/proofing-tools-for-web-designers-and-agencies/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://azadcreative.com/2011/12/proofing-tools-for-web-designers-and-agencies/</feedburner:origLink></item>
		<item>
		<title>5 Tips for Creating a Fabulous Web Design Portfolio</title>
		<link>http://feedproxy.google.com/~r/azadcreative/~3/AajskXlekZQ/</link>
		<comments>http://azadcreative.com/2011/12/five-tips-for-creating-a-fabulous-web-design-portfolio/#comments</comments>
		<pubDate>Mon, 12 Dec 2011 12:00:06 +0000</pubDate>
		<dc:creator>Saddam Azad</dc:creator>
				<category><![CDATA[Business]]></category>
		<category><![CDATA[Freelancing]]></category>

		<guid isPermaLink="false">http://azadcreative.com/?p=706</guid>
		<description><![CDATA[<p>Your design portfolio is your virtual shop-window the whole world can see. Your portfolio not only conveys what you have done, it shows what you can do for a prospective client.</p>
<p>A client is likely to scan your portfolio before deciding to contact you. It is very likely that the reviewer is evaluating other portfolios as [...]</p>]]></description>
			<content:encoded><![CDATA[<p>Your design portfolio is your virtual shop-window the whole world can see. Your portfolio not only conveys what you have done, it shows what you can do for a prospective client.</p>
<p>A client is likely to scan your portfolio before deciding to contact you. It is very likely that the reviewer is evaluating other portfolios as well. So how do you ensure that yours stand out amongst the crowd?</p>
<p>In this highly competitive industry, it is not enough to have some excellent pieces of work under your belt &#8212; you must also display your work and show a lot of professionalism in doing so.</p>
<p>In my 8 years in the industry, I have picked up a few tricks about how to design a portfolio with a punch and a kick.<span id="more-706"></span></p>
<div id="attachment_723" class="wp-caption alignnone" style="width: 670px"><img class="size-full wp-image-723" title="design-portfolio" src="http://azadcreative.com/wp-content/uploads/2011/12/design-portfolio.jpg" alt="5 Tips for Creating a Fabulous Web Design Portfolio" width="660" height="367" /><p class="wp-caption-text">Photo: {link:http://www.flickr.com/photos/22897666@N00/5489630899/}Catskills Photography{/link}</p></div>
<h2>Tell a story</h2>
<p>Most designers display a thumbnail of their portfolio piece and add a link to the live website. That, alone, is not enough to tell a reviewer what they want to know.</p>
<p>Tell the world about the experiences you&#8217;ve had whilst working on the project. Write a few sentences about the project, the people behind it and how it served the ultimate business objective of the client.</p>
<p>Focus on the deliverables that were expected from you at the beginning of the project. Let the world know how your work contributed to the success of the project and how it benefits the client&#8217;s bottom-line.</p>
<p>If you wish to, write about the hiccups along the way and how it helped you grow as a professional.</p>
<p>Your portfolio is not just a bunch of cropped images, it is a collection of experiences &#8211; and there&#8217;s a story behind every experience. Tell the story.</p>
<h2>Create actionable steps for visitors</h2>
<p>Once the reviewers have looked around, they would want to contact you via email, twitter or any other media. Make sure the contact options are easily available to all viewers. A simple actionable step to your inbox goes a long way.</p>
<p>Use strong call-to-actions to invite viewers to find out more about you and your services. Ask them to write to you and leave a comment. Ask for a job or a referral.</p>
<p>The people who are viewing your portfolio are likely people who are looking for a designer in their team. Show them what value you add to the company and why you should be hired.</p>
<h2>Only display your best work</h2>
<p>We have all designed something that we&#8217;re not particularly proud of. There were times when the client&#8217;s demands became the direction for the design, instead of your own liking, resulting in rather mediocre results.</p>
<p>There were times when the client employed other people to modify (read bastardize) my work. The masterpiece that I thought I created is no longer what it was.</p>
<p>It is easy to get carried away and showcase every little piece you have ever created. But think of what a prospective client might think of you when they see a mediocre or mutilated piece of work in your portfolio.</p>
<p>Not every piece is portfolio-worthy. Learn to let go.</p>
<h2>Tag every piece with meta information</h2>
<p>With each piece of work in your portfolio, display some key information such as:</p>
<ul>
<li>The name of the client.</li>
<li>How long you have worked for the client.</li>
<li>Your specific role in the project.</li>
<li>What deliverables you produced.</li>
</ul>
<p>Some designers even showcase what software they have used in the process. Customer testimonials are optional but they create a great bit of credibility for yourself in the eyes of the reviewers. Focus on the tangible benefits your client enjoyed as a direct benefit from your work, if you happen to have such information.</p>
<h2>Show some personality</h2>
<p>Your portfolio is an image your personality and your primary marketable skill. If your skill is User Interface Design, specifically for Web Apps, make your portfolio as clean, intuitive and usable as possible.</p>
<p>If you&#8217;re a Graphic Designer by heart, make sure your portfolio website speaks that language.</p>
<h2>Bonus tip: A little Marketing knowledge goes a long way</h2>
<p>The reviewers visiting your online portfolio are likely to be individuals whose sole focus is to deliver greater value to their end consumers. They will consider you, as a designer, only when they know that you care capable of adding more value to their products or services &#8211; which will, in turn, benefit their consumers.</p>
<p>Every piece in your portfolio needs to reflect how your services benefitted your client organisations. A little knowledge of marketing will help you gain insight as to how clients perceive their own companies and new hires.</p>
<p>For employers, even a new hire is an investment. When they hire a web designer, they will be making a significant investment in wages and overhead. As any businessperson would tell you, every investment is made to make a profit &#8212; a Return on Investment (ROI).</p>
<p>Your portfolio is not just for your own bragging rights, it is meant to influence prospective employers who need convincing. You need to convince them, through your portfolio, that you are capable of producing value and delivering a significant ROI for their businesses.</p>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/azadcreative?a=AajskXlekZQ:7sgOEjUhkA4:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/azadcreative?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/azadcreative?a=AajskXlekZQ:7sgOEjUhkA4:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/azadcreative?i=AajskXlekZQ:7sgOEjUhkA4:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/azadcreative?a=AajskXlekZQ:7sgOEjUhkA4:gIN9vFwOqvQ"><img src="http://feeds.feedburner.com/~ff/azadcreative?i=AajskXlekZQ:7sgOEjUhkA4:gIN9vFwOqvQ" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/azadcreative?a=AajskXlekZQ:7sgOEjUhkA4:F7zBnMyn0Lo"><img src="http://feeds.feedburner.com/~ff/azadcreative?i=AajskXlekZQ:7sgOEjUhkA4:F7zBnMyn0Lo" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/azadcreative/~4/AajskXlekZQ" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://azadcreative.com/2011/12/five-tips-for-creating-a-fabulous-web-design-portfolio/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://azadcreative.com/2011/12/five-tips-for-creating-a-fabulous-web-design-portfolio/</feedburner:origLink></item>
		<item>
		<title>On LESS</title>
		<link>http://feedproxy.google.com/~r/azadcreative/~3/QJB4usAfYZc/</link>
		<comments>http://azadcreative.com/2011/10/on-less/#comments</comments>
		<pubDate>Sat, 29 Oct 2011 08:20:56 +0000</pubDate>
		<dc:creator>Saddam Azad</dc:creator>
				<category><![CDATA[Coding]]></category>
		<category><![CDATA[Thoughts]]></category>

		<guid isPermaLink="false">http://azadcreative.com/?p=588</guid>
		<description><![CDATA[Being a sceptic from the very beginning, I was reluctant to take on any CSS pre-processor as I deemed them unnecessary. But my recent experiments with LESS has won both my heart and mind. I must say that the increase in productivity is noticeable and the benefits tangible.

Not only does LESS save time, it enhances manageability of code.]]></description>
			<content:encoded><![CDATA[<p>I have been a sceptic since the very first time I saw these CSS pre-processors emerge. If I remember correctly, it was <a href="http://sass-lang.com/" target="_blank">SASS</a> (a sister project of <a href="http://haml-lang.com/" target="_blank">HAML</a>) that emerged as a way to introduce variables and other neat features to CSS.</p>
<p>My scepticism began after I gave SASS/HAML a try. Even though the documentation looked very inviting, getting started was too much trouble. Not to mention the code was buggy.</p>
<p>It would be unfair to bash the developers of SASS/HAML, these technologies were experimental and not at all mature at that stage. Implementation in a large critical business application was not feasible by any means.</p>
<p>Years went by as they evolved and matured. SASS along with <a href="http://lesscss.org/" target="_blank">LESS</a> and a few other newcomers became competitors in this particular niche. Many developers adopted them quickly and eventually the interwebs became swamped with debated about which one is better<sup><a href="http://azadcreative.com/2011/10/on-less/#footnote_0_588" id="identifier_0_588" class="footnote-link footnote-identifier-link" title="The debate is brilliantly visualised at Wrangl, http://wrangl.com/sass-v-less">1</a></sup>.</p>
<p>Recently, due to overwhelming noise<sup><a href="http://azadcreative.com/2011/10/on-less/#footnote_1_588" id="identifier_1_588" class="footnote-link footnote-identifier-link" title="Lea Verou has an excellent case in the&nbsp;argument against CSS pre-processors.&nbsp;Aaron Russell&nbsp;defends CSS pre-processors&nbsp;and counters one criticism at a time.&nbsp;Both are must-reads.">2</a></sup> in the interwebs<sup><a href="http://azadcreative.com/2011/10/on-less/#footnote_2_588" id="identifier_2_588" class="footnote-link footnote-identifier-link" title="Also, Twitter&amp;#8217;s Bootstrap framework and Compass&nbsp;looks very promising">3</a></sup>, I decided to give them another try.</p>
<p>My objectives for using a CSS pre-processor were:</p>
<ol>
<li>I like modular CSS files. I want them all concatenated and minified before passing onto the browser.</li>
<li>I do not want to handle the command-line interface. Running a command after every little CSS change seems counterproductive to me.</li>
<li>I want convenience and speed. Anything that slows me down would force me to go back to vanilla CSS.</li>
<li>I do not want to learn a new language.</li>
<li>Must fit into my workflow. I use <a href="http://www.panic.com/coda/" target="_blank">Coda</a> and develop most websites and applications with WordPress and CakePHP, respectively.</li>
</ol>
<p>LESS appeared to be the easier choice, primarily because of the following reasons:</p>
<ol>
<li>Less.js provides the option to pre-process CSS files on the fly</li>
<li><a href="http://incident57.com/less/" target="_blank">Less.app</a> is a native Mac OS app that is <em>free</em> to use<sup><a href="http://azadcreative.com/2011/10/on-less/#footnote_3_588" id="identifier_3_588" class="footnote-link footnote-identifier-link" title="In comparison,&nbsp;Compass.app, is written in Java&nbsp;and&nbsp;costs money to run. It&amp;#8217;s only $7 but I&amp;#8217;m cheap.">4</a></sup></li>
<li>Language-agnostic<sup><a href="http://azadcreative.com/2011/10/on-less/#footnote_4_588" id="identifier_4_588" class="footnote-link footnote-identifier-link" title="A complete contrast to SASS and Compass. Their official documentation relies on the existence of Ruby.">5</a></sup></li>
<li>Drag-drop setup. Just had to rename the file extension from .css to .less</li>
</ol>
<p>I chose not to use Less.js with the project as it adds a little payload to the already heavy templates. Instead, I use Less.app for snooping my development folder and compile, concatenate and minify the output.</p>
<p>I have just started off with LESS and eager to find out more and more as I go on with my current project. I must say that the increase in productivity is noticeable as LESS is such a time-saver.</p>
<p>I never thought I would say this, but I am starting to get hooked on LESS.</p>
<ol class="footnotes"><li id="footnote_0_588" class="footnote">The debate is brilliantly visualised at Wrangl, <a href="http://wrangl.com/sass-v-less">http://wrangl.com/sass-v-less</a></li><li id="footnote_1_588" class="footnote">Lea Verou has an excellent case in the <a href="http://leaverou.me/2011/03/on-css-preprocessors/" target="_blank">argument against CSS pre-processors</a>.<strong> </strong>Aaron Russell <a href="http://aaronrussell.co.uk/articles/in-defence-of-css-preprocessors/" target="_blank">defends CSS pre-processors</a> and counters one criticism at a time. Both are must-reads.</li><li id="footnote_2_588" class="footnote">Also, Twitter&#8217;s <a href="http://twitter.github.com/bootstrap/" target="_blank">Bootstrap framework</a> and <a href="http://compass-style.org/" target="_blank">Compass</a> looks very promising</li><li id="footnote_3_588" class="footnote">In comparison, <a href="http://compass.handlino.com/" target="_blank">Compass.app</a>, is written in Java <em>and</em> costs money to run. It&#8217;s only $7 but I&#8217;m cheap.</li><li id="footnote_4_588" class="footnote">A complete contrast to SASS and Compass. Their official documentation relies on the existence of Ruby.</li></ol><div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/azadcreative?a=QJB4usAfYZc:3Ee9NfXmYOc:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/azadcreative?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/azadcreative?a=QJB4usAfYZc:3Ee9NfXmYOc:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/azadcreative?i=QJB4usAfYZc:3Ee9NfXmYOc:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/azadcreative?a=QJB4usAfYZc:3Ee9NfXmYOc:gIN9vFwOqvQ"><img src="http://feeds.feedburner.com/~ff/azadcreative?i=QJB4usAfYZc:3Ee9NfXmYOc:gIN9vFwOqvQ" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/azadcreative?a=QJB4usAfYZc:3Ee9NfXmYOc:F7zBnMyn0Lo"><img src="http://feeds.feedburner.com/~ff/azadcreative?i=QJB4usAfYZc:3Ee9NfXmYOc:F7zBnMyn0Lo" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/azadcreative/~4/QJB4usAfYZc" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://azadcreative.com/2011/10/on-less/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://azadcreative.com/2011/10/on-less/</feedburner:origLink></item>
		<item>
		<title>Getting the Client to Sign-Off your Designs</title>
		<link>http://feedproxy.google.com/~r/azadcreative/~3/QZRhY0eZ3jg/</link>
		<comments>http://azadcreative.com/2011/10/getting-the-client-to-sign-off-your-designs/#comments</comments>
		<pubDate>Thu, 13 Oct 2011 01:22:22 +0000</pubDate>
		<dc:creator>Saddam Azad</dc:creator>
				<category><![CDATA[Business]]></category>
		<category><![CDATA[Freelancing]]></category>

		<guid isPermaLink="false">http://azadcreative.com/?p=550</guid>
		<description><![CDATA[<p>Getting a client to approve a design is the illusive milestone that designers chase their entire careers. It is all about overcoming your own creative block, getting the work done, gathering feedback and getting the client to approve the end result. Here are a few things that I have picked up working with a number of [...]</p>]]></description>
			<content:encoded><![CDATA[<p><em>Getting a client to approve a design is the illusive milestone that designers chase their entire careers. It is all about overcoming your own creative block, getting the work done, gathering feedback and getting the client to approve the end result. Here are a few things that I have picked up working with a number of clients over the last few years.<span id="more-550"></span></em></p>
<p>So you have been working day and night putting your sweat, blood and tears into this new design piece. You&#8217;ve emailed your client the prototypes and screenshots, asking for their feedback, hoping to catch their attention and get the feedback ASAP.</p>
<p>Looking at this from the client&#8217;s perspective, they are receiving an email with numerous attachments with no context whatsoever. The client downloads the images and looks at the designs and, in most cases, they do not know how to communicate their feedback to the designer &#8212; apart from sending an email with long list of change requests or criticism.</p>
<p>You upon receiving the response, try to decipher and put a context on what the client tried to say. It becomes apparent that this is clearly not a very effective means of communication.</p>
<p><img class="alignnone size-full wp-image-552" title="Getting the Client to Sign-Off your Designs" src="http://azadcreative.com/wp-content/uploads/2011/06/Hero.jpg" alt="Getting the Client to Sign-Off your Designs" width="660" height="339" /></p>
<p>Lack of communication can ruin the project, or worse, the relationship between you and your client. How do you make sure that you clearly communicate your design decisions and effectively gather useful feedback? How do you make sure that client formally expresses their approval of the designs? Here are a few proven methods of effective communication and feedback gathering, for us creative types:</p>
<h2>Rich Internet Applications to the rescue</h2>
<p>With a plethora of affordable web-based proofing tools<sup><a href="http://azadcreative.com/2011/10/getting-the-client-to-sign-off-your-designs/#footnote_0_550" id="identifier_0_550" class="footnote-link footnote-identifier-link" title="Mashable has a great list of&nbsp;Web Based Tools for Design Feedback.">1</a></sup> available at our disposal &#8212; there is no reason not to put them to use.  These tools let you upload your design concepts and showcase them to your client.</span></p>
<p>The clients, in turn, get to annotate and leave comments after review. This feedback is essential for the designer to meet their client&#8217;s needs.</p>
<p>Some of these tools provide version management and contextual feedback systems, which are indispensable for rapid review and approval of your hard work.</p>
<h2>Handling change requests</h2>
<p>Change requests are usually good and constructive feedback for your designs. The client may have envisaged something different than what you have put up. Allow them to communicate what they want.</p>
<ul>
<li>Make sure every change request is officially documented. If a client asks you over Skype or phone to make a certain change, ask them to put it in wrtiting and send an email.</li>
<li>Make a list of changes requested by the client and formally ask for a go-ahead before you commence the revision.</li>
<li>Most clients, in my experience, add new ideas and features when they see the first mockup. In most cases, you have to end up adding features or tweaking some parts of  your design. This could mean that you end up working extra hours for the same pay.  In the event that you have to add new features and functionality to your design than what had previously been agreed upon, be sure you are charging extra for your time.</li>
</ul>
<h2>Staying within the scope</h2>
<p>I am sure you and your client have agreed upon some Terms and Conditions before you commenced work on your project. Make sure you have communicated to the client that you will charge extra for any change in the scope of the project (i.e. addition of features).</p>
<ul>
<li>The client will, inevitably, come up with more ideas and request more changes during the entire process. But make sure that you stay within the scope originally defined during the beginning of project. If you are exceeding the scope, make sure you update the invoices.</li>
<li>Feedback is good, but only if it does not make the deadlines impossible. Design changes can push the deadline of the project into months of delay &#8212; and when the delivery is delayed, it is the designer who is blamed. Therefore, in such cases you need to educate your client that further changes can be made post-launch and in order to deliver the product on time, it is essential to stick to the scope and timeframe. The key is to stick to the original timeline and helping the client limit the scope of the project.</li>
</ul>
<h2>Get them to sign a confirmation</h2>
<p>Get it on paper and lay ground rules for future changes to design. It may not seem very important at the time, but it is vital that you get written (as opposed to verbal) approval of your designs.</p>
<p>The design will inevitably be changed in the future, during build and after launch. So make sure that in the future, the design changes are paid for. There should be a clear provision in your contract that allows additional design changes after the sign-off to be fully payable.</p>
<h2>Change requests after sign-off</h2>
<p>So often clients change their minds after they have said &#8216;yes&#8217; to the design. The more they look at the designs, the more things they want changed.</p>
<p>If the changes are a must, you should be able to charge your clients for every change you make after the design has been approved &#8212; by the hour.</p>
<h2>Conclusion</h2>
<p>Feedback and approval are complex procedures and must be handled with a lot of professionalism. It is vital for complex design projects to have an effective communication platform. In my experience, having a lean and well-thought-out review and approval process can save a lot of time and in most cases, help you deliver client&#8217;s requirements on time.</p>
<p>Please feel free to share your experiences and opinion. How do you ensure timely sign-off from your clients?</p>
<h2>External resources</h2>
<ul>
<li><span style="direction: ltr;">Designm.ag has </span><a style="direction: ltr;" title="10 Rules and Resources for Better Design Feedback" href="http://designm.ag/design/better-feedback/" target="_blank">10 Rules and Resources for Better Design Feedback</a><span style="direction: ltr;">.</span></li>
<li>Paul Boag, the guru, has written <a href="http://24ways.org/2007/10-ways-to-get-design-approval" rel="bookmark">10 Ways To Get Design Approval</a> at 24ways.org.</li>
<li>Paul Boag has his SXSW presentation about <a title="Pain free design sign off" href="http://boagworld.com/bites/pain-free/" target="_blank">Pain Free Design Sign-Off</a> at Boagworld.</li>
<li>SmashingMagazine provides invaluable advice in <a href="http://www.smashingmagazine.com/2011/05/06/how-to-get-sign-off-for-your-designs/">How To Get Sign-Off For Your Designs</a>, once again, by Paul Boag.</li>
</ul>
<ol class="footnotes"><li id="footnote_0_550" class="footnote"><span style="direction: ltr;">Mashable has a great list of </span><a style="direction: ltr;" title="10 Tools for Getting Web Design Feedback" href="http://mashable.com/2010/07/22/web-design-feedback-tools/">Web Based Tools for Design Feedback</a><span style="direction: ltr;">.</span><span style="direction: ltr;"></li></ol><div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/azadcreative?a=QZRhY0eZ3jg:7NUog9-0ncs:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/azadcreative?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/azadcreative?a=QZRhY0eZ3jg:7NUog9-0ncs:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/azadcreative?i=QZRhY0eZ3jg:7NUog9-0ncs:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/azadcreative?a=QZRhY0eZ3jg:7NUog9-0ncs:gIN9vFwOqvQ"><img src="http://feeds.feedburner.com/~ff/azadcreative?i=QZRhY0eZ3jg:7NUog9-0ncs:gIN9vFwOqvQ" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/azadcreative?a=QZRhY0eZ3jg:7NUog9-0ncs:F7zBnMyn0Lo"><img src="http://feeds.feedburner.com/~ff/azadcreative?i=QZRhY0eZ3jg:7NUog9-0ncs:F7zBnMyn0Lo" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/azadcreative/~4/QZRhY0eZ3jg" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://azadcreative.com/2011/10/getting-the-client-to-sign-off-your-designs/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://azadcreative.com/2011/10/getting-the-client-to-sign-off-your-designs/</feedburner:origLink></item>
	</channel>
</rss><!--
Hyper cache file: bb3387fec74e0d109f29567725237f9f
Cache created: 02-02-2012 16:12:17
HCE Version: 0.9.8
Load AVG: 4.26(5)
-->

