<?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>Interaction Designer Craig Dennis &#187; CSS3</title>
	<atom:link href="http://craigmdennis.com/tag/css3/feed/" rel="self" type="application/rss+xml" />
	<link>http://craigmdennis.com</link>
	<description>The portfolio &#38; blog for Craig Dennis, an Interaction Designer based in South East England</description>
	<lastBuildDate>Thu, 23 Feb 2012 14:05:50 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=266</generator>
<xhtml:meta xmlns:xhtml="http://www.w3.org/1999/xhtml" name="robots" content="noindex" />
		<item>
		<title>Pickr &#8211; A web based app to randomly pick things</title>
		<link>http://craigmdennis.com/pickr-a-web-based-app-to-randomly-pick-things/</link>
		<comments>http://craigmdennis.com/pickr-a-web-based-app-to-randomly-pick-things/#comments</comments>
		<pubDate>Fri, 10 Feb 2012 22:59:11 +0000</pubDate>
		<dc:creator>Craig</dc:creator>
				<category><![CDATA[Apps]]></category>
		<category><![CDATA[Web Design]]></category>
		<category><![CDATA[CSS3]]></category>
		<category><![CDATA[Games]]></category>
		<category><![CDATA[HTML5]]></category>
		<category><![CDATA[iOS]]></category>
		<category><![CDATA[iPhone]]></category>
		<category><![CDATA[Web App]]></category>

		<guid isPermaLink="false">http://craigmdennis.com/?p=2415</guid>
		<description><![CDATA[A few weeks ago I decided to try and make a web app for iPhone. The idea was simple; to create an app to randomly pick items from a list. I will admit my reason for choosing this is not arbitrary, rather, born out of frustration of using the Tea Round app for drinking games.... <a class="more" href="http://craigmdennis.com/pickr-a-web-based-app-to-randomly-pick-things/">Read more &#8594;</a>]]></description>
			<content:encoded><![CDATA[<p>A few weeks ago I decided to try and make a web app for iPhone. The idea was simple; to create an app to randomly pick items from a list. I will admit my reason for choosing this is not arbitrary, rather, born out of frustration of using the Tea Round app for drinking games.</p>
<p>Tea round is far too constrained in terms of the inputs (no spaces are allowed) and adding new names / clearing names takes far too long. Not to mention that if you run two &#8216;spins&#8217; one after another, everyone is still included in the &#8216;spin&#8217;. Mine would be different. So I started to build a skeleton app using javascript and I had it working in an hour or two.</p>
<h3 class="divider">The styling replicates the look and feel of a native iOS app and can also run perfectly well on desktop or tablets.</h3>
<p><img class="size-full wp-image-2600 alignleft" title="pickr" src="http://uploads.craigmdennis.com/2012/02/pickr.png" alt="" width="357" height="540" />The end result is an app that looks like a native app; is cached on your device so you don&#8217;t need an internet connection &#8211; like a native app; and has the same interactions &amp; speed that you would expect from a native app.</p>
<h2>So how long before the native app is dead?</h2>
<p>Well the only thing stopping it is access to functions within the device itself. Things like the camera (although there are workarounds &#8211; see PicUp) or GPS, gyroscope / accelerometer. All you need is a secure API to access that information with the user&#8217;s consent (imagine a popup screen similar to the ones you get with Facebook authorisation for apps) and you can say bye bye to a lot of native apps. So how long until this happens? Well, probably a long time.</p>
<p>The app business is worth £billions now so allowing anyone to create their own and <em>not</em> have it pass through an app store (so the creator gets all the money) is unlikely. Also you will lose the curation of apps  so there won&#8217;t be any guidelines to adhere to in order to be published. So you could get any old Tom, Dick or Harry publishing a crappy app&#8230; like the internet then.</p>
<p>Really though, everything is eventually going to be web based. So it&#8217;s just a matter of time.</p>
<h2>Check it out</h2>
<p>Have a look at the app on your phone or tablet (or even in your browser) and use it.</p>
<p><a class="call-to-action" href="http://craigmdennis.com/apps/pickr" target="_blank">Try Pickr for free</a></p>
]]></content:encoded>
			<wfw:commentRss>http://craigmdennis.com/pickr-a-web-based-app-to-randomly-pick-things/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>How I made a jQuery plugin to use CSS3 animations</title>
		<link>http://craigmdennis.com/jquery-plugin-to-use-css3-animations/</link>
		<comments>http://craigmdennis.com/jquery-plugin-to-use-css3-animations/#comments</comments>
		<pubDate>Thu, 22 Dec 2011 20:38:23 +0000</pubDate>
		<dc:creator>Craig</dc:creator>
				<category><![CDATA[Web Design]]></category>
		<category><![CDATA[animate.css]]></category>
		<category><![CDATA[animations]]></category>
		<category><![CDATA[CSS3]]></category>
		<category><![CDATA[jQuery]]></category>
		<category><![CDATA[jQuery animateCSS]]></category>
		<category><![CDATA[Plugin]]></category>

		<guid isPermaLink="false">http://craigmdennis.com/?p=2532</guid>
		<description><![CDATA[A while back, I stumbled across a very nice set of CSS3 animations by Dan Eden which are plug and play. All you do is add a class (ideally with javascript) to the element you want to animate and it&#8230; well&#8230; animates. This is great! Dan recommends that you use $('.bouncy').addClass('bounceInDown'); to add the class with... <a class="more" href="http://craigmdennis.com/jquery-plugin-to-use-css3-animations/">Read more &#8594;</a>]]></description>
			<content:encoded><![CDATA[<p>A while back, I stumbled across a <a title="animate.css" href="http://daneden.me/animate/" target="_blank">very nice set of CSS3 animations </a>by Dan Eden which are plug and play. All you do is add a class (ideally with javascript) to the element you want to animate and it&#8230; well&#8230; animates.</p>
<p>This is great! Dan recommends that you use <code>$('.bouncy').addClass('bounceInDown');</code> to add the class with jQuery and this is the simplest method to get you started. In fact this is the method I used when I started my site redesign.</p>
<p>I quickly ran into issues though. Now, it wasn&#8217;t anything that animate.css does or doesn&#8217;t do. More the fact that there was no way to replace jQuery animations with the CSS3 fancy-pants ones.</p>
<h2>&#8220;What did you do?&#8221; I hear you ask.</h2>
<p>Well, I&#8217;ll tell you.<a href="https://gist.github.com/1438197/3629f4f16dd37b629606daafaa8bf8da2ac46130" target="_blank"> I wrote a little function</a> that handled adding the classes to any element dynamically. This gave me a little improvement in terms of ease of use and speed. There was still something missing though. I only realised when I had 3 animations that needed to run one after each other, that there was no way to determine when a CSS3 animation had completed so I could run another one. In the interim I set a delay parameter so I could say &#8216;do this, wait 3 seconds then do this&#8217;.</p>
<p>This &#8216;callback&#8217; functionality does exist and CSS3 animations do indeed trigger an event when they finish, you just need to set a javascript event listener to detect that so you can apply some actions. After a little Googling I added this to my function. This now worked in a very similar way to jQuery&#8217;s own animate function so it was very familiar.</p>
<h2>Then came the plugin</h2>
<p>A few weeks later, Dan (<a title="Follow Dan Eden on Twitter" href="http://twitter.com/_dte" target="_blank">@_dte</a>) mentioned me in a tweet saying that my site was using his animate.css and looked good. I thanked him and showed him my jQuery function that helped. <a title="View the Tweet on Twitter" href="https://twitter.com/#!/_dte/status/144043920148545536" target="_blank">He seemed suitably impressed</a> and asked if he could use it. It was already a public gist on github so I said no problem. That evening I decided it would be even better if it was an actual plugin that could be used in an even similar way to jQuery&#8217;s native functions. And so <a title="Get jQuery animateCSS on GitHub" href="https://github.com/craigmdennis/animateCSS" target="_blank">jQuery animateCSS</a> was born.</p>
<p>To use it is pretty easy.</p>
<h3>Basic</h3>
<pre>$('#your-id').animateCSS('fadeIn');</pre>
<h3>With callback</h3>
<pre>$('#your-id').animateCSS('fadeIn', function(){
    alert('Boom! Animation Complete');
});</pre>
<h3>With delay (in ms)</h3>
<pre>$('#your-id').animateCSS('fadeIn', 500);</pre>
<h3>With delay AND callback</h3>
<pre>$('#your-id').animateCSS('fadeIn', 1000, function(){
    alert('Boom! Animation Complete');
});</pre>
<p>If you want to hide an element when the page loads and then apply an effect, it might look something like this:</p>
<pre>&lt;style&gt;
    .js #your-id {
        visibility:hidden;
    }
&lt;/style&gt;

$(window).load( function(){
    $('#your-id').animateCSS('fadeIn', 1000, function(){
        alert('Boom! Animation Complete');
    });
});</pre>
<p>Remember to use a .js (or .no-js depending on how you role) so that the element still displays for non javascript users (and Google previews).</p>
<p>Again, the plugin is available here: <a href="https://github.com/craigmdennis/animateCSS/">https://github.com/craigmdennis/animateCSS/</a></p>
<p>That&#8217;s it guys. Have fun.</p>
]]></content:encoded>
			<wfw:commentRss>http://craigmdennis.com/jquery-plugin-to-use-css3-animations/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Graceful Degradation vs Progressive Enhancement</title>
		<link>http://craigmdennis.com/graceful-degradation-vs-progressive-enhancement/</link>
		<comments>http://craigmdennis.com/graceful-degradation-vs-progressive-enhancement/#comments</comments>
		<pubDate>Fri, 16 Apr 2010 21:11:37 +0000</pubDate>
		<dc:creator>Craig</dc:creator>
				<category><![CDATA[Web Design]]></category>
		<category><![CDATA[Browser Compatability]]></category>
		<category><![CDATA[CSS3]]></category>
		<category><![CDATA[Graceful Degredation]]></category>
		<category><![CDATA[IE]]></category>
		<category><![CDATA[Javascript]]></category>
		<category><![CDATA[jQuery]]></category>
		<category><![CDATA[Progressive Enhancement]]></category>

		<guid isPermaLink="false">http://craigmdennis.com/?p=2039</guid>
		<description><![CDATA[For years web designers have had to deal with compatibility issues across multiple browsers and for just as many years have had to accept content being displayed in slightly different ways. This is unlikely to change soon but the differences are becoming fewer and fewer. To make the most of this you need to choose... <a class="more" href="http://craigmdennis.com/graceful-degradation-vs-progressive-enhancement/">Read more &#8594;</a>]]></description>
			<content:encoded><![CDATA[<p>For years web designers have had to deal with compatibility issues across multiple browsers and for just as many years have had to accept content being displayed in slightly different ways.</p>
<p>This is unlikely to change soon but the differences are becoming fewer and fewer. To make the most of this you need to choose a browser in which to make your design / functionality work the way you want it to and then compromise fix it in Internet Explorer other browsers.</p>
<p><img class="size-medium wp-image-2041 alignleft" title="Safari Browser" src="http://uploads.craigmdennis.com/2010/04/531173_57280561-Large-420x315.jpg" alt="" width="420" height="315" /></p>
<h3>Let there be light!</h3>
<p>The main thing to realise is that all browsers are not created equal. Older browsers lack support for new technologies (CSS3 / HTML5) and render pages in sometimes odd ways. They also tend to be less forgiving with various structural models and dynamic scripting languages like JavaScript. Something often forgotten is that some users may decide to turn off features in browsers or may be impaired in a manner which affects their browsing habits.</p>
<p>Examples include:</p>
<ul>
<li>disabling JavaScript</li>
<li>disabling images</li>
<li>not using a mouse</li>
<li>using a screen reader</li>
<li>using a text-to-speech device</li>
</ul>
<p>Now while it is near impossible to include in a design every aspect that could affect the way someone experiences a website, there are things that can be done to improve the experience where possible.</p>
<h2>Graceful degradation</h2>
<blockquote><p><em>“Graceful degradation means that your Web site continues to operate even when viewed with less-than-optimal software in which advanced effects don’t work.”</em></p>
<p>– <a href="http://www.digital-web.com/articles/fluid_thinking/">Fluid Thinking</a>, by Peter-Paul Koch</p></blockquote>
<p>Graceful degradation is finally being addressed as the wrong way to approach the problem – design utilising the most advanced features of a browser and where a browser is not capable of implementing those features, a compromise needs to be made. The testing of older browsers is often done towards the end of the development cycle. More often than not this results in a less pleasing site for those using older browsers. This mainly affects IE6 which is still widely adopted throughout the corporate world. Using this approach focuses on using the latest technologies and not considering the experience for people with older browsers, disabilities or with certain functionalities disabled.</p>
<p>So how do you add bells and whistles to a site while maintaining  focus on usability and experience? The answer is in the design process. By first focusing on what ‘everyone’ will see and use, you can address the broadest issues. Bear in mind that a good experience with a site does NOT mean pretty pictures (although they can help) and a person can have a good experience on a simple site, for no other reason than being able to do what they want to do with ease and no interference.</p>
<h2>Progressive enhancement</h2>
<p>Leading on from core usability is the inclusionof  features to improve the experience for those people who are able to experience them – this is known as ‘layering’, starting with semantic  (X)HTML, wrapped in some CSS and finally some JavaScript on top.</p>
<blockquote><p><em>“Progressive enhancement uses web technologies in a layered fashion that allows everyone to access the basic content and functionality of a web page, using any browser or Internet connection, while also providing those with better bandwidth or more advanced browser software an enhanced version of the page.”</em></p>
<p>– <a href="http://en.wikipedia.org/wiki/Progressive_enhancement">Wikipedia</a></p></blockquote>
<p>There is a far more tasty explaination using an M&amp;M that defines the same point:</p>
<blockquote><p><em>“Start with your content peanut, marked up in rich, semantic (X)HTML. Coat that content with a layer of rich, creamy CSS. Finally, add JavaScript as the hard candy shell to make a wonderfully tasty treat (and keep it from melting in your hands).”</em></p>
<p>– <a href="http://www.alistapart.com/articles/understandingprogressiveenhancement/">Aaron Gustafson</a></p></blockquote>
<h3>Good for SEO too?</h3>
<p>When you write rich, semantic (X)HTML you are making life easier for search engines to index your site. It is written in a predictable, organised fashion and as such means the search-bots are more likely to pick up on any extra information as well as index it in the way it is intended. If you think about a search-bot ‘seeing’ in a similar way to a screen-reader, they generally only read text and links and with progressive enhancement you have given them both the best opportunity to get the most out of your site.</p>
<h3>In practice…</h3>
<p>It’s difficult to keep this in mind when you want to use newer technologies to make your life easier. CSS3’s rounded corner declaration or shadow facility would be great, but what happens when you meet a browser that doesn’t support it? As long as the contrast of text to background is suitable and the corners are not an integral part of the design then they will just have square boxes and normal text – something that doesn’t affect their experience too much and won’t affect the usability in any way.</p>
]]></content:encoded>
			<wfw:commentRss>http://craigmdennis.com/graceful-degradation-vs-progressive-enhancement/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
	</channel>
</rss>

