<?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>letscounthedays &#187; Tutorial</title>
	<atom:link href="http://www.shayhowe.com/category/tutorial/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.shayhowe.com</link>
	<description>The Online Portfolio of Creative Professional Shay Howe</description>
	<lastBuildDate>Fri, 02 Dec 2011 15:15:32 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>CSS3 Support with Modernizr</title>
		<link>http://www.shayhowe.com/tutorial/complete-css3-support/</link>
		<comments>http://www.shayhowe.com/tutorial/complete-css3-support/#comments</comments>
		<pubDate>Wed, 09 Mar 2011 03:59:37 +0000</pubDate>
		<dc:creator>Shay Howe</dc:creator>
				<category><![CDATA[Tutorial]]></category>
		<category><![CDATA[CSS3]]></category>
		<category><![CDATA[Web Design]]></category>

		<guid isPermaLink="false">http://www.shayhowe.com/?p=1169</guid>
		<description><![CDATA[Make the most of CSS3 by designing with the latest and greatest technology on browsers with CSS3 support while providing alternative fallbacks for browsers without CSS3 support.


Related posts:<ol><li><a href='http://www.shayhowe.com/tutorial/css3-animated-owl-tutorial/' rel='bookmark' title='Permanent Link: CSS3 Animated Owl Tutorial'>CSS3 Animated Owl Tutorial</a></li>
<li><a href='http://www.shayhowe.com/web-design/html5-css3/' rel='bookmark' title='Permanent Link: HTML5 &#038; CSS3 Development Talks'>HTML5 &#038; CSS3 Development Talks</a></li>
<li><a href='http://www.shayhowe.com/tutorial/hyperlink-css-attribute-selectors/' rel='bookmark' title='Permanent Link: Hyperlink CSS Attribute Selectors'>Hyperlink CSS Attribute Selectors</a></li>
</ol>]]></description>
			<content:encoded><![CDATA[<h1><a href="/tutorial/complete-css3-support/" title="Designing with CSS3 Support and Alternative Fallbacks">Designing with CSS3 Support &amp; Alternative Fallbacks</a></h1>

<img src="http://www.shayhowe.com/wp-content/themes/letscounthedays/articles/complete-css3-support/css-fallbacks.jpg" alt="Designing with CSS3 Support and Alternative Fallbacks" />

<p><abbr title="Cascading Style Sheets 3">CSS3</abbr> is a hot topic these days. Designers and developers are starting to widely utilize CSS3 and new tutorials are popping up nearly everyday. As a designer it is an exciting time to be at the forefront of it&#8217;s development. There are, however, many designers and developers that see browser support for CSS3 as insufficient. In their defense, not all clients are open to letting their websites look moderately different from browser to browser.</p>

<p>Thankfully Faruk Ate&#351;, Paul Irish and Alex Sexton have developed a script, <a href="http://www.modernizr.com/" title="Modernizr" rel="nofollow">Modernizr</a>, that detects CSS3, as well as HTML5, browser support and allows us to take advantage of CSS3 in compatible browsers while providing alternative fallbacks to incompatible browsers. The script adds a unique class to the <code>html</code> element of a page specific to each CSS3 property supported. As an example, in browsers that support CSS3 border radius a class of <code>borderradius</code> will be added to the <code>html</code> element, while in browsers without support for CSS3 border radius a class of <code>no-borderradius</code> will be added to the <code>html</code> element. This opens up a world of opportunities, giving us just what we need to fully implement CSS3 without worrying about incompatible browsers.</p>

<a class="btn" href="http://www.shayhowe.com/wp-content/themes/letscounthedays/articles/complete-css3-support/" title="View a Sample CSS3 Menu with Fallbacks" rel="nofollow"><span>View a Sample CSS3 Menu with Fallbacks</span></a>
<p class="special no-top">Best viewed in Safari or Chrome.</p><span id="more-1169"></span>

<h4>Putting Modernizr and CSS3 to Use</h4>

<p>I built the following sample navigation to demonstrate how Modernizr works with CSS3 and how to build out fallbacks for incompatible browsers. With the help of Modernizr, the benefits of this navigation include:</p>

<ul>
<li>100% compatible with all browsers</li>
<li>No images and no flash for modern browsers with CSS3 support</li>
<li>One image for depreciated browsers without CSS3 support</li>
</ul>

<h4>The Code</h4>

<h3>Step 1: The HTML Structure</h3>

<pre><code>&#60;!DOCTYPE HTML&#62;
&#60;html class="no-js" lang="en"&#62;
&#60;head&#62;
&#60;meta charset="utf-8" /&#62;
&#60;title&#62;CSS3 Navigation&#60;/title&#62;
&#60;link rel="stylesheet" href="style.css" type="text/css" /&#62;
&#60;/head&#62;
&#60;body&#62;

&#60;h1&#62;Sample Navigation&#60;/h1&#62;
&#60;ul&#62;
&#60;li&#62;&#60;a href="#">Home&#60;/a&#62;&#60;/li&#62;
&#60;li&#62;&#60;a href="#">About Us&#60;/a&#62;&#60;/li&#62;
&#60;li&#62;&#60;a href="#">Our Services&#60;/a&#62;&#60;/li&#62;
&#60;li class="last"&#62;&#60;a href="#"&#62;Contact Us&#60;/a&#62;&#60;/li&#62;
&#60;/ul&#62;

&#60;script src="modernizr-1.7.min.js"&#62;&#60;/script&#62;
&#60;/body&#62;
&#60;/html&#62;
</code></pre>

<p>The <abbr title="HyperText Markup Language">HTML</abbr> here is pretty cut and dry. We have the basic structure of an HTML5 document, including a heading and an unordered list with a set of links. A few things to note here:</p>

<ul>
<li>The <code>no-js</code> class on the <code>html</code> element</li>
<li>The <code>last</code> class on the last <code>li</code> element within the unordered list</li>
<li>The Modernizr script included at the bottom of the document</li>
</ul>

<p>Once we include the Modernizr script at the bottom of the document we need to set it into action with adding the <code>no-js</code> class to the <code>html</code> element. The <code>last</code> class on the last <code>li</code> element is in place for older browsers which do no support the <code>:last-child</code> pseudo-class.</p>

<h3>Step 2: Adding General Styles to the Heading</h3>

<pre><code>h1 { 
color: #222;
font-size: 15px; 
line-height: 36px; 
margin: 0;
padding: 0 10px; }
</code></pre>

<p>Before we jump into the CSS3 and specific property support we declare the general styles for the heading.</p>

<h3>Step 3: Declaring Heading Styles for Browsers with CSS3 Support</h3>

<pre><code>.cssgradients h1 { 
background: -moz-linear-gradient(#f5f5f5, #d9d9d9);
background: -webkit-gradient(linear, left top, left bottom,
	    from(#f5f5f5), to(#d9d9d9));
border: 1px solid #bbb;
-moz-border-radius: 4px 4px 0 0; 
-webkit-border-radius: 4px 4px 0 0;
border-radius: 4px 4px 0 0;
-moz-box-shadow: inset 0 1px 0 #fff; 
-webkit-box-shadow: inset 0 1px 0 #fff;
box-shadow: inset 0 1px 0 #fff;
height: 34px;
width: 198px; }
</code></pre>

<p>First up we use the Modernizr class of <code>cssgradients</code> to target browsers who specifically support this CSS3 property. Equally, we could use a <code>borderradius</code> or <code>boxshadow</code> class since we will be using these properties as well. We will be using CSS3 gradients later on so we will choose the <code>cssgradients</code> class to keep everything consistent.</p>

<p>Within this CSS3 please note that we are using the old WebKit gradient syntax. The new WebKit gradient syntax will mirror that of the Mozilla syntax however at the time of publish the new syntax is only viewable within the WebKit Nightly builds.</p>

<h3>Step 4: Declaring Heading Styles for Browsers without CSS3 Support</h3>

<pre><code>.no-cssgradients h1 { 
background: url("bg.png") 0 0 no-repeat;
height: 36px;
width: 200px; }
</code></pre>

<p>To target browsers without CSS3 gradient support we use the <code>no-cssgradients</code> class. In place of all of the CSS3 declarations we used before we now use a background image instead.</p>

<h3>Step 5: Adding General Styles to the Unordered List and Links</h3>

<pre><code>ul { 
list-style: none;
margin: 0;
padding: 0;
width: 220px; }

a {
border: 1px solid #bbb; 
border-bottom: 1px solid #ccc;
border-width: 0 1px 1px 1px;
color: #3690cf;
display: block; 
font-weight: bold; 
line-height: 30px; 
padding: 0 10px; 
text-decoration: none;
-moz-transition: all .25s ease-in-out;
-webkit-transition: all .25s ease-in-out;
transition: all .25s ease-in-out; }

a:hover {
background: #fff;
color: #222;
padding: 0 10px 0 18px; }
</code></pre>

<p>As with our heading before, we will declare all of the general styles for the unordered list and links. These styles apply to all browsers and are unspecific to browsers with or witout CSS3 support.</p>

<p>Within the <code>a</code> element CSS rule set we use the CSS3 <code>transition</code> property. This property will be ignored by browsers that do not support it however using it here will prevent us from having to use another CSS rule set specific for CSS3 links. Additionally it is worth noting that the <code>transition</code> value is set to <code>all</code>, which will transition all of our priorities including <code>color</code>, <code>background-color</code>, <code>padding</code>, <code>opacity</code>, and more.</p>

<h3>Step 6: Declaring Unordered List and Link Styles for Browsers with CSS3 Support</h3>

<pre><code>.cssgradients li {
background: -moz-linear-gradient(#fff, #f2f5f5);
background: -webkit-gradient(linear, left top, left bottom,
	    from(#fff), to(#f2f5f5));
position: relative; }

.cssgradients a:before {
border-bottom: 4px solid transparent;
border-left: 4px solid #666;
border-top: 4px solid transparent;
content: "";
display: block;
height: 0;
left: 10px;
opacity: 0;
position: absolute;
top: 11px;
width: 0; }

.cssgradients a:hover::before {
opacity: 1; }

.cssgradients li:last-child a {
border: 1px solid #bbb;
border-width: 0 1px 1px 1px;
-moz-border-radius: 0 0 4px 4px;
-webkit-border-radius: 0 0 4px 4px;
border-radius: 0 0 4px 4px; }
</code></pre>

<p>Keeping in pace with our <code>cssgradients</code> class for CSS3 support we declare all of our styles for the unordered list and links. Here we kick things up a bit with different pseudo classes and elements, along with a combining the <code>:before</code> pseudo-element with the <code>:hover</code> pseudo-class.</p>

<p>We start this block of code by declaring our styles for the <code>li</code> element, including a CSS3 gradient and a <code>position</code> of <code>relative</code>. You may wonder why we are declaring a gradient background on the <code>li</code> element and not the <code>a</code> element. The reason for this is because CSS3 background gradients are seen as background images and we are currently unable to transition a background image within CSS3. What we have done is declared a background gradient on the <code>li</code> element and then declared a solid background color to the <code>a</code> element upon hover. This way the <code>a</code> elements background will transition on top of the <code>li</code> elements background gradient giving the impression that the gradient is smoothly transitioning into a solid white. The <code>relative</code> position on the <code>li</code> element is necessary to properly position our arrow, which we will build next with all CSS.</p>

<p>We use the <code>:before</code> pseudo-element to attach the arrow to the beginning of all of the links. Building the arrow using CSS borders is not too difficult and is actually pretty fascinating. We do set an <code>opacity</code> of <code>0</code> to the arrow to hide it until hovered upon. We then combine the <code>:before</code> pseudo-element with the <code>:hover</code> pseudo-class to display arrow when a link is hovered over by setting the <code>opacity</code> to <code>1</code>. Right now we could technically combine the two rule sets into one under the <code>.cssgradients a:hover::before</code> selector and omit the <code>opacity</code> property altogether since the <code>transition</code> property does not yet apply contents of the <code>:before</code> pseudo-element. However we have left them separate because <code>transition</code> support for the <code>:before</code> pseudo-element <a href="http://www.w3.org/TR/css3-transitions/#transitions-" title="CSS3 Transition Support" rel="nofollow">is coming</a> and when available the <code>opacity</code> property will provide the perfect transition.</p>

<p>Lastly, we use the <code>:last-child</code> pseudo-class to select the last <code>li</code> element and round the bottom corners and change the border.</p>

<h3>Step 7: Declaring Unordered List and Link Styles for Browsers without CSS3 Support</h3>

<pre><code>
.no-cssgradients a {
background: url("bg.png") 0 -36px no-repeat;
height: 30px; }

.no-cssgradients a:hover {
background: url("bg.png") 0 -66px no-repeat; }

.no-cssgradients li.last a {
background: url("bg.png") 0 -96px no-repeat;
border: none;
height: 31px; }

.no-cssgradients li.last a:hover {
background: url("bg.png") 0 -127px no-repeat; }
</code></pre>

<p>Finally to wrap everything up, and to provide a fallback for browsers without CSS3 support, we use the <code>no-cssgradients</code> class. Using this class we use a background image fallback for the CSS3 gradients, border radius, and pseudo classes and elements.</p>

<h4>Wrapping Up</h4>

<a class="btn" href="http://www.shayhowe.com/wp-content/themes/letscounthedays/articles/complete-css3-support/" title="View a Sample CSS3 Menu with Fallbacks" rel="nofollow"><span>View a Sample CSS3 Menu with Fallbacks</span></a>
<p class="special no-top">Best viewed in Safari or Chrome.</p>

<p>Hopefully this short tutorial has opened you up on how to use CSS3 while still providing support for older browsers. Modernizr is a fantastic tool and can be used far wider than what has been outlined here.</p>

<p>Related posts:<ol><li><a href='http://www.shayhowe.com/tutorial/css3-animated-owl-tutorial/' rel='bookmark' title='Permanent Link: CSS3 Animated Owl Tutorial'>CSS3 Animated Owl Tutorial</a></li>
<li><a href='http://www.shayhowe.com/web-design/html5-css3/' rel='bookmark' title='Permanent Link: HTML5 &#038; CSS3 Development Talks'>HTML5 &#038; CSS3 Development Talks</a></li>
<li><a href='http://www.shayhowe.com/tutorial/hyperlink-css-attribute-selectors/' rel='bookmark' title='Permanent Link: Hyperlink CSS Attribute Selectors'>Hyperlink CSS Attribute Selectors</a></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://www.shayhowe.com/tutorial/complete-css3-support/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>CSS3 Animated Owl Tutorial</title>
		<link>http://www.shayhowe.com/tutorial/css3-animated-owl-tutorial/</link>
		<comments>http://www.shayhowe.com/tutorial/css3-animated-owl-tutorial/#comments</comments>
		<pubDate>Tue, 25 Jan 2011 03:58:07 +0000</pubDate>
		<dc:creator>Shay Howe</dc:creator>
				<category><![CDATA[Tutorial]]></category>
		<category><![CDATA[CSS3]]></category>
		<category><![CDATA[Inspiration]]></category>

		<guid isPermaLink="false">http://www.shayhowe.com/?p=1153</guid>
		<description><![CDATA[Learn how to make the most of the new CSS3 transforms, transitions, and keyframe animations with this tutorial on how to create an animated owl with HTML and CSS. No Flash or JavaScript necessary.


Related posts:<ol><li><a href='http://www.shayhowe.com/tutorial/complete-css3-support/' rel='bookmark' title='Permanent Link: CSS3 Support with Modernizr'>CSS3 Support with Modernizr</a></li>
<li><a href='http://www.shayhowe.com/web-design/html5-css3/' rel='bookmark' title='Permanent Link: HTML5 &#038; CSS3 Development Talks'>HTML5 &#038; CSS3 Development Talks</a></li>
<li><a href='http://www.shayhowe.com/inspiration/handimals-stunning-hand-painting-illusions/' rel='bookmark' title='Permanent Link: Stunning Hand Painting Illusions'>Stunning Hand Painting Illusions</a></li>
</ol>]]></description>
			<content:encoded><![CDATA[<h1><a href="/tutorial/css3-animated-owl-tutorial/" title="CSS3 Transforms, Transitions, and Animations in Action">CSS3 Transforms, Transitions, and Animations in Action</a></h1>

<img src="http://www.shayhowe.com/wp-content/themes/letscounthedays/articles/css3-owl/css3-animation.jpg" alt="CSS3 Transforms, Transitions, and Animations in Action" />

<p>As with any inquisitive web designer or developer I am always looking for ways to experiment with the latest <abbr title="HyperText Markup Language">HTML</abbr> and <abbr title="Cascading Style Sheets">CSS</abbr> source. This past spring I got engaged and set off to create a <a href="http://www.shayandbecky.com" title="Shay and Becky">wedding website</a>, providing me just the opportunity to play with <abbr title="Cascading Style Sheets 3">CSS3</abbr> transforms, transitions, and animations.</p>

<p>My fianc&#233;  loves owls so my idea was to have an owl that moved his eyes every so often and when hovered over would raise his wings while a few light rays would spin in the background. A little excessive? Probably. Necessary? Nope. However, exactly what I was looking to do with CSS3 transforms, transitions, and animations.</p>

<a class="btn" href="http://www.shayhowe.com/wp-content/themes/letscounthedays/articles/css3-owl/" title="CSS3 Demo" rel="nofollow"><span>View the Demo</span></a>
<p class="special no-top">Best viewed in Safari or Chrome.</p><span id="more-1153"></span>

<p>CSS3 transforms, transitions, and animations altogether are not yet wildly supported. (Transforms themselves are fairly well supported, transitions are on the rise, and animations are currently only available within webkit browsers.) The idea was to create something that was amusing for users that could view it but something that would not limit the users who could not.</p>

<h4>The Code</h4>

<h3>Step 1: The HTML Structure</h3>

<pre><code>&#60;a id="owl" href="#"&#62;
&#60;img id="rays" src="rays.png" alt="Rays" /&#62;
&#60;img id="bod" src="owl.png" alt="Owl" /&#62;
&#60;img id="rt" class="wing" src="rt-wing.png" alt="Right Wing" /&#62;
&#60;img id="lt" class="wing" src="lt-wing.png" alt="Left Wing" /&#62;
&#60;img id="eyes" src="eyes.gif" alt="Eyes" /&#62;
&#60;/a&#62;
</code></pre>

<p>The HTML is about straight forward as it gets. An <code>a</code> element wrapping several images. The images each have a unique ID and are broken out into the background rays, the owls body, a right wing, a left wing, and then the owls eyes. We will use CSS to position them correctly and add in all of the embellishments. For now, note how they are vertically stacked from the furtherest image back at the top, the rays, to the foremost front image at the bottom, the eyes.</p>

<h3>Step 2: Stylizing the Link within CSS</h3>

<pre><code>a#owl {
display: block;
height: 210px;
margin: 0 auto;
position: relative;
width: 210px; }

#owl img {
border: none;
position: absolute; }
</code></pre>

<p>The CSS starts off with setting the dimensions of the <code>a</code> element and setting the position to relative so that we can absolutely position all of the containing images. Since all of the images will be absolutely position we create a default style for all of them as well.</p>

<h3>Step 3: Positioning All of the Images with CSS</h3>

<pre><code>#owl #eyes {
left: 81px;
top: 74px; }

#owl #lt {
left: 65px;
top: 98px; }

#owl #rt {
left: 128px;
top: 98px; }

#owl #bod {
left: 70px;
top: 58px; }

#owl #rays {
left: 0;
top: 0; }
</code></pre>

<p>Easy enough, we set positions for all of the images within the <code>a</code> element.</p>

<h3>Step 4: Moving the Wings with CSS Transforms and Transitions</h3>

<pre><code>#owl #lt {
left: 65px;
top: 98px;
-webkit-transform-origin: top right;
-moz-transform-origin: top right;
-o-transform-origin: top right;
transform-origin: top right; }

#owl #rt {
left: 128px;
top: 98px;
-webkit-transform-origin: top left;
-moz-transform-origin: top left;
-o-transform-origin: top left;
transform-origin: top left; }

#owl .wing {
-webkit-transition: all .4s ease-in-out;
-moz-transition: all .4s ease-in-out;
transition: all .4s ease-in-out; }

#owl:hover #lt {
-webkit-transform: rotate(30deg);
-moz-transform: rotate(30deg);
-o-transform: rotate(30deg);
transform: rotate(30deg); }

#owl:hover #rt {
-webkit-transform: rotate(-30deg);
-moz-transform: rotate(-30deg);
-o-transform: rotate(-30deg);
transform: rotate(-30deg); }
</code></pre>

<p>We add a CSS <code>transform</code> property within the links hover attribute so that the wings only change position when the owl is hovered over. Since we want each wing, left and right, to rotate from a different origin we declare the the <code>transform-origin</code> within each individual wings ID. From here the wings will pop up and down, however we want the wings to raise and fall smoothly for a more lively feel. To accomplish this we use the <code>.wing</code> class and create a CSS <code>transition</code>. Within our CSS transition property we set <code>all</code> of the properties to transition at a duration of <code>.4</code> seconds with a timing function of <code>ease-in-out</code> so that the wings move gradually. Now the wings raise and fall naturally.</p>

<h3>Step 5: Animating the Rays with CSS Transitions and Animations</h3>

<pre><code>@-webkit-keyframes spin {
0% {
-webkit-transform: rotate(0deg);
-moz-transform: rotate(0deg);
-o-transform: rotate(0deg);
transform: rotate(0deg); }
100% { 
-webkit-transform: rotate(360deg);
-moz-transform: rotate(360deg);
-o-transform: rotate(360deg);
transform: rotate(360deg); }
}

#owl #rays {
-webkit-animation: spin 10s infinite linear;
left: 0;
opacity: 0;
top: 0;
-webkit-transition: all .4s ease-in-out;
-moz-transition: all .4s ease-in-out;
transition: all .4s ease-in-out; }

#owl:hover #rays {
opacity: 1; }
</code></pre>

<p>First we change the rays <code>opacity</code> to hide them until hover. Then we add a CSS <code>transition</code> property to gradually fade them in and out when hovered. Similar to how we did with the wings. The only difference this time is that we are transitioning the <code>opacity</code> property in place of the <code>transform</code> property. To get the rays to spin we create a CSS3 <code>keyframes</code> animation titled <code>spin</code>. The animation is called within the rays and set to infinitely rotate the rays image from <code>0</code> degrees to <code>360</code> degrees, completing a 360 rotation every <code>10</code> seconds.</p>

<h4>Completed!</h4>

<p>Now you should have a fully functional owl.</p>

<a class="btn" href="http://www.shayhowe.com/wp-content/themes/letscounthedays/articles/css3-owl/" title="CSS3 Demo" rel="nofollow"><span>View the Demo</span></a>
<p class="special no-top">Best viewed in Safari or Chrome.</p>

<h4>Additional Notes</h4>

<p>You can download a vector version of the owl from <a href="http://www.shutterstock.com/pic-57017636/stock-vector-owl-with-mortar-board-hat.html" title="Owl" rel="nofollow">Shutterstock</a>. The eyes are an animated GIF, not CSS animations. The eyes certainly could be developed using CSS animations however for this demonstration I wanted to keep it fairly scaled back. Lastly, if you are curious to learn more about CSS3 I would highly recommend picking up Andy Clarke&#8217;s <a href="http://hardboiledwebdesign.com/" title="Hardboiled Web Design" rel="nofollow">Hardboiled Web Design</a> or the A Book Apart <a href="http://books.alistapart.com/products/css3-for-web-designers" title="CSS3 For Web Designers" rel="nofollow">CSS3 for Web Designers</a> by Dan Cederholm.</p>

<p>Related posts:<ol><li><a href='http://www.shayhowe.com/tutorial/complete-css3-support/' rel='bookmark' title='Permanent Link: CSS3 Support with Modernizr'>CSS3 Support with Modernizr</a></li>
<li><a href='http://www.shayhowe.com/web-design/html5-css3/' rel='bookmark' title='Permanent Link: HTML5 &#038; CSS3 Development Talks'>HTML5 &#038; CSS3 Development Talks</a></li>
<li><a href='http://www.shayhowe.com/inspiration/handimals-stunning-hand-painting-illusions/' rel='bookmark' title='Permanent Link: Stunning Hand Painting Illusions'>Stunning Hand Painting Illusions</a></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://www.shayhowe.com/tutorial/css3-animated-owl-tutorial/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Hyperlink CSS Attribute Selectors</title>
		<link>http://www.shayhowe.com/tutorial/hyperlink-css-attribute-selectors/</link>
		<comments>http://www.shayhowe.com/tutorial/hyperlink-css-attribute-selectors/#comments</comments>
		<pubDate>Wed, 31 Mar 2010 23:26:12 +0000</pubDate>
		<dc:creator>Shay Howe</dc:creator>
				<category><![CDATA[Tutorial]]></category>
		<category><![CDATA[Usability]]></category>
		<category><![CDATA[Web Design]]></category>

		<guid isPermaLink="false">http://www.shayhowe.com/?p=1009</guid>
		<description><![CDATA[CSS attribute selectors provide an additional method of setting CSS styles outside of ids and classes. Learn how an attribute selector, when used with a hyperlink, can increase your clicks.


Related posts:<ol><li><a href='http://www.shayhowe.com/tutorial/complete-css3-support/' rel='bookmark' title='Permanent Link: CSS3 Support with Modernizr'>CSS3 Support with Modernizr</a></li>
<li><a href='http://www.shayhowe.com/seo/6-visual-media-optimization-mistakes/' rel='bookmark' title='Permanent Link: 6 Visual Optimization Mistakes'>6 Visual Optimization Mistakes</a></li>
<li><a href='http://www.shayhowe.com/seo/top-10-keyword-research-tips/' rel='bookmark' title='Permanent Link: Top 10 Keyword Research Tips'>Top 10 Keyword Research Tips</a></li>
</ol>]]></description>
			<content:encoded><![CDATA[<link rel="stylesheet" href="/wp-content/themes/letscounthedays/articles/hyperlink-css-attribute-selectors/links.css" type="text/css" media="screen" />

<h1><a href="/tutorial/hyperlink-css-attribute-selectors/" title="Document Links Styled with CSS Attribute Selectors">Document Links Styled with CSS Attribute Selectors</a></h1>

<img src="http://www.shayhowe.com/wp-content/themes/letscounthedays/articles/hyperlink-css-attribute-selectors/document-css-links.jpg" alt="Document Links Styled with CSS Attribute Selectors" />

<p>With <abbr title="Cascading Style Sheets 3">CSS3</abbr> gaining popularity so are <abbr title="Cascading Style Sheets">CSS</abbr> attribute selectors. CSS attribute selectors have been around for some time however CSS3 adds more selectors to the mix bringing new light to subject. Increased browser support, with nearly every major browser currently supporting attribute selectors <i>(Internet Explorer 6 still struggles)</i>, has also added to the popularity.</p>

<p>So what benefit do CSS attribute selectors have to adding style to document links? CSS attribute selectors allow you to quickly and easily add styles to document links while keeping your code clean and clutter free. Ultimately, the more attractive looking your links are the more clicks they will receive.</p><span id="more-1009"></span>

<h4>PDF Hyperlink Example</h4>

<h3>HTML Code</h3>
<pre><code>&#60;a href="#.pdf" title="PDF File Link"&#62;PDF File&#60;/a&#62;</code></pre>

<h3>CSS Code</h3>
<pre><code>a[href$=".pdf"] {
	background: url(acrobat.gif) no-repeat left center;
	padding-left: 20px;
}
</code></pre>

<h3>Output</h3>
<p><a href="#.pdf" title="PDF File External Link" rel="nofollow">PDF File</a></p>

<h4>Breaking Down the Attribute Selector</h4>

<p>You start your CSS just as if your were to style any other hyperlink. Directly following the <code>a</code> element comes the attribute selector, in this case <code>[href$=".pdf"]</code>. The attribute selector will always be wrapped in <code>[]</code> brackets and will always sit right next to the element to which it applies to without any spaces in-between the two.</p>

<p>Within the <code>[]</code> brackets the <code>href</code> attribute is declared as we are specifically targeting hyperlinks. Next we insert the <code>$=</code> selector, which specifies that we only want to target hyperlinks ending with the file format value to follow. For this example we are using a PDF document making the value <code>.pdf</code>, which is wrapped in <code>""</code> quotations.</p>

<p>To target any other type of document just change the value to what ever file extension you wish. As an example, to target Microsoft Word documents just change the <code>.pdf</code> value to <code>.doc</code>.</p>

<h4>Taking It a Step Further</h4>

<p>Chris Coyier from CSS-Tricks has put together and outstanding resource on CSS attribute selectors in his article &#8220;<a href="http://css-tricks.com/attribute-selectors/" title="The Skinny on CSS Attribute Selectors" rel="nofollow">The Skinny on CSS Attribute Selectors</a>&#8221;. To learn the full potential of CSS attribute selectors this article is a must read as it does a great job of breaking them down for you.</p>

<p>If you are worried about the lack of support for Internet Explorer 6 you can, with a some additional work, use CSS attribute selectors via jQuery. Zac Gordon has written a great tutorial, &#8220;<a href="http://dabrook.org/blog/articles/selecting-and-styling-external-links-or-pdf-ppts-and-other-files-by-extensi/" title="Selecting and Styling External Links, PDFs, PPTs, and other links by file extension using jQuery" rel="nofollow">Selecting and Styling External Links, PDFs, PPTs, and other links by file extension using jQuery</a>&#8221;, on how to do so.</p>

<p>Adding an icon to your document links is a great way to quickly draw more attention to the link. InstantShift has put together an article packed full of icons. If you would like some to use on your website check out the article at &#8220;<a href="http://www.instantshift.com/2009/08/19/75-free-useful-icon-sets-for-web-designers-and-developers/" title="75 Free Useful Icon Sets for Web Designers and Developers" rel="nofollow">75 Free Useful Icon Sets for Web Designers and Developers</a>&#8221;.</p>

<p>Related posts:<ol><li><a href='http://www.shayhowe.com/tutorial/complete-css3-support/' rel='bookmark' title='Permanent Link: CSS3 Support with Modernizr'>CSS3 Support with Modernizr</a></li>
<li><a href='http://www.shayhowe.com/seo/6-visual-media-optimization-mistakes/' rel='bookmark' title='Permanent Link: 6 Visual Optimization Mistakes'>6 Visual Optimization Mistakes</a></li>
<li><a href='http://www.shayhowe.com/seo/top-10-keyword-research-tips/' rel='bookmark' title='Permanent Link: Top 10 Keyword Research Tips'>Top 10 Keyword Research Tips</a></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://www.shayhowe.com/tutorial/hyperlink-css-attribute-selectors/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Top 10 Keyword Research Tips</title>
		<link>http://www.shayhowe.com/seo/top-10-keyword-research-tips/</link>
		<comments>http://www.shayhowe.com/seo/top-10-keyword-research-tips/#comments</comments>
		<pubDate>Thu, 05 Mar 2009 04:00:52 +0000</pubDate>
		<dc:creator>Shay Howe</dc:creator>
				<category><![CDATA[SEO]]></category>
		<category><![CDATA[Tutorial]]></category>
		<category><![CDATA[Pay Per Click (PPC)]]></category>
		<category><![CDATA[Return On Investment (ROI)]]></category>
		<category><![CDATA[Search Engine Optimization (SEO)]]></category>

		<guid isPermaLink="false">http://www.shayhowe.com/?p=344</guid>
		<description><![CDATA[I have never heard anyone say that a website could have too much traffic, it is unheard of. People are always looking to obtain more traffic - and rightfully so. But how do you obtain large amounts of traffic?


Related posts:<ol><li><a href='http://www.shayhowe.com/seo/keyword-dos-and-donts/' rel='bookmark' title='Permanent Link: Keyword Do&#039;s and Don&#039;ts'>Keyword Do&#039;s and Don&#039;ts</a></li>
<li><a href='http://www.shayhowe.com/seo/are-meta-tags-important/' rel='bookmark' title='Permanent Link: Are Meta Tags Important?'>Are Meta Tags Important?</a></li>
<li><a href='http://www.shayhowe.com/seo/how-domains-relate-to-seo/' rel='bookmark' title='Permanent Link: How Domains Relate to SEO'>How Domains Relate to SEO</a></li>
</ol>]]></description>
			<content:encoded><![CDATA[<h1><a href="/tutorial/top-10-keyword-research-tips/">10 Keyword Research Tips to Maximize Your SEO Efforts</a></h1>

<p>I have never heard anyone say that a website could have too much traffic, it is unheard of. People are always looking to obtain more traffic - and rightfully so. But how do you obtain large amounts of traffic? Research shows that the majority of all traffic comes from search engines. And how do you show up in search engines? You target specific keywords and market your website or pages around these keywords. With this, ideally the more keywords you target the more traffic you will see. Follow these top 10 keyword research tips to make the most out of your targeted list of keywords.</p>

<img src="http://www.shayhowe.com/wp-content/themes/letscounthedays/articles/top-10-keywords/1.jpg" alt="Keyword Research" /><span id="more-344"></span>

<h3>1. Think like potential customers.</h3>
<p>To even begin developing a keyword list you need to know and understand how potential customers are going to search for your product or services. What may be relevant and a common understanding to you may be completely over the heads of your clientele. Technical or specific terms you use might not even be searched. Always think like a potential customer when developing keywords.</p>

<h3>2. Analysis any competitors.</h3>
<p>It is always a good idea to know who you are competing against. Doing so will provide you with insight not only to how your industry is being marketed online, but to also new keywords and descriptions you may have never even thought about. Visit competitors websites, check their code, and make sure that you are not leaving out anything critical.</p>

<h3>3. Use typos and misspellings.</h3>
<p>It is not uncommon for people misspell words and phrases in their searches. While you may not want to place misspelled words on your web page for rankings it is possible to run pay per click on these words, and they are often cheaper than the correct spelling. A good tool to use to locate common misspelled words and typos see <a href="http://www.searchspell.com/typo/" rel="nofollow" target="_blank">SearchSpell Typo</a>.</p>

<p><strong>Examples:</strong><br />
Calendar &gt; Calender<br />
Your &gt; You're<br />
Here &gt; Hear</p>

<h3>4. Use acronyms and abbreviations.</h3>
<p>Acronyms and abbreviations make up a large amount of search traffic, thus making it important for you to make sure that your not missing any keywords. Many keyword generators will miss out on acronyms and abbreviations so be sure that you are doing this yourself to uncover your full potential list of keywords.</p>

<p><strong>Examples:</strong><br />
9/11 &gt; September 11th<br />
SEO &gt; Search Engine Optimization<br />
PPC &gt; Pay Per Click</p>

<h3>5. Use multiple verbs.</h3>
<p>Everyone has a different mindset when it comes to searching, therefore you want to make sure that you are using a contrast of different verbs.</p>

<p><strong>Examples:</strong><br />
try to play<br />
trying to play<br />
try playing<br />
trying playing</p>


<h3>6. Use both plural and singular.</h3>
<p>Using both plural and singular keywords will easily magnify your list quickly. Most major search engines will take in to consideration plural and singular forms within organic results however keep in mind if running a pay per click campaign Yahoo Search Marketing does not while Google AdWords does.</p>

<p><strong>Examples:</strong><br />
mountain bike<br />
mountains bike<br />
mountain bikes<br />
mountains bikes</p>


<h3>7. Use compound, separated, hyphenated, and merged keywords.</h3>
<p>Users often search trying multiple variations of words and spellings looking for the right fit. To be sure you are not missing out on any terms or phrases research compound, separated, hyphenated, and merged keywords.</p>

<p><strong>Examples:</strong><br />
checkin &gt; check-in &gt; check in<br />
startup &gt; start-up &gt; start up<br />
lifesize &gt; life-size &gt; life size</p>


<h3>8. Use locations.</h3>
<p>One of the best ways to pick up traffic is to localize your keywords. If you are looking to pick up traffic on a national level create a few sub pages targeting localized keywords in the most popular areas. This will directly target your visitors and overall will increase your conversion rate if done correctly.</p>

<p><strong>Examples:</strong><br />
Phoenix web design<br />
Arizona SEO<br />
Chandler, AZ artist</p>


<h3>9. Use Adjectives</h3>
<p>Numerous users will use adjectives in addition to the main keywords. This is a fast way to pick up keywords and even spark an immediate interest with users.</p>

<p><strong>Examples:</strong><br />
Good, Better, Best<br />
Far, Further, Furthest<br />
Much, More, Most<br />
Little, Less, Least<br />
or Free, Cheap, Amazing, Pretty, New</p>


<h3>10. Refine list.</h3>
<p>After you have built your keyword list its quite possible that your list is far too big and contains some keywords that can be tossed out. Narrow down the list by selecting a good mix of both broad and targeted keywords directly related to the subject and theme of your website. Keep these keywords as you will want to rank for both. Remove any keywords that are not relevant to your website or keywords that you don't have enough content to support. Remember it is always possible to go back and add content and keywords later as well.</p>

<h4>Get Started!</h4>
<p>You can begin your keyword research for free using any of the following tools. These are great resources to help you find new keywords or get your pay per click campaign off the ground. However one thing to keep in mind, since these resources are free it is likely that your competitors are using them as well. For the best results be a little creative and thing outside the box when at all possible.</p>

<ul class="square mar-btm">
<li><a href="https://adwords.google.com/select/KeywordToolExternal" rel="nofollow" target="_blank">Google Keyword Tool</a></li>
<li><a href="http://freekeywords.wordtracker.com/" rel="nofollow" target="_blank">Wordtracker Free Keyword Tool</a></li>
<li><a href="http://www.keyworddiscovery.com/search.html" rel="nofollow" target="_blank">Keyword Discovery Free Tool</a></li>
<li><a href="http://www.google.com/trends" rel="nofollow" target="_blank">Google Trends</a></li>
<li><a href="http://tools.seobook.com/keyword-tools/seobook/" rel="nofollow" target="_blank">SEO Book Keyword Suggestion Tool</a></li>
</ul>

<p>Related posts:<ol><li><a href='http://www.shayhowe.com/seo/keyword-dos-and-donts/' rel='bookmark' title='Permanent Link: Keyword Do&#039;s and Don&#039;ts'>Keyword Do&#039;s and Don&#039;ts</a></li>
<li><a href='http://www.shayhowe.com/seo/are-meta-tags-important/' rel='bookmark' title='Permanent Link: Are Meta Tags Important?'>Are Meta Tags Important?</a></li>
<li><a href='http://www.shayhowe.com/seo/how-domains-relate-to-seo/' rel='bookmark' title='Permanent Link: How Domains Relate to SEO'>How Domains Relate to SEO</a></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://www.shayhowe.com/seo/top-10-keyword-research-tips/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>iPhone Picture Messaging</title>
		<link>http://www.shayhowe.com/iphone/iphone-picture-messaging/</link>
		<comments>http://www.shayhowe.com/iphone/iphone-picture-messaging/#comments</comments>
		<pubDate>Tue, 03 Mar 2009 06:01:22 +0000</pubDate>
		<dc:creator>Shay Howe</dc:creator>
				<category><![CDATA[iPhone]]></category>
		<category><![CDATA[Tutorial]]></category>
		<category><![CDATA[Email]]></category>
		<category><![CDATA[Mobile]]></category>

		<guid isPermaLink="false">http://www.shayhowe.com/?p=282</guid>
		<description><![CDATA[It is amazing that with all of this technology and all of the advancements with cell phones over the past few years that the iPhone still does not have the capability to send picture messages. That is until now.


Related posts:<ol><li><a href='http://www.shayhowe.com/resource/working-with-a-bad-client/' rel='bookmark' title='Permanent Link: Working With A Bad Client'>Working With A Bad Client</a></li>
<li><a href='http://www.shayhowe.com/resource/smart-email-marketing/' rel='bookmark' title='Permanent Link: Smart Email Marketing'>Smart Email Marketing</a></li>
<li><a href='http://www.shayhowe.com/web-design/tips-for-designing-a-non-profit-website/' rel='bookmark' title='Permanent Link: Designing A Non-Profit Website'>Designing A Non-Profit Website</a></li>
</ol>]]></description>
			<content:encoded><![CDATA[<h1><a href="/tutorial/iphone-picture-messaging/">Sending Picture Messages with the iPhone</a></h1>

<img  class="top-rt" src="http://www.shayhowe.com/wp-content/themes/letscounthedays/articles/iphone-pic-msg/photo.jpg" alt="iPhone Picture Messaging" />

<p>It is amazing that with all of this technology and all of the advancements with cell phones over the past few years that the iPhone still does not have the capability to send picture messages. That is until now. The way it works is most mobile carriers offer free email to SMS/MMS gateways which forward email messages to phones. Therefore when you send an email from your iPhone to an email address specifically related to the recipients phone the email will be displayed on their phone as a picture or text message.</p>

<p>So how do you figure out what email corresponds to each phone? All you need to know is the person's cell phone number and carrier they are on. From here you will set up an email to be sent to [10-digit phone number]@[carrier gateway address]. Please refer to the table below for a listing major US carriers free email to SMS/MMS gateways.</p><span id="more-282"></span>


<table width="100%" cellpadding="6" cellspacing="6"><tr>
<td width="40%"><strong>Carrier</strong></td><td width="60%"><strong>Corresponding Email</strong></td>
</tr><tr>
<td>Alltel</td><td>1234567890@message.alltel.com</td>
</tr><tr>
<td valign="top">AT&amp;T (formerly Cingular)</td><td>1234567890@txt.att.net<br />1234567890@mms.att.net (MMS)<br />1234567890@cingularme.com</td>
</tr><tr>
<td>Boost Mobile</td><td>1234567890@myboostmobile.com</td>
</tr><tr>
<td>Nextel (now Sprint Nextel)</td><td>1234567890@messaging.nextel.com</td>
</tr><tr>
<td valign="top">Sprint PCS (now Sprint Nextel)</td><td>1234567890@messaging.sprintpcs.com<br />1234567890@pm.sprint.com (MMS)</td>
</tr><tr>
<td>T-Mobile</td><td>1234567890@tmomail.net</td>
</tr><tr>
<td valign="top">US Cellular</td><td>1234567890email.uscc.net (SMS)<br />1234567890@mms.uscc.net (MMS)</td>
</tr><tr>
<td valign="top">Verizon</td><td>1234567890@vtext.com<br />1234567890@vzwpix.com (MMS)</td>
</tr><tr>
<td>Virgin Mobile USA</td><td>1234567890@vmobl.com</td>
</tr></table>

<h3>For international and smaller US gateways please refer to:</h3>

<ul>
<li><a href="http://www.tech-faq.com/send-text-messages-free.shtml" rel="nofollow" target="_blank">Tech FAQ</a></li>
<li><a href="http://www.mutube.com/projects/open-email-to-sms/gateway-list/" rel="nofollow" target="_blank">Mutube</a></li>
</ul>

<p>Related posts:<ol><li><a href='http://www.shayhowe.com/resource/working-with-a-bad-client/' rel='bookmark' title='Permanent Link: Working With A Bad Client'>Working With A Bad Client</a></li>
<li><a href='http://www.shayhowe.com/resource/smart-email-marketing/' rel='bookmark' title='Permanent Link: Smart Email Marketing'>Smart Email Marketing</a></li>
<li><a href='http://www.shayhowe.com/web-design/tips-for-designing-a-non-profit-website/' rel='bookmark' title='Permanent Link: Designing A Non-Profit Website'>Designing A Non-Profit Website</a></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://www.shayhowe.com/iphone/iphone-picture-messaging/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

