<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:blogger='http://schemas.google.com/blogger/2008' xmlns:georss='http://www.georss.org/georss' xmlns:gd="http://schemas.google.com/g/2005" xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-3176943100655981551</id><updated>2024-10-04T19:22:17.095-07:00</updated><title type='text'>Luis Cameroon</title><subtitle type='html'>HTML5, CSS3, Responsive Design, JS, ES2015, jQuery, Backbone.js, AngularJS, React, CORS, MEAN stack, Node.js (Restify / Express), PHP (Drupal / WordPress), Ruby (Rails / Sinatra), Ionic, PhoneGap, Jasmine, Mocha &amp;amp; Many more ...</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://luiscameroon.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3176943100655981551/posts/default?redirect=false'/><link rel='alternate' type='text/html' href='http://luiscameroon.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><link rel='next' type='application/atom+xml' href='http://www.blogger.com/feeds/3176943100655981551/posts/default?start-index=26&amp;max-results=25&amp;redirect=false'/><author><name>Luis Cameroon</name><uri>http://www.blogger.com/profile/02443056704463245314</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>165</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-3176943100655981551.post-7290362508325873596</id><published>2013-11-21T05:26:00.000-08:00</published><updated>2013-11-21T05:26:47.787-08:00</updated><title type='text'>Reading List #10</title><content type='html'>&lt;h2 style=&quot;background-color: white; clear: both; color: #404040; font-family: sans-serif; font-size: 18px; height: auto; letter-spacing: -0.04em; line-height: 1.15em; margin: 2em 0px 1em; text-rendering: optimizelegibility;&quot;&gt;
Articles&lt;/h2&gt;
&lt;ul style=&quot;background-color: white; color: #404040; font-family: sans-serif; font-size: 14px; line-height: 23px;&quot;&gt;
&lt;li&gt;&lt;a href=&quot;http://www.html5rocks.com/en/tutorials/webcomponents/yeoman/&quot; rel=&quot;nofollow&quot; style=&quot;color: #3498db; text-decoration: none;&quot; target=&quot;_blank&quot;&gt;Building Web Apps With Yeoman And Polymer&lt;/a&gt;&amp;nbsp;[html5rocks.com]&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://tylerhenkel.com/introducing-yeoman-angularjs-express-full-stack-generator/&quot; rel=&quot;nofollow&quot; style=&quot;color: #3498db; text-decoration: none;&quot; target=&quot;_blank&quot;&gt;Introducing a Yeoman Generator For Full-stack Angular + Express Development&lt;/a&gt;&amp;nbsp;[tylerHenkel.com]&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://movefastbreakthings.ca/column-a-yeoman-generator-built-for-hackathons/&quot; rel=&quot;nofollow&quot; style=&quot;color: #3498db; text-decoration: none;&quot; target=&quot;_blank&quot;&gt;Column: A Yeoman Generator Built for Hackathons&lt;/a&gt;&amp;nbsp;[movefastbreakthings.ca]&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://rockyj.in/2013/10/24/angular_rails.html&quot; rel=&quot;nofollow&quot; style=&quot;color: #3498db; text-decoration: none;&quot; target=&quot;_blank&quot;&gt;Working With Angular, Rails and Yeoman&lt;/a&gt;&amp;nbsp;[rockyj.in]&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://www.alolo.co/blog/2013/10/30/building-a-chrome-extension-with-yeoman&quot; rel=&quot;nofollow&quot; style=&quot;color: #3498db; text-decoration: none;&quot; target=&quot;_blank&quot;&gt;Building Chrome Apps With Yeoman&lt;/a&gt;&amp;nbsp;[alolo.co]&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://davidcalhoun.me/2013/10/30/migration-to-jekyll-my-journey-to-understanding-yeoman/&quot; rel=&quot;nofollow&quot; style=&quot;color: #3498db; text-decoration: none;&quot; target=&quot;_blank&quot;&gt;Migration to Jekyll: My Journey to Understanding Yeoman&lt;/a&gt;&amp;nbsp;[davidCalhoun.me]&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://mikefowler.me/2013/10/28/coffeescript-source-maps-with-yeoman/&quot; rel=&quot;nofollow&quot; style=&quot;color: #3498db; text-decoration: none;&quot; target=&quot;_blank&quot;&gt;CoffeeScript Source Maps With Yeoman&lt;/a&gt;&amp;nbsp;[mikeFowler.me]&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://danristic.com/javascript/tooling/2013/10/08/why-i-generate-all-my-apps-with-yeoman.html&quot; rel=&quot;nofollow&quot; style=&quot;color: #3498db; text-decoration: none;&quot; target=&quot;_blank&quot;&gt;Why I Generate My Apps With Yeoman&lt;/a&gt;&amp;nbsp;[danRistic.com]&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://blog.hood.ie/2013/10/a-hoodie-for-you-interviews-with-hoodie-users-2-robert-katzki-and-the-yeoman-generator/&quot; rel=&quot;nofollow&quot; style=&quot;color: #3498db; text-decoration: none;&quot; target=&quot;_blank&quot;&gt;An Interview With The Creator Of The Hoodie Generator For Yeoman&lt;/a&gt;&amp;nbsp;[hood.ie]&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://github.com/yeoman/yeoman/wiki/Articles&quot; rel=&quot;nofollow&quot; style=&quot;color: #3498db; text-decoration: none;&quot; target=&quot;_blank&quot;&gt;Articles In The Wiki&lt;/a&gt;&amp;nbsp;[github.com/yeoman]&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 style=&quot;background-color: white; clear: both; color: #404040; font-family: sans-serif; font-size: 18px; height: auto; letter-spacing: -0.04em; line-height: 1.15em; margin: 2em 0px 1em; text-rendering: optimizelegibility;&quot;&gt;
Slides&lt;/h2&gt;
&lt;ul style=&quot;background-color: white; color: #404040; font-family: sans-serif; font-size: 14px; line-height: 23px;&quot;&gt;
&lt;li&gt;&lt;a href=&quot;http://updates.html5rocks.com/2013/11/The-Landscape-Of-Front-end-Development-Automation-Slides&quot; rel=&quot;nofollow&quot; style=&quot;color: #3498db; text-decoration: none;&quot; target=&quot;_blank&quot; title=&quot;with Yo, Grunt, Bower and more&quot;&gt;Automating Development Workflow&lt;/a&gt;&amp;nbsp;[html5rocks.com]&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://speakerdeck.com/dmosher/frontend-workflows-and-tooling&quot; rel=&quot;nofollow&quot; style=&quot;color: #3498db; text-decoration: none;&quot; target=&quot;_blank&quot;&gt;Front-end Tooling Workflows&lt;/a&gt;&amp;nbsp;[speakerdeck.com/dmosher]&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://slid.es/passy/yeoman/fullscreen&quot; rel=&quot;nofollow&quot; style=&quot;color: #3498db; text-decoration: none;&quot; target=&quot;_blank&quot;&gt;Modern Workflows For Modern WebApps&lt;/a&gt;&amp;nbsp;[slid.es/passy]&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 style=&quot;background-color: white; clear: both; color: #404040; font-family: sans-serif; font-size: 18px; height: auto; letter-spacing: -0.04em; line-height: 1.15em; margin: 2em 0px 1em; text-rendering: optimizelegibility;&quot;&gt;
Videos&lt;/h2&gt;
&lt;ul style=&quot;background-color: white; color: #404040; font-family: sans-serif; font-size: 14px; line-height: 23px;&quot;&gt;
&lt;li&gt;&lt;a href=&quot;http://www.youtube.com/watch?v=1Sy3vWJ1N2U&quot; rel=&quot;nofollow&quot; style=&quot;color: #3498db; text-decoration: none;&quot; target=&quot;_blank&quot;&gt;Introduction to the&amp;nbsp;MEAN&amp;nbsp;Stack&lt;/a&gt;&amp;nbsp;with Yeoman, Grunt and Bower&amp;nbsp;[youtube.com]&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://www.youtube.com/watch?v=RPMIz0id7eE&quot; rel=&quot;nofollow&quot; style=&quot;color: #3498db; text-decoration: none;&quot; target=&quot;_blank&quot;&gt;&#39;yo dude’ a talk on Yeoman and Cordova from IBM&lt;/a&gt;&amp;nbsp;[youtube.com]&lt;/li&gt;
&lt;li&gt;IBM&amp;nbsp;Worklight generators for Yeoman&amp;nbsp;&lt;a href=&quot;http://www.youtube.com/watch?v=x9I9dKC2BGU&quot; rel=&quot;nofollow&quot; style=&quot;color: #3498db; text-decoration: none;&quot; target=&quot;_blank&quot;&gt;Part 1&lt;/a&gt;,&amp;nbsp;&lt;a href=&quot;http://www.youtube.com/watch?v=hRXmcnukIz8&quot; rel=&quot;nofollow&quot; style=&quot;color: #3498db; text-decoration: none;&quot; target=&quot;_blank&quot;&gt;Part 2&lt;/a&gt;,&amp;nbsp;&lt;a href=&quot;http://www.youtube.com/watch?v=-qmB69gefIc&quot; rel=&quot;nofollow&quot; style=&quot;color: #3498db; text-decoration: none;&quot; target=&quot;_blank&quot;&gt;Part 3&lt;/a&gt;&amp;nbsp;[youtube.com]&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://www.youtube.com/watch?v=rYwJ5-esSYE&quot; rel=&quot;nofollow&quot; style=&quot;color: #3498db; text-decoration: none;&quot; target=&quot;_blank&quot;&gt;Intro to Yeoman sub-generators&lt;/a&gt;&amp;nbsp;[youtube.com]&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://www.youtube.com/watch?v=zBt2g9ekiug&quot; rel=&quot;nofollow&quot; style=&quot;color: #3498db; text-decoration: none;&quot; target=&quot;_blank&quot;&gt;Getting started with Yeoman and generator-webapp&lt;/a&gt;&amp;nbsp;[youtube.com]&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://www.youtube.com/watch?v=RO8TdD5EuNs&quot; rel=&quot;nofollow&quot; style=&quot;color: #3498db; text-decoration: none;&quot; target=&quot;_blank&quot;&gt;Yeoman generator for Twitter Bootstrap&lt;/a&gt;&amp;nbsp;[youtube.com]&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 style=&quot;background-color: white; clear: both; color: #404040; font-family: sans-serif; font-size: 18px; height: auto; letter-spacing: -0.04em; line-height: 1.15em; margin: 2em 0px 1em; text-rendering: optimizelegibility;&quot;&gt;
Generator updates&lt;/h2&gt;
&lt;ul style=&quot;background-color: white; color: #404040; font-family: sans-serif; font-size: 14px; line-height: 23px;&quot;&gt;
&lt;li&gt;&lt;a href=&quot;https://github.com/matt-bailey/generator-bones&quot; rel=&quot;nofollow&quot; style=&quot;color: #3498db; text-decoration: none;&quot; target=&quot;_blank&quot;&gt;Bones – a Yeoman generator for basic web projects&lt;/a&gt;&amp;nbsp;[github.com/matt-bailey]&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://github.com/jrcryer/generator-mean&quot; rel=&quot;nofollow&quot; style=&quot;color: #3498db; text-decoration: none;&quot; target=&quot;_blank&quot;&gt;Generator&amp;nbsp;MEAN&amp;nbsp;– scaffolding for Mongo, Express, Angular and Node&lt;/a&gt;&amp;nbsp;[github.com/jrcryer]&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://github.com/btholt/generator-cordova&quot; rel=&quot;nofollow&quot; style=&quot;color: #3498db; text-decoration: none;&quot; target=&quot;_blank&quot;&gt;Generator for Cordova&lt;/a&gt;&amp;nbsp;[github.com/btholt]&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://github.com/genesis/wordpress/&quot; rel=&quot;nofollow&quot; style=&quot;color: #3498db; text-decoration: none;&quot; target=&quot;_blank&quot;&gt;Genesis Wordpress – WordPress + Vagrant + Multi-env scaffolding&lt;/a&gt;&amp;nbsp;[github.com/genesis]&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://github.com/markdalgleish/generator-bespoke&quot; rel=&quot;nofollow&quot; style=&quot;color: #3498db; text-decoration: none;&quot; target=&quot;_blank&quot;&gt;Generator for Bespoke.js&lt;/a&gt;&amp;nbsp;[github.com/markdagleish]&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://github.com/slara/generator-reveal&quot; rel=&quot;nofollow&quot; style=&quot;color: #3498db; text-decoration: none;&quot; target=&quot;_blank&quot;&gt;Generator for Reveal&lt;/a&gt;&amp;nbsp;[github.com/slara]&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://github.com/yeoman/generator-backbone/releases/tag/v0.2.1&quot; rel=&quot;nofollow&quot; style=&quot;color: #3498db; text-decoration: none;&quot; target=&quot;_blank&quot;&gt;Backbone generator 0.2.1 is now out&lt;/a&gt;&amp;nbsp;[github.com/yeoman]&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://github.com/yeoman/generator-angular/blob/master/CHANGELOG.md&quot; rel=&quot;nofollow&quot; style=&quot;color: #3498db; text-decoration: none;&quot; target=&quot;_blank&quot;&gt;AngularJS generator v0.5.0/v0.5.1 out&lt;/a&gt;&amp;nbsp;with bugfixes, better livereloading, automatically wire up selected Angular modules&amp;nbsp;[github.com/yeoman]&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://github.com/reintroducing/generator-bbr&quot; rel=&quot;nofollow&quot; style=&quot;color: #3498db; text-decoration: none;&quot; target=&quot;_blank&quot;&gt;Another Yeoman generator for Backbone and RequireJS&lt;/a&gt;&amp;nbsp;[github.com/reintroducing]&lt;/li&gt;
&lt;/ul&gt;
</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3176943100655981551/posts/default/7290362508325873596'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3176943100655981551/posts/default/7290362508325873596'/><link rel='alternate' type='text/html' href='http://luiscameroon.blogspot.com/2013/11/reading-list-10.html' title='Reading List #10'/><author><name>Luis Cameroon</name><uri>http://www.blogger.com/profile/02443056704463245314</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author></entry><entry><id>tag:blogger.com,1999:blog-3176943100655981551.post-4867365953268324594</id><published>2013-09-15T20:28:00.000-07:00</published><updated>2013-09-15T20:33:57.755-07:00</updated><title type='text'>Reading List #9</title><content type='html'>&lt;br /&gt;
&lt;ul style=&quot;background-color: white;&quot;&gt;
&lt;li&gt;&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;a href=&quot;http://www.sitepoint.com/is-html-relevant-in-the-age-of-web-apps/&quot; style=&quot;color: #3498db; text-decoration: none;&quot; target=&quot;_blank&quot;&gt;Is HTML Relevant in the Age of Web Apps?&lt;/a&gt;&amp;nbsp;– edited transcript of John Allsopp’s Full Frontal 2012 talk&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;ul style=&quot;background-color: white;&quot;&gt;
&lt;li&gt;&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;a href=&quot;http://css-tricks.com/svg-fallbacks/&quot; style=&quot;color: #3498db; text-decoration: none;&quot; target=&quot;_blank&quot;&gt;SVG Fallbacks&lt;/a&gt;&amp;nbsp;by Chris Coyier. Good comments.&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;ul style=&quot;background-color: white;&quot;&gt;
&lt;li&gt;&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;a href=&quot;http://src.chromium.org/viewvc/blink?view=revision&amp;amp;revision=156535&quot; style=&quot;color: #3498db; text-decoration: none;&quot; target=&quot;_blank&quot;&gt;Blink: Add support for the object-fit CSS property&lt;/a&gt;&amp;nbsp;by Opera’s Morten Stenshorne&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;ul style=&quot;background-color: white;&quot;&gt;
&lt;li&gt;&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;a href=&quot;http://alistapart.com/column/around-the-www-in-80-minutes/&quot; style=&quot;color: #3498db; text-decoration: none;&quot; target=&quot;_blank&quot;&gt;Around the World Wide Web in Eighty Minutes&lt;/a&gt;&amp;nbsp;– a fun look at internationalisation capabilities on the Web by Richard Ishida&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;ul style=&quot;background-color: white;&quot;&gt;
&lt;li&gt;&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;a href=&quot;http://www.heydonworks.com/article/font-hacking&quot; style=&quot;color: #3498db; text-decoration: none;&quot; target=&quot;_blank&quot;&gt;Font Hacking&lt;/a&gt;&amp;nbsp;– “primer on extracting, deconstructing, altering and replacing letterforms”. With good jokes.&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;ul style=&quot;background-color: white;&quot;&gt;
&lt;li&gt;&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;a href=&quot;http://www.w3.org/News/2013.html#entry-9917&quot; style=&quot;color: #3498db; text-decoration: none;&quot; target=&quot;_blank&quot;&gt;W3C Launches Web and Mobile Interest Group&lt;/a&gt;&amp;nbsp;– “that is chartered to accelerate the development of Web technology so that it becomes a compelling platform for mobile applications and the obvious choice for cross platform development” starring Jo Rabin (John Steed), Marcos Caceras (Mike Gambit), Natasha Rooney (Purdey).&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;ul style=&quot;background-color: white;&quot;&gt;
&lt;li&gt;&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;a href=&quot;http://blog.cloudfour.com/responsive-web-design-is-solid-gold/&quot; style=&quot;color: #3498db; text-decoration: none;&quot; target=&quot;_blank&quot;&gt;Responsive Web Design is Solid Gold&lt;/a&gt;&amp;nbsp;by Jason Grigsby – “I’m now firmly on the side that there is no mobile context. We have abundant data that shows that people use their mobile devices indoors and for a wide variety of things.”&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;ul style=&quot;background-color: white;&quot;&gt;
&lt;li&gt;&lt;a href=&quot;http://arstechnica.com/information-technology/2013/08/how-easy-is-it-to-hack-javascript-in-a-browser/&quot; style=&quot;color: #3498db; text-decoration: none;&quot; target=&quot;_blank&quot;&gt;&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;How easy is it to hack JavaScript in a browser?&lt;/span&gt;&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;ul style=&quot;background-color: white;&quot;&gt;
&lt;li&gt;&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;a href=&quot;https://xiph.org/daala/&quot; style=&quot;color: #3498db; text-decoration: none;&quot; target=&quot;_blank&quot;&gt;Daala video compression&lt;/a&gt;&amp;nbsp;“Daala is the code-name for a new video compression technology.” Hooray! Another video format.&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;ul style=&quot;background-color: white;&quot;&gt;
&lt;li&gt;&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;a href=&quot;https://plus.google.com/u/0/106943062990152739506/posts/aeBhzwBoa2q&quot; style=&quot;color: #3498db; text-decoration: none;&quot; target=&quot;_blank&quot;&gt;Semantic data markup: Microdata, yea nor nay?&lt;/a&gt;&amp;nbsp;(warning: Google+)&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;ul style=&quot;background-color: white;&quot;&gt;
&lt;li&gt;&lt;a href=&quot;http://www.davidmacd.com/test/details.html&quot; style=&quot;color: #3498db; text-decoration: none;&quot; target=&quot;_blank&quot;&gt;&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;How well do the HTML 5 replacements for table summary attribute work with current Screen Readers and Browsers?&lt;/span&gt;&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;ul style=&quot;background-color: white;&quot;&gt;
&lt;li&gt;&lt;a href=&quot;https://dvcs.w3.org/hg/nativeapps/raw-file/tip/splashscreen/Overview.html&quot; style=&quot;color: #3498db; text-decoration: none;&quot; target=&quot;_blank&quot;&gt;&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;W3C: Splash screen for native web apps&lt;/span&gt;&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;ul style=&quot;background-color: white;&quot;&gt;
&lt;li&gt;&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;a href=&quot;http://www.w3.org/html/wg/drafts/html/master/text-level-semantics.html#the-cite-element&quot; style=&quot;color: #3498db; text-decoration: none;&quot; target=&quot;_blank&quot;&gt;Proposed update to &lt;cite&gt; element definition&lt;/cite&gt;&lt;/a&gt;&amp;nbsp;(see my article&amp;nbsp;&lt;a href=&quot;http://www.brucelawson.co.uk/2013/on-citing-quotations-again/&quot; style=&quot;color: #3498db; text-decoration: none;&quot; target=&quot;_blank&quot;&gt;&lt;cite&gt;On citing quotations. Again.&lt;/cite&gt;&lt;/a&gt;&amp;nbsp;for more).&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;ul style=&quot;background-color: white;&quot;&gt;
&lt;li style=&quot;color: #444444; line-height: 23px;&quot;&gt;&lt;a href=&quot;http://lists.w3.org/Archives/Public/public-whatwg-archive/2013Aug/0277.html&quot; style=&quot;color: #3498db; text-decoration: none;&quot; target=&quot;_blank&quot;&gt;&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;Hixie on script pre-loading&lt;/span&gt;&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;ul style=&quot;background-color: white;&quot;&gt;
&lt;li style=&quot;color: #444444; line-height: 23px;&quot;&gt;&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;a href=&quot;http://bradfrostweb.com/blog/post/fuck-you/&quot; style=&quot;color: #3498db; text-decoration: none;&quot; target=&quot;_blank&quot;&gt;“Fuck You”&lt;/a&gt;&amp;nbsp;– Brad Frost on deliberately excluding groups of people from the Web&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;ul style=&quot;background-color: white;&quot;&gt;
&lt;li style=&quot;color: #444444; line-height: 23px;&quot;&gt;&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;a href=&quot;http://www.mysociety.org/2011/08/11/mobile-operators-breaking-content/&quot; style=&quot;color: #3498db; text-decoration: none;&quot; target=&quot;_blank&quot;&gt;Mobile operators altering (and breaking) web content&lt;/a&gt;&amp;nbsp;by Matthew Somerville&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;ul style=&quot;background-color: white;&quot;&gt;
&lt;li&gt;&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;a href=&quot;https://dvcs.w3.org/hg/webperf/raw-file/tip/specs/ResourcePriorities/Overview.html&quot; style=&quot;color: #3498db; line-height: 23px; text-decoration: none;&quot; target=&quot;_blank&quot;&gt;Resource Priorities&lt;/a&gt;&lt;span style=&quot;color: #444444;&quot;&gt;&lt;span style=&quot;line-height: 23px;&quot;&gt;&amp;nbsp;–&amp;nbsp;spec including groovy thangs like &amp;lt; img lazyload &amp;gt; (&lt;/span&gt;&lt;/span&gt;&lt;a href=&quot;http://lists.w3.org/Archives/Public/public-web-perf/2013Jun/0039.html&quot; style=&quot;color: #3498db; line-height: 23px; text-decoration: none;&quot; target=&quot;_blank&quot;&gt;partially implemented in IE11 Preview&lt;/a&gt;&lt;span style=&quot;color: #444444;&quot;&gt;&lt;span style=&quot;line-height: 23px;&quot;&gt;)&amp;nbsp;and &amp;lt; img postpone &amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;ul style=&quot;background-color: white;&quot;&gt;
&lt;li style=&quot;color: #444444; line-height: 23px;&quot;&gt;&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;a href=&quot;http://www.w3.org/QA/2013/08/enabling_new_types_of_web_user.html&quot; style=&quot;color: #3498db; text-decoration: none;&quot; target=&quot;_blank&quot;&gt;Enabling new types of web user experiences&lt;/a&gt;&amp;nbsp;– guest W3C blog post by Scott Jenson, a well-known UX designer and creative director&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;ul style=&quot;background-color: white;&quot;&gt;
&lt;li style=&quot;color: #444444; line-height: 23px;&quot;&gt;&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;a href=&quot;https://github.com/disconnectme/port&quot; style=&quot;color: #3498db; text-decoration: none;&quot; target=&quot;_blank&quot;&gt;port.js&lt;/a&gt;&amp;nbsp;is a Chrome-(and-Opera!)–to–Safari porting library for extensions&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;ul style=&quot;background-color: white;&quot;&gt;
&lt;li style=&quot;color: #444444; line-height: 23px;&quot;&gt;&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;a href=&quot;https://groups.google.com/forum/#!topic/mozilla.dev.webapi/cyk8Nz4I-f4&quot; style=&quot;color: #3498db; text-decoration: none;&quot; target=&quot;_blank&quot;&gt;proposal: replace&amp;nbsp;&lt;code&gt;navigator.mozPay()&lt;/code&gt;&amp;nbsp;with primitives&lt;/a&gt;&amp;nbsp;– Mozilla’s trying to make a low-level API for payments&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;ul style=&quot;background-color: white;&quot;&gt;
&lt;li style=&quot;color: #444444; line-height: 23px;&quot;&gt;&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;a href=&quot;http://somefoolnotion.com/executive-class/&quot; style=&quot;color: #3498db; text-decoration: none;&quot; target=&quot;_blank&quot;&gt;Executive Class&lt;/a&gt;&amp;nbsp;– calculating the Myers-Briggs personality type of the London Underground’s Waterloo &amp;amp; City Line&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;ul style=&quot;background-color: white;&quot;&gt;
&lt;li style=&quot;color: #444444; line-height: 23px;&quot;&gt;&lt;span style=&quot;font-family: Arial, Helvetica, sans-serif;&quot;&gt;&lt;a href=&quot;http://greatlanguagegame.com/&quot; style=&quot;color: #3498db; text-decoration: none;&quot; target=&quot;_blank&quot;&gt;The Great Language Game&lt;/a&gt;&amp;nbsp;Of thousands of languages spoken in the world, here are seventy. How many can you distinguish between? (my score: 800)&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3176943100655981551/posts/default/4867365953268324594'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3176943100655981551/posts/default/4867365953268324594'/><link rel='alternate' type='text/html' href='http://luiscameroon.blogspot.com/2013/09/reading-list-9.html' title='Reading List #9'/><author><name>Luis Cameroon</name><uri>http://www.blogger.com/profile/02443056704463245314</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author></entry><entry><id>tag:blogger.com,1999:blog-3176943100655981551.post-1397499085219408209</id><published>2013-08-01T22:03:00.003-07:00</published><updated>2013-08-01T22:08:30.970-07:00</updated><title type='text'>Reading List #8</title><content type='html'>&lt;span style=&quot;font-family: Helvetica Neue, Arial, Helvetica, sans-serif;&quot;&gt;&lt;br /&gt;&lt;/span&gt;
&lt;br /&gt;
&lt;h2&gt;
&lt;span style=&quot;font-family: Helvetica Neue, Arial, Helvetica, sans-serif;&quot;&gt;
Web Standards&lt;/span&gt;&lt;/h2&gt;
&lt;ul style=&quot;background-color: white; font-size: 14px; line-height: 23px;&quot;&gt;
&lt;li&gt;&lt;span style=&quot;font-family: Helvetica Neue, Arial, Helvetica, sans-serif;&quot;&gt;&lt;a href=&quot;http://css-tricks.com/does-flexbox-have-a-performance-problem/&quot; style=&quot;text-decoration: none;&quot; target=&quot;_blank&quot;&gt;Does Flexbox Have a Performance Problem?&lt;/a&gt;&amp;nbsp;(TL;DR old flexbox does)&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;ul style=&quot;background-color: white; font-size: 14px; line-height: 23px;&quot;&gt;
&lt;li&gt;&lt;span style=&quot;font-family: Helvetica Neue, Arial, Helvetica, sans-serif;&quot;&gt;&lt;a href=&quot;https://github.com/operasoftware/ucss&quot; style=&quot;text-decoration: none;&quot; target=&quot;_blank&quot;&gt;uCSS&lt;/a&gt;&amp;nbsp;crawls your website to find unused CSS, duplicate selectors (you can exclude pages/ subdomains)&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;ul style=&quot;background-color: white; font-size: 14px; line-height: 23px;&quot;&gt;
&lt;li&gt;&lt;a href=&quot;http://typedarray.org/from-microphone-to-wav-with-getusermedia-and-web-audio/&quot; style=&quot;text-decoration: none;&quot; target=&quot;_blank&quot;&gt;&lt;span style=&quot;color: black; font-family: Helvetica Neue, Arial, Helvetica, sans-serif;&quot;&gt;From microphone to .WAV with: getUserMedia and Web Audio&lt;/span&gt;&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;ul style=&quot;background-color: white; font-size: 14px; line-height: 23px;&quot;&gt;
&lt;li&gt;&lt;a href=&quot;http://www.karlgroves.com/2011/11/15/list-of-web-accessibility-related-litigation-and-settlements/&quot; style=&quot;text-decoration: none;&quot; target=&quot;_blank&quot;&gt;&lt;span style=&quot;color: black; font-family: Helvetica Neue, Arial, Helvetica, sans-serif;&quot;&gt;List of Web Accessibility-Related Litigation and Settlements&lt;/span&gt;&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;ul style=&quot;background-color: white; font-size: 14px; line-height: 23px;&quot;&gt;
&lt;li&gt;&lt;a href=&quot;http://www.mobify.com/blog/data-uris-are-slow-on-mobile/&quot; style=&quot;text-decoration: none;&quot; target=&quot;_blank&quot;&gt;&lt;span style=&quot;color: black; font-family: Helvetica Neue, Arial, Helvetica, sans-serif;&quot;&gt;On Mobile, Data URIs are 6x Slower than Source Linking (New Research)&lt;/span&gt;&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;ul style=&quot;background-color: white; font-size: 14px; line-height: 23px;&quot;&gt;
&lt;li&gt;&lt;span style=&quot;font-family: Helvetica Neue, Arial, Helvetica, sans-serif;&quot;&gt;&lt;a href=&quot;http://axrproject.org/&quot; style=&quot;text-decoration: none;&quot; target=&quot;_blank&quot;&gt;AXR Project&lt;/a&gt;&amp;nbsp;– @veosotano’s proposed replacement web stack – XML + HSS (CSS-like with extras) and 1 rendering engine to be used by all browsers (via a plugin for now)&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;ul style=&quot;background-color: white; font-size: 14px; line-height: 23px;&quot;&gt;
&lt;/ul&gt;
</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3176943100655981551/posts/default/1397499085219408209'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3176943100655981551/posts/default/1397499085219408209'/><link rel='alternate' type='text/html' href='http://luiscameroon.blogspot.com/2013/08/reading-list-8.html' title='Reading List #8'/><author><name>Luis Cameroon</name><uri>http://www.blogger.com/profile/02443056704463245314</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author></entry><entry><id>tag:blogger.com,1999:blog-3176943100655981551.post-376551403078149506</id><published>2013-07-16T23:50:00.004-07:00</published><updated>2013-07-17T00:00:25.689-07:00</updated><title type='text'>Reading List #7</title><content type='html'>&lt;ul style=&quot;background-color: white; font-family: sans-serif; font-size: 14px; line-height: 23px;&quot;&gt;
&lt;li&gt;&lt;span style=&quot;color: black;&quot;&gt;&lt;a href=&quot;http://www.bbc.co.uk/blogs/internet/posts/Accessibility-Mobile-Apps&quot; style=&quot;text-decoration: none;&quot; target=&quot;_blank&quot;&gt;Draft BBC Mobile Accessibility Standards and Guidelines&lt;/a&gt;&amp;nbsp;– by Henny Swan&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: black;&quot;&gt;&lt;a href=&quot;http://mqtest.io/&quot; style=&quot;text-decoration: none;&quot; target=&quot;_blank&quot;&gt;MQtest.io&lt;/a&gt;&amp;nbsp;– A simple tool to help identify which media queries your device responds to&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: black;&quot;&gt;&lt;a href=&quot;http://javascriptcookbook.com/&quot; style=&quot;text-decoration: none;&quot; target=&quot;_blank&quot;&gt;JavaScript Cookbook&lt;/a&gt;&amp;nbsp;is a site for common JavaScript problems and solutions&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: black;&quot;&gt;&lt;a href=&quot;http://googlewebmastercentral.blogspot.co.uk/2013/06/changes-in-rankings-of-smartphone_11.html&quot; style=&quot;text-decoration: none;&quot; target=&quot;_blank&quot;&gt;Changes in rankings of smartphone search results&lt;/a&gt;&amp;nbsp;– Google will spank you if you have faulty redirects (“when a desktop page redirects smartphone users to an irrelevant page on the smartphone-optimized website”) or App download interstitials&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: black;&quot;&gt;&lt;a href=&quot;http://www.grumpicon.com/&quot; style=&quot;text-decoration: none;&quot; target=&quot;_blank&quot;&gt;Grumpicon&lt;/a&gt;&amp;nbsp;for SVG icons/ illustrations with PNG fallback for everbrown browsers&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: black;&quot;&gt;&lt;a href=&quot;http://daverupert.com/2013/06/ughck-images/&quot; style=&quot;text-decoration: none;&quot; target=&quot;_blank&quot;&gt;“Lots has happened in the world of Responsive Images since I wrote Mo’ Pixels, Mo’ Problems. And by lots, I mean nothing at all.”&lt;/a&gt;&amp;nbsp;– a follow-up post to a 2012 article for A List Apart&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: black;&quot;&gt;&lt;a href=&quot;http://blogs.msdn.com/b/interoperability/archive/2013/06/17/w3c-pointer-events-gains-further-web-momentum-with-patch-for-mozilla-firefox.aspx&quot; style=&quot;text-decoration: none;&quot; target=&quot;_blank&quot;&gt;W3C Pointer Events Gains Further Web Momentum with Patch For Mozilla Firefox&lt;/a&gt;&amp;nbsp;– Micosoft also intends to implement for Blink&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: black;&quot;&gt;&lt;a href=&quot;http://blogs.telegraph.co.uk/technology/willardfoxton2/100009299/the-problem-with-the-debate-over-online-porn-is-the-two-sides-arent-even-speaking-the-same-language/&quot; style=&quot;text-decoration: none;&quot; target=&quot;_blank&quot;&gt;The problem with the ‘debate’ over online porn is the two sides aren’t even speaking the same language&lt;/a&gt;&amp;nbsp;says the Daily Telegraph, showing that censorship proposals by Claire Perry aren’t based on fact, or understanding of the mechanics of the web&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: black;&quot;&gt;&lt;a href=&quot;http://www.hanselman.com/blog/StopDoingInternetWrong.aspx&quot; style=&quot;text-decoration: none;&quot; target=&quot;_blank&quot;&gt;Stop Doing Internet Wrong&lt;/a&gt;&amp;nbsp;commands Scott Hanselman&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: black;&quot;&gt;&lt;a href=&quot;http://www.kryogenix.org/code/browser/custom-drag-image.html&quot; style=&quot;text-decoration: none;&quot; target=&quot;_blank&quot;&gt;Setting a custom ghost image when using HTML5 drag and drop&lt;/a&gt;&amp;nbsp;– vile hackery by @sil (for which I’m partially to blame)&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: black;&quot;&gt;&lt;a href=&quot;http://jakearchibald.com/2013/progressive-enhancement-still-important/&quot; style=&quot;text-decoration: none;&quot; target=&quot;_blank&quot;&gt;Progressive enhancement is still important&lt;/a&gt;&amp;nbsp;says Jake Archibald&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: black;&quot;&gt;&lt;a href=&quot;https://www.youtube.com/watch?v=EcyxXPILO8E&amp;amp;feature=player_embedded&quot; style=&quot;text-decoration: none;&quot; target=&quot;_blank&quot;&gt;Yehuda Katz: The Future of the Client-Side Web&lt;/a&gt;&amp;nbsp;– 30 min video, well worth watching&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: black;&quot;&gt;&lt;a href=&quot;http://infrequently.org/2013/07/why-javascript/&quot; style=&quot;text-decoration: none;&quot; target=&quot;_blank&quot;&gt;Why JavaScript?&lt;/a&gt;&amp;nbsp;– why invest loads of time and effort making JS fit the needs of the modern web, by another reformist TAG member, Alex Russell&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;HTML5 Doctor:&amp;nbsp;&lt;a href=&quot;http://html5doctor.com/the-main-element/&quot; style=&quot;text-decoration: none;&quot; target=&quot;_blank&quot;&gt;The&lt;/a&gt;&amp;nbsp;&lt;a href=&quot;http://html5doctor.com/the-main-element/&quot; style=&quot;text-decoration: none;&quot; target=&quot;_blank&quot;&gt;&lt;main style=&quot;display: inline !important;&quot;&gt;&lt;main style=&quot;display: inline !important;&quot;&gt;main element&lt;/main&gt;&lt;/main&gt;&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: black;&quot;&gt;&lt;a href=&quot;http://the-pastry-box-project.net/oli-studholme/2013-june-26/&quot; style=&quot;text-decoration: none;&quot; target=&quot;_blank&quot;&gt;Testing the web&lt;/a&gt;&amp;nbsp;– practical instructions by HTML5 Dr @boblet on how *you* can help interop by writing reftests&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: black;&quot;&gt;&lt;a href=&quot;http://brian.sol1.net/svg/2013/06/26/introducing-web-animations/&quot; style=&quot;text-decoration: none;&quot; target=&quot;_blank&quot;&gt;Introducing Web Animations&lt;/a&gt;&amp;nbsp;– harmonising (some of) SVG and CSS animations. Coming soon in Blink, Firefox and Polyfill&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;color: black;&quot;&gt;&lt;a href=&quot;http://shkspr.mobi/blog/2013/06/opt-out-of-klout-now/&quot; style=&quot;text-decoration: none;&quot; target=&quot;_blank&quot;&gt;Opt Out of Klout – Now!&lt;/a&gt;&amp;nbsp;– “A number on a screen doesn’t control your destiny; you do” says Terence Eden&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;Anorak corner:&amp;nbsp;&lt;a href=&quot;http://www.quora.com/Icons/Who-designed-the-broken-image-icons&quot; style=&quot;text-decoration: none;&quot; target=&quot;_blank&quot;&gt;Who designed the “broken image” icons?&lt;/a&gt;&amp;nbsp;(Quora link, sorry mobile users)&lt;/li&gt;
&lt;/ul&gt;
</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3176943100655981551/posts/default/376551403078149506'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3176943100655981551/posts/default/376551403078149506'/><link rel='alternate' type='text/html' href='http://luiscameroon.blogspot.com/2013/07/reading-list-7.html' title='Reading List #7'/><author><name>Luis Cameroon</name><uri>http://www.blogger.com/profile/02443056704463245314</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author></entry><entry><id>tag:blogger.com,1999:blog-3176943100655981551.post-3905124665144780707</id><published>2013-07-16T23:23:00.001-07:00</published><updated>2013-07-16T23:23:45.075-07:00</updated><title type='text'>A List of Programming Screencast Series</title><content type='html'>&lt;ul style=&quot;background-color: white; border: 0px; font-family: &#39;Helvetica Neue&#39;, Helvetica, Arial, sans-serif; font-size: 14px; line-height: 25px; list-style-image: initial; list-style-position: inside; margin: 0px 0px 1.5em; padding: 0px; vertical-align: baseline;&quot;&gt;
&lt;li style=&quot;border: 0px; font-family: inherit; font-size: inherit; font-style: inherit; font-variant: inherit; line-height: inherit; margin: 0px; padding: 0px; vertical-align: baseline;&quot;&gt;&lt;span style=&quot;color: black;&quot;&gt;&lt;a href=&quot;http://railscasts.com/&quot; style=&quot;border: 0px; font-family: inherit; font-size: inherit; font-style: inherit; font-variant: inherit; line-height: inherit; margin: 0px; padding: 0px; text-decoration: none; vertical-align: baseline;&quot;&gt;Railscasts&lt;/a&gt;&amp;nbsp;- Ruby on Rails&lt;/span&gt;&lt;/li&gt;
&lt;li style=&quot;border: 0px; font-family: inherit; font-size: inherit; font-style: inherit; font-variant: inherit; line-height: inherit; margin: 0px; padding: 0px; vertical-align: baseline;&quot;&gt;&lt;span style=&quot;color: black;&quot;&gt;&lt;a href=&quot;https://www.destroyallsoftware.com/screencasts&quot; style=&quot;border: 0px; font-family: inherit; font-size: inherit; font-style: inherit; font-variant: inherit; line-height: inherit; margin: 0px; padding: 0px; text-decoration: none; vertical-align: baseline;&quot;&gt;Destroy all Software&lt;/a&gt;&amp;nbsp;- Ruby, Python, Unix, software design.&lt;/span&gt;&lt;/li&gt;
&lt;li style=&quot;border: 0px; font-family: inherit; font-size: inherit; font-style: inherit; font-variant: inherit; line-height: inherit; margin: 0px; padding: 0px; vertical-align: baseline;&quot;&gt;&lt;span style=&quot;color: black;&quot;&gt;&lt;a href=&quot;http://www.codeschool.com/&quot; style=&quot;border: 0px; font-family: inherit; font-size: inherit; font-style: inherit; font-variant: inherit; line-height: inherit; margin: 0px; padding: 0px; text-decoration: none; vertical-align: baseline;&quot;&gt;Code School&lt;/a&gt;&amp;nbsp;- Ruby, Rails, iOS, JavaScript, HTML/CSS, etc.&lt;/span&gt;&lt;/li&gt;
&lt;li style=&quot;border: 0px; font-family: inherit; font-size: inherit; font-style: inherit; font-variant: inherit; line-height: inherit; margin: 0px; padding: 0px; vertical-align: baseline;&quot;&gt;&lt;span style=&quot;color: black;&quot;&gt;&lt;a href=&quot;http://cleancoders.com/&quot; style=&quot;border: 0px; font-family: inherit; font-size: inherit; font-style: inherit; font-variant: inherit; line-height: inherit; margin: 0px; padding: 0px; text-decoration: none; vertical-align: baseline;&quot;&gt;Clean Coders&lt;/a&gt;&amp;nbsp;- software design and discipline&lt;/span&gt;&lt;/li&gt;
&lt;li style=&quot;border: 0px; font-family: inherit; font-size: inherit; font-style: inherit; font-variant: inherit; line-height: inherit; margin: 0px; padding: 0px; vertical-align: baseline;&quot;&gt;&lt;span style=&quot;color: black;&quot;&gt;&lt;a href=&quot;https://peepcode.com/&quot; style=&quot;border: 0px; font-family: inherit; font-size: inherit; font-style: inherit; font-variant: inherit; line-height: inherit; margin: 0px; padding: 0px; text-decoration: none; vertical-align: baseline;&quot;&gt;PeepCode&lt;/a&gt;&amp;nbsp;- Long-form videos on many different languages and technologies&lt;/span&gt;&lt;/li&gt;
&lt;li style=&quot;border: 0px; font-family: inherit; font-size: inherit; font-style: inherit; font-variant: inherit; line-height: inherit; margin: 0px; padding: 0px; vertical-align: baseline;&quot;&gt;&lt;span style=&quot;color: black;&quot;&gt;&lt;a href=&quot;http://nsscreencast.com/&quot; style=&quot;border: 0px; font-family: inherit; font-size: inherit; font-style: inherit; font-variant: inherit; line-height: inherit; margin: 0px; padding: 0px; text-decoration: none; vertical-align: baseline;&quot;&gt;NSScreencast&lt;/a&gt;&amp;nbsp;- weekly bite-sized screencasts on iOS development.&lt;/span&gt;&lt;/li&gt;
&lt;li style=&quot;border: 0px; font-family: inherit; font-size: inherit; font-style: inherit; font-variant: inherit; line-height: inherit; margin: 0px; padding: 0px; vertical-align: baseline;&quot;&gt;&lt;span style=&quot;color: black;&quot;&gt;&lt;a href=&quot;http://www.youtube.com/channel/UCQMkHY8U6B9tefTQdPkpY7A/videos&quot; style=&quot;border: 0px; font-family: inherit; font-size: inherit; font-style: inherit; font-variant: inherit; line-height: inherit; margin: 0px; padding: 0px; text-decoration: none; vertical-align: baseline;&quot;&gt;Minimalist Programming&lt;/a&gt;&amp;nbsp;- Haskell&lt;/span&gt;&lt;/li&gt;
&lt;li style=&quot;border: 0px; font-family: inherit; font-size: inherit; font-style: inherit; font-variant: inherit; line-height: inherit; margin: 0px; padding: 0px; vertical-align: baseline;&quot;&gt;&lt;span style=&quot;color: black;&quot;&gt;&lt;a href=&quot;https://www.neckbeardrepublic.com/screencasts/&quot; style=&quot;border: 0px; font-family: inherit; font-size: inherit; font-style: inherit; font-variant: inherit; line-height: inherit; margin: 0px; padding: 0px; text-decoration: none; vertical-align: baseline;&quot;&gt;Neckbeard Republic&lt;/a&gt;&amp;nbsp;- Python&lt;/span&gt;&lt;/li&gt;
&lt;li style=&quot;border: 0px; font-family: inherit; font-size: inherit; font-style: inherit; font-variant: inherit; line-height: inherit; margin: 0px; padding: 0px; vertical-align: baseline;&quot;&gt;&lt;span style=&quot;color: black;&quot;&gt;&lt;a href=&quot;http://www.backbonerails.com/&quot; style=&quot;border: 0px; font-family: inherit; font-size: inherit; font-style: inherit; font-variant: inherit; line-height: inherit; margin: 0px; padding: 0px; text-decoration: none; vertical-align: baseline;&quot;&gt;Backbone Rails&lt;/a&gt;&amp;nbsp;- Rails and Backbone.js&lt;/span&gt;&lt;/li&gt;
&lt;li style=&quot;border: 0px; font-family: inherit; font-size: inherit; font-style: inherit; font-variant: inherit; line-height: inherit; margin: 0px; padding: 0px; vertical-align: baseline;&quot;&gt;&lt;span style=&quot;color: black;&quot;&gt;&lt;a href=&quot;http://build-podcast.com/&quot; style=&quot;border: 0px; font-family: inherit; font-size: inherit; font-style: inherit; font-variant: inherit; line-height: inherit; margin: 0px; padding: 0px; text-decoration: none; vertical-align: baseline;&quot;&gt;Build Podcast&lt;/a&gt;&amp;nbsp;- a different tool/tech every episode.&lt;/span&gt;&lt;/li&gt;
&lt;li style=&quot;border: 0px; font-family: inherit; font-size: inherit; font-style: inherit; font-variant: inherit; line-height: inherit; margin: 0px; padding: 0px; vertical-align: baseline;&quot;&gt;&lt;a href=&quot;http://vimcasts.org/&quot; style=&quot;border: 0px; font-family: inherit; font-size: inherit; font-style: inherit; font-variant: inherit; line-height: inherit; margin: 0px; padding: 0px; text-decoration: none; vertical-align: baseline;&quot;&gt;&lt;span style=&quot;color: black;&quot;&gt;Vimcasts&lt;/span&gt;&lt;/a&gt;&lt;/li&gt;
&lt;li style=&quot;border: 0px; font-family: inherit; font-size: inherit; font-style: inherit; font-variant: inherit; line-height: inherit; margin: 0px; padding: 0px; vertical-align: baseline;&quot;&gt;&lt;a href=&quot;http://emacsrocks.com/&quot; style=&quot;border: 0px; font-family: inherit; font-size: inherit; font-style: inherit; font-variant: inherit; line-height: inherit; margin: 0px; padding: 0px; text-decoration: none; vertical-align: baseline;&quot;&gt;&lt;span style=&quot;color: black;&quot;&gt;Emacs Rocks&lt;/span&gt;&lt;/a&gt;&lt;/li&gt;
&lt;li style=&quot;border: 0px; font-family: inherit; font-size: inherit; font-style: inherit; font-variant: inherit; line-height: inherit; margin: 0px; padding: 0px; vertical-align: baseline;&quot;&gt;&lt;a href=&quot;http://www.youtube.com/watch?v=VpFK6abGCOg&amp;amp;list=PLABBCB510477C08DB&quot; style=&quot;border: 0px; font-family: inherit; font-size: inherit; font-style: inherit; font-variant: inherit; line-height: inherit; margin: 0px; padding: 0px; text-decoration: none; vertical-align: baseline;&quot;&gt;&lt;span style=&quot;color: black;&quot;&gt;Hack Emacs&lt;/span&gt;&lt;/a&gt;&lt;/li&gt;
&lt;li style=&quot;border: 0px; font-family: inherit; font-size: inherit; font-style: inherit; font-variant: inherit; line-height: inherit; margin: 0px; padding: 0px; vertical-align: baseline;&quot;&gt;&lt;span style=&quot;color: black;&quot;&gt;&lt;a href=&quot;http://www.metacasts.tv/&quot; style=&quot;border: 0px; font-family: inherit; font-size: inherit; font-style: inherit; font-variant: inherit; line-height: inherit; margin: 0px; padding: 0px; text-decoration: none; vertical-align: baseline;&quot;&gt;MetaCasts&lt;/a&gt;&amp;nbsp;- EmberJS, Ruby, RubyMotion, JavaScript, etc.&lt;/span&gt;&lt;/li&gt;
&lt;li style=&quot;border: 0px; font-family: inherit; font-size: inherit; font-style: inherit; font-variant: inherit; line-height: inherit; margin: 0px; padding: 0px; vertical-align: baseline;&quot;&gt;&lt;span style=&quot;color: black;&quot;&gt;&lt;a href=&quot;http://ember101.com/&quot; style=&quot;border: 0px; font-family: inherit; font-size: inherit; font-style: inherit; font-variant: inherit; line-height: inherit; margin: 0px; padding: 0px; text-decoration: none; vertical-align: baseline;&quot;&gt;Ember 101&lt;/a&gt;&amp;nbsp;- EmberJS&lt;/span&gt;&lt;/li&gt;
&lt;li style=&quot;border: 0px; font-family: inherit; font-size: inherit; font-style: inherit; font-variant: inherit; line-height: inherit; margin: 0px; padding: 0px; vertical-align: baseline;&quot;&gt;&lt;span style=&quot;color: black;&quot;&gt;&lt;a href=&quot;http://www.watchmecode.net/&quot; style=&quot;border: 0px; font-family: inherit; font-size: inherit; font-style: inherit; font-variant: inherit; line-height: inherit; margin: 0px; padding: 0px; text-decoration: none; vertical-align: baseline;&quot;&gt;WatchMeCode&lt;/a&gt;&amp;nbsp;- JavaScript&lt;/span&gt;&lt;/li&gt;
&lt;li style=&quot;border: 0px; font-family: inherit; font-size: inherit; font-style: inherit; font-variant: inherit; line-height: inherit; margin: 0px; padding: 0px; vertical-align: baseline;&quot;&gt;&lt;span style=&quot;color: black;&quot;&gt;&lt;a href=&quot;http://musthack.com/&quot; style=&quot;border: 0px; font-family: inherit; font-size: inherit; font-style: inherit; font-variant: inherit; line-height: inherit; margin: 0px; padding: 0px; text-decoration: none; vertical-align: baseline;&quot;&gt;Must Hack&lt;/a&gt;&amp;nbsp;- Ruby, UNIX&lt;/span&gt;&lt;/li&gt;
&lt;li style=&quot;border: 0px; font-family: inherit; font-size: inherit; font-style: inherit; font-variant: inherit; line-height: inherit; margin: 0px; padding: 0px; vertical-align: baseline;&quot;&gt;&lt;span style=&quot;color: black;&quot;&gt;&lt;a href=&quot;http://www.youtube.com/playlist?list=PLO4TbomOdn2dD5HsavVOhlZzZ37o73P3F&quot; style=&quot;border: 0px; font-family: inherit; font-size: inherit; font-style: inherit; font-variant: inherit; line-height: inherit; margin: 0px; padding: 0px; text-decoration: none; vertical-align: baseline;&quot;&gt;Programming Tutorials from William Byrd&lt;/a&gt;&amp;nbsp;- Scheme, functional programming concepts&lt;/span&gt;&lt;/li&gt;
&lt;li style=&quot;border: 0px; font-family: inherit; font-size: inherit; font-style: inherit; font-variant: inherit; line-height: inherit; margin: 0px; padding: 0px; vertical-align: baseline;&quot;&gt;&lt;span style=&quot;color: black;&quot;&gt;&lt;a href=&quot;http://www.egghead.io/&quot; style=&quot;border: 0px; font-family: inherit; font-size: inherit; font-style: inherit; font-variant: inherit; line-height: inherit; margin: 0px; padding: 0px; text-decoration: none; vertical-align: baseline;&quot;&gt;Egghead&lt;/a&gt;&amp;nbsp;- AngularJS&lt;/span&gt;&lt;/li&gt;
&lt;li style=&quot;border: 0px; font-family: inherit; font-size: inherit; font-style: inherit; font-variant: inherit; line-height: inherit; margin: 0px; padding: 0px; vertical-align: baseline;&quot;&gt;&lt;span style=&quot;color: black;&quot;&gt;&lt;a href=&quot;http://tekpub.com/&quot; style=&quot;border: 0px; font-family: inherit; font-size: inherit; font-style: inherit; font-variant: inherit; line-height: inherit; margin: 0px; padding: 0px; text-decoration: none; vertical-align: baseline;&quot;&gt;Tekpub&lt;/a&gt;&amp;nbsp;- .NET, Ruby, JavaScript, and more&lt;/span&gt;&lt;/li&gt;
&lt;li style=&quot;border: 0px; font-family: inherit; font-size: inherit; font-style: inherit; font-variant: inherit; line-height: inherit; margin: 0px; padding: 0px; vertical-align: baseline;&quot;&gt;&lt;span style=&quot;color: black;&quot;&gt;&lt;a href=&quot;http://frontendmasters.com/&quot; style=&quot;border: 0px; font-family: inherit; font-size: inherit; font-style: inherit; font-variant: inherit; line-height: inherit; margin: 0px; padding: 0px; text-decoration: none; vertical-align: baseline;&quot;&gt;Frontend Masters&lt;/a&gt;&amp;nbsp;- HTML5, CSS3, JavaScript&lt;/span&gt;&lt;/li&gt;
&lt;li style=&quot;border: 0px; font-family: inherit; font-size: inherit; font-style: inherit; font-variant: inherit; line-height: inherit; margin: 0px; padding: 0px; vertical-align: baseline;&quot;&gt;&lt;span style=&quot;color: black;&quot;&gt;&lt;a href=&quot;http://teamtreehouse.com/&quot; style=&quot;border: 0px; font-family: inherit; font-size: inherit; font-style: inherit; font-variant: inherit; line-height: inherit; margin: 0px; padding: 0px; text-decoration: none; vertical-align: baseline;&quot;&gt;Treehouse&lt;/a&gt;&amp;nbsp;- Web, Adnroid, iOS, Ruby on Rails, PHP&lt;/span&gt;&lt;/li&gt;
&lt;li style=&quot;border: 0px; font-family: inherit; font-size: inherit; font-style: inherit; font-variant: inherit; line-height: inherit; margin: 0px; padding: 0px; vertical-align: baseline;&quot;&gt;&lt;span style=&quot;color: black;&quot;&gt;&lt;a href=&quot;http://www.eventedmind.com/&quot; style=&quot;border: 0px; font-family: inherit; font-size: inherit; font-style: inherit; font-variant: inherit; line-height: inherit; margin: 0px; padding: 0px; text-decoration: none; vertical-align: baseline;&quot;&gt;EventedMind&lt;/a&gt;&amp;nbsp;- NodeJS, Meteor&lt;/span&gt;&lt;/li&gt;
&lt;li style=&quot;border: 0px; font-family: inherit; font-size: inherit; font-style: inherit; font-variant: inherit; line-height: inherit; margin: 0px; padding: 0px; vertical-align: baseline;&quot;&gt;&lt;span style=&quot;color: black;&quot;&gt;&lt;a href=&quot;http://enjalot.github.io/dot-enter/&quot; style=&quot;border: 0px; font-family: inherit; font-size: inherit; font-style: inherit; font-variant: inherit; line-height: inherit; margin: 0px; padding: 0px; text-decoration: none; vertical-align: baseline;&quot;&gt;dot enter&lt;/a&gt;&amp;nbsp;- d3&lt;/span&gt;&lt;/li&gt;
&lt;li style=&quot;border: 0px; font-family: inherit; font-size: inherit; font-style: inherit; font-variant: inherit; line-height: inherit; margin: 0px; padding: 0px; vertical-align: baseline;&quot;&gt;&lt;span style=&quot;color: black;&quot;&gt;&lt;a href=&quot;http://www.letscodejavascript.com/&quot; style=&quot;border: 0px; font-family: inherit; font-size: inherit; font-style: inherit; font-variant: inherit; line-height: inherit; margin: 0px; padding: 0px; text-decoration: none; vertical-align: baseline;&quot;&gt;Let’s Code&lt;/a&gt;&amp;nbsp;- Test-Driven JavaScript&lt;/span&gt;&lt;/li&gt;
&lt;li style=&quot;border: 0px; font-family: inherit; font-size: inherit; font-style: inherit; font-variant: inherit; line-height: inherit; margin: 0px; padding: 0px; vertical-align: baseline;&quot;&gt;&lt;span style=&quot;color: black;&quot;&gt;&lt;a href=&quot;http://pluralsight.com/training&quot; style=&quot;border: 0px; font-family: inherit; font-size: inherit; font-style: inherit; font-variant: inherit; line-height: inherit; margin: 0px; padding: 0px; text-decoration: none; vertical-align: baseline;&quot;&gt;Pluralsight&lt;/a&gt;&amp;nbsp;- “Hardcore developer training”&lt;/span&gt;&lt;/li&gt;
&lt;li style=&quot;border: 0px; font-family: inherit; font-size: inherit; font-style: inherit; font-variant: inherit; line-height: inherit; margin: 0px; padding: 0px; vertical-align: baseline;&quot;&gt;&lt;span style=&quot;color: black;&quot;&gt;&lt;a href=&quot;http://motioncasts.tv/&quot; style=&quot;border: 0px; font-family: inherit; font-size: inherit; font-style: inherit; font-variant: inherit; line-height: inherit; margin: 0px; padding: 0px; text-decoration: none; vertical-align: baseline;&quot;&gt;Motioncasts&lt;/a&gt;&amp;nbsp;- RubyMotion&lt;/span&gt;&lt;/li&gt;
&lt;li style=&quot;border: 0px; font-family: inherit; font-size: inherit; font-style: inherit; font-variant: inherit; line-height: inherit; margin: 0px; padding: 0px; vertical-align: baseline;&quot;&gt;&lt;a href=&quot;http://www.youtube.com/azamsharp&quot; style=&quot;border: 0px; font-family: inherit; font-size: inherit; font-style: inherit; font-variant: inherit; line-height: inherit; margin: 0px; padding: 0px; text-decoration: none; vertical-align: baseline;&quot;&gt;&lt;span style=&quot;color: black;&quot;&gt;Learning iOS Development with Azam Sharp&lt;/span&gt;&lt;/a&gt;&lt;/li&gt;
&lt;li style=&quot;border: 0px; font-family: inherit; font-size: inherit; font-style: inherit; font-variant: inherit; line-height: inherit; margin: 0px; padding: 0px; vertical-align: baseline;&quot;&gt;&lt;span style=&quot;color: black;&quot;&gt;&lt;a href=&quot;http://rubytapas.com/&quot; style=&quot;border: 0px; font-family: inherit; font-size: inherit; font-style: inherit; font-variant: inherit; line-height: inherit; margin: 0px; padding: 0px; text-decoration: none; vertical-align: baseline;&quot;&gt;RubyTapas&lt;/a&gt;&amp;nbsp;– Ruby, TDD, and OOP&lt;/span&gt;&lt;/li&gt;
&lt;li style=&quot;border: 0px; font-family: inherit; font-size: inherit; font-style: inherit; font-variant: inherit; line-height: inherit; margin: 0px; padding: 0px; vertical-align: baseline;&quot;&gt;&lt;span style=&quot;color: black;&quot;&gt;&lt;a href=&quot;http://www.embercasts.com/&quot; style=&quot;border: 0px; font-family: inherit; font-size: inherit; font-style: inherit; font-variant: inherit; line-height: inherit; margin: 0px; padding: 0px; text-decoration: none; vertical-align: baseline;&quot;&gt;EmberCasts&lt;/a&gt;&amp;nbsp;– EmberJS&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3176943100655981551/posts/default/3905124665144780707'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3176943100655981551/posts/default/3905124665144780707'/><link rel='alternate' type='text/html' href='http://luiscameroon.blogspot.com/2013/07/a-list-of-programming-screencast-series.html' title='A List of Programming Screencast Series'/><author><name>Luis Cameroon</name><uri>http://www.blogger.com/profile/02443056704463245314</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author></entry><entry><id>tag:blogger.com,1999:blog-3176943100655981551.post-7494395445978904123</id><published>2013-06-05T06:58:00.001-07:00</published><updated>2013-06-05T06:58:02.242-07:00</updated><title type='text'>Reading List #6</title><content type='html'>&lt;ul&gt;&lt;li&gt;&lt;a href=&quot;http://www.washingtonpost.com/blogs/worldviews/wp/2013/05/07/map-more-than-half-of-humanity-lives-within-this-circle/&quot;&gt;More than half of humanity lives within this circle&lt;/a&gt; – see their mobile usage and stats in &lt;a href=&quot;http://business.opera.com/smw/2012/07/&quot;&gt;mobile web atlas of Asia Pacific&lt;/a&gt; (July 2012)&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://css-tricks.com/fighting-the-space-between-inline-block-elements/&quot;&gt;Fighting the Space Between Inline Block Elements&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://www.guardian.co.uk/media/appsblog/2013/apr/29/financial-times-html5-no-drawbacks?CMP=twt_gu&quot;&gt;Financial Times: ‘There is no drawback to working in HTML5′&lt;/a&gt; – also interesting concept of “finite read”&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://www.youtube.com/watch?v=r2CbbBLVaPk&quot;&gt;The User is Drunk&lt;/a&gt; – design like the user is drunk. 5 min video.&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://responsivenews.co.uk/post/50092458307/images&quot;&gt;Notes on BBC News responsive images&lt;/a&gt; by BBC devs&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://www.stucox.com/blog/you-cant-detect-a-touchscreen/&quot;&gt;You Can’t Detect A Touchscreen&lt;/a&gt; – also see Modernizr issue &lt;a href=&quot;https://github.com/Modernizr/Modernizr/issues/880&quot;&gt;touch class placed on all browers on windows 8 on a regualr pc with no touch support&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://juicystudio.com/article/html5-outline-algorithm-jaws.php&quot;&gt;The HTML5 outline algorithm and JAWS&lt;/a&gt; by Gez Lemon. So read it.&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://www.netmagazine.com/features/hot-web-standards-marchapril-2013&quot;&gt;Hot in web standards: March/April 2013&lt;/a&gt; by Lea Verou&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://darobin.github.io/web-wish/&quot;&gt;Web Wishes – Unofficial Draft&lt;/a&gt; – Web Intents/ Web Activities part #694&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://mashable.com/2013/05/07/facebook-comes-to-google-glass/&quot;&gt;Facebook Comes to Google Glass&lt;/a&gt; – rejoice!&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://www.noupe.com/webdev/ie10-and-beyond-unifying-touch-and-mouse-made-easy-with-pointer-events-75564.html&quot;&gt;IE10 and Beyond: Unifying Touch and Mouse Made Easy with Pointer Events&lt;/a&gt; also &lt;code&gt;-ms-touch-action: auto | none | manipulation | double-tap-zoom | inherit&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://www.w3.org/community/webpayments/&quot;&gt;Web Payments Community Group&lt;/a&gt; at W3C&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://www.sesameworkshop.org/assets/1191/src/Best%20Practices%20Document%2011-26-12.pdf&quot;&gt;Best Practices: Designing Touch Tablet Experiences for Preschoolers (PDF)&lt;/a&gt; – by Sesame Street&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://news.cnet.com/8301-1023_3-57583609-93/facebook-to-firefox-please-add-webp-image-support/&quot;&gt;Facebook to Firefox: Please add WebP image support&lt;/a&gt; (&lt;a href=&quot;http://www.brucelawson.co.uk/2013/save-bandwidth-webp-with-fallback/&quot;&gt;More about WebP&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://www.webkit.org/blog/2375/last-week-in-webkit-out-of-the-shadows/&quot;&gt;Last week in WebKit: Out of the Shadows&lt;/a&gt; – “Antti began ripping out parts of the Shadow DOM implementation.”&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://www.w3.org/QA/2013/05/perspectives_on_encrypted_medi.html#c4842286&quot;&gt;Perspectives on Encrypted Media Extension Reaching First Public Working Draft&lt;/a&gt; – fight about DRM at W3C. There appear to be entrenched positions, surprisingly.&lt;/li&gt;
&lt;/ul&gt;&lt;h3&gt;Misc&lt;/h3&gt;&lt;ul&gt;&lt;li&gt;&lt;a href=&quot;http://theonion.github.io/fartscroll.js/&quot;&gt;fartscroll.js&lt;/a&gt; – You want fart noises as you scroll? We’ve got you covered.&lt;/li&gt;
&lt;/ul&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3176943100655981551/posts/default/7494395445978904123'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3176943100655981551/posts/default/7494395445978904123'/><link rel='alternate' type='text/html' href='http://luiscameroon.blogspot.com/2013/06/reading-list-6.html' title='Reading List #6'/><author><name>Luis Cameroon</name><uri>http://www.blogger.com/profile/02443056704463245314</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author></entry><entry><id>tag:blogger.com,1999:blog-3176943100655981551.post-8666740627194814935</id><published>2013-04-27T23:38:00.001-07:00</published><updated>2013-04-27T23:38:33.046-07:00</updated><title type='text'>Reading List #5</title><content type='html'>&lt;br /&gt;
&lt;h3&gt;Web Standards&lt;/h3&gt;&lt;ul&gt;&lt;li&gt;&lt;a href=&quot;http://www.stevesouders.com/blog/2013/04/21/html5-video-bytes-on-ios/&quot;&gt;HTML5 VIDEO bytes on iOS Mobile devices&lt;/a&gt; by Steve Souders:  “Mobile devices ignore all values of PRELOAD in order to avoid high data plan costs, and instead only download the video when the user initiates playback … However, my testing shows that iOS downloads up to 298K of video data, resulting in unexpected costs to users.”&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://groups.google.com/a/chromium.org/forum/#!topic/blink-dev/jf76F8V--0A&quot;&gt;blink-dev: Intent to implement lazy-block layout&lt;/a&gt; – “Developers can page in new content while the user is scrolling without fear of making the app slow as well … Our demo has a 4 second layout that’s reduced to 32ms with lazy-block.”&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://www.uxmatters.com/mt/archives/2013/03/common-misconceptions-about-touch.php&quot;&gt;Common Misconceptions About Touch&lt;/a&gt; – thoroughly researched, lots of references&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://ptb2.me/flexgrid/&quot;&gt;ptb/flexgrid: a flexbox-based CSS grid in 3.6k&lt;/a&gt; – “The flexbox layout is supported on Chrome, all versions of iOS, Safari 3+, IE 10+, Opera 12.10+, and Firefox 22+. Other browsers get the fluid Bootstrap 3 layout, except Internet Explorer 6 and 7 which use a fixed layout.” &lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://www.w3.org/blog/International/2013/04/22/4-new-articles-about-working-with-html-markup-in-arabic-hebrew-and-other-right-to-left-scripts/&quot;&gt;4 new articles about working with HTML markup in Arabic, Hebrew and Other Right-to-left Scripts&lt;/a&gt;  by W3CInternationalisation maestro, Richard Ishida&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://svarden.se/blog/2013-04-22-right-click-and-save-as/&quot;&gt;“Right click and save as” needs to go away&lt;/a&gt; – just use the HTML5 &lt;code&gt;download&lt;/code&gt; attribute users can just click the link to save it&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://coding.smashingmagazine.com/2013/04/26/css3-transitions-thank-god-specification/&quot;&gt;Thank God We Have A Specification!&lt;/a&gt; – An excellent article by  @rodneyrehm on the CSS transitions mess (how did we get here?)&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://github.com/EverythingMe/webp-test&quot;&gt;Testing WebP compression for app icons&lt;/a&gt; – “Looking at the ratio of WebP file sizes to PNG file sizes ratio, we can see WebP constantly provides better results”&lt;/li&gt;
&lt;li&gt;Talking of webP, &lt;a href=&quot;https://groups.google.com/a/chromium.org/forum/#!msg/blink-dev/MlE9vYVUlzg/hycQvA2eFn4J&quot;&gt;Blink-dev discussion on implementing &amp;lt;picture&amp;gt;&lt;/a&gt; which would let devs &lt;a href=&quot;http://www.brucelawson.co.uk/2013/save-bandwidth-webp-with-fallback/&quot;&gt;send webP content images to capable browsers, with fallbacks&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://freeculture.org/blog/2013/04/23/dont-let-the-myths-fool-you-the-w3cs-plan-for-drm-in-html5-is-a-betrayal-to-all-web-users/&quot;&gt;Don’t let the myths fool you: the W3C’s plan for DRM in HTML5 is a betrayal to all Web users.&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://john.foliot.ca/drm-at-the-w3c/&quot;&gt;DRM at the W3C? Not such a Bad Idea&lt;/a&gt; – John Foliot on “The Unpopular Position”&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://programming.oreilly.com/2013/04/stop-standardizing-html.html&quot;&gt;Stop standardizing HTML&lt;/a&gt; says   Simon St. Laurent. It’s XML again, but without draconian parsing or schemas. Essentially, every web page has its own private vocabulary.&lt;/li&gt;
&lt;/ul&gt;&lt;h3&gt;Industry&lt;/h3&gt;&lt;ul&gt;&lt;li&gt;&lt;a href=&quot;http://anarchistnews.org/content/anarchists-we-need-talk-about-facebook&quot;&gt;Anarchists: We need to talk about Facebook &lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://news.cnet.com/8301-1023_3-57580221-93/its-about-time-runescape-dumps-java-for-html5/?utm_source=html5weekly&amp;amp;utm_medium=email&quot;&gt;It’s about time: RuneScape dumps Java for HTML5&lt;/a&gt; – “With more than 200 million RuneScape accounts and thousands online at the same time, RuneScape is a big reason for a lot of people not to uninstall Java”&lt;/li&gt;
&lt;li&gt;&lt;br /&gt;
&lt;a href=&quot;http://blog.adrianroselli.com/2013/04/ncsa-moscaic-turns-20.html&quot;&gt;Happy 20th birthday to Mosaic 1.0 browser&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;h3&gt;Misc&lt;/h3&gt;&lt;ul&gt;&lt;li&gt;&lt;a href=&quot;http://rrrrrrrroll.tumblr.com/&quot;&gt;RRRRRRRROLL_gif&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3176943100655981551/posts/default/8666740627194814935'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3176943100655981551/posts/default/8666740627194814935'/><link rel='alternate' type='text/html' href='http://luiscameroon.blogspot.com/2013/04/reading-list-5.html' title='Reading List #5'/><author><name>Luis Cameroon</name><uri>http://www.blogger.com/profile/02443056704463245314</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author></entry><entry><id>tag:blogger.com,1999:blog-3176943100655981551.post-5891496865338957260</id><published>2013-04-27T22:42:00.001-07:00</published><updated>2013-04-27T22:42:42.992-07:00</updated><title type='text'>CSS3 Transitions: Thank God We Have A Specification!</title><content type='html'>&lt;a href=&quot;http://www.smashingmagazine.com/2013/04/26/thank-god-we-have-a-specification/&quot;&gt;CSS3 Transitions: Thank God We Have A Specification!&lt;/a&gt;: &lt;br /&gt;
&lt;table style=&quot;width: 650px;&quot;&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td width=&quot;650&quot;&gt;&lt;a href=&quot;http://auslieferung.commindo-media-ressourcen.de/random.php?mode=target&amp;amp;collection=smashing-rss&amp;amp;position=1&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://auslieferung.commindo-media-ressourcen.de/random.php?mode=image&amp;amp;collection=smashing-rss&amp;amp;position=1&quot; /&gt;&lt;/a&gt;&amp;nbsp;&lt;a href=&quot;http://auslieferung.commindo-media-ressourcen.de/random.php?mode=target&amp;amp;collection=smashing-rss&amp;amp;position=2&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://auslieferung.commindo-media-ressourcen.de/random.php?mode=image&amp;amp;collection=smashing-rss&amp;amp;position=2&quot; /&gt;&lt;/a&gt;&amp;nbsp;&lt;a href=&quot;http://auslieferung.commindo-media-ressourcen.de/random.php?mode=target&amp;amp;collection=smashing-rss&amp;amp;position=3&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://auslieferung.commindo-media-ressourcen.de/random.php?mode=image&amp;amp;collection=smashing-rss&amp;amp;position=3&quot; /&gt;&lt;/a&gt;&lt;/td&gt; &lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;This article is packed with a number of quirks and issues you should be aware of when working with CSS3 transitions. Please note that I’m not showing any workarounds or giving advice on how to circumvent the issues discussed. Alex MacCaw has already written a very insightful and thorough article on “&lt;a href=&quot;http://blog.alexmaccaw.com/css-transitions&quot;&gt;All You Need to Know About CSS Transitions&lt;/a&gt;.”&lt;br /&gt;
Whereas Alex wrote about achieving particular effects, I’m going to talk about the technical background, especially the JavaScript-facing side. Pitfalls — &lt;strong&gt;this article is all about pitfalls&lt;/strong&gt;.&lt;br /&gt;
&lt;h3&gt;Table of Contents&lt;/h3&gt;&lt;ul&gt;&lt;li&gt;&lt;a href=&quot;http://www.smashingmagazine.com/2013/04/26/thank-god-we-have-a-specification/#specifying-a-transition&quot;&gt;Specifying a transition&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://www.smashingmagazine.com/2013/04/26/thank-god-we-have-a-specification/#when-a-transition-is-complete&quot;&gt;When a transition is complete&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://www.smashingmagazine.com/2013/04/26/thank-god-we-have-a-specification/#transitionable-properties&quot;&gt;Transitionable properties&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://www.smashingmagazine.com/2013/04/26/thank-god-we-have-a-specification/#transition-property-priority&quot;&gt;Transition property priority&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://www.smashingmagazine.com/2013/04/26/thank-god-we-have-a-specification/#transitioning-from-and-to-auto&quot;&gt;Transitioning from and to &lt;code&gt;auto&lt;/code&gt;&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://www.smashingmagazine.com/2013/04/26/thank-god-we-have-a-specification/#implicit-transitions&quot;&gt;Implicit transitions&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://www.smashingmagazine.com/2013/04/26/thank-god-we-have-a-specification/#transitions-and-pseudo-elements&quot;&gt;Transitions and pseudo-elements&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://www.smashingmagazine.com/2013/04/26/thank-god-we-have-a-specification/#background-tabs&quot;&gt;Background tabs&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://www.smashingmagazine.com/2013/04/26/thank-god-we-have-a-specification/#invisible-elements&quot;&gt;Invisible elements&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://www.smashingmagazine.com/2013/04/26/thank-god-we-have-a-specification/#transitioning-before-the-dom-is-ready&quot;&gt;Transitioning before the DOM is ready&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://www.smashingmagazine.com/2013/04/26/thank-god-we-have-a-specification/#rendering-quirks&quot;&gt;Rendering quirks&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://www.smashingmagazine.com/2013/04/26/thank-god-we-have-a-specification/#specification-recommendations&quot;&gt;Specification recommendations&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://www.smashingmagazine.com/2013/04/26/thank-god-we-have-a-specification/#use-the-delay-luke&quot;&gt;Use the &lt;code&gt;delay&lt;/code&gt;, Luke&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://www.smashingmagazine.com/2013/04/26/thank-god-we-have-a-specification/#conclusion&quot;&gt;Conclusion&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;Separation of concerns is nothing new — we’ve been using template engines for years to accomplish exactly that, separating our HTML from whatever scripting language we were using. &lt;strong&gt;A website has three major concerns:&lt;/strong&gt; structure (HTML), layout and style (CSS), and behavior (JavaScript). CSS crossed the line and became behavioral quite a while ago, but that’s a whole different discussion.&lt;br /&gt;
A couple of weeks ago, I was tasked with developing a JavaScript module that would allow for the use of CSS transitions in a way that the JavaScript side would know nothing about the transitions taking place. &lt;strong&gt;The actual problem is the asynchronousity of transitions.&lt;/strong&gt; After writing a bunch of tests, I gave up on the task. It cannot be done with a reasonable amount of code and initialization time. My test results are what this article is all about.&lt;br /&gt;
Before getting started with transitions, we have to talk about a little, frequently used, helper function. &lt;a href=&quot;https://developer.mozilla.org/en-US/docs/DOM/window.getComputedStyle&quot;&gt;&lt;code&gt;getComputedStyle()&lt;/code&gt;&lt;/a&gt; is a JavaScript method that returns a CSS property’s value as the browser interprets it. This API goes back to “&lt;a href=&quot;http://www.w3.org/TR/DOM-Level-2-Style/css.html#CSS-CSSview-getComputedStyle&quot;&gt;DOM Level 2: getComputedStyle()&lt;/a&gt;” and “&lt;a href=&quot;http://www.w3.org/TR/1998/REC-CSS2-19980512/cascade.html#computed-value&quot;&gt;CSS Level 2: Computed Values&lt;/a&gt;” — which basically specify that a computed style is an absolute value.&lt;br /&gt;
This is fine for properties such as &lt;a href=&quot;https://developer.mozilla.org/en-US/docs/CSS/font-size&quot;&gt;&lt;code&gt;font-size&lt;/code&gt;&lt;/a&gt;, which take only one argument and are reliably converted to pixel values. However, it doesn’t cover how browsers should handle shorthand properties, such as &lt;a href=&quot;https://developer.mozilla.org/en-US/docs/CSS/margin&quot;&gt;&lt;code&gt;margin&lt;/code&gt;&lt;/a&gt; — some browsers return nothing, others something semi-useful. Then there are properties with different but equivalent values to consider, such as &lt;a href=&quot;https://developer.mozilla.org/en-US/docs/CSS/font-weight&quot;&gt;&lt;code&gt;font-weight&lt;/code&gt;&lt;/a&gt;’s &lt;code&gt;bold&lt;/code&gt; and &lt;code&gt;700&lt;/code&gt;. WebKit also has &lt;a href=&quot;https://bugs.webkit.org/show_bug.cgi?id=106535&quot;&gt;a bug&lt;/a&gt; that extracts the computed value of properties from pseudo-elements.&lt;br /&gt;
&lt;em&gt;The quirks described here were identified in January 2013 using Firefox 18 (Gecko), Opera 12.12 (Presto), Internet Explorer 10 (Trident), Safari 6.0.2 (WebKit), Chrome 23 (WebKit), as well as Gecko’s and WebKit’s nightly build channels.&lt;/em&gt;&lt;br /&gt;
Without further ado, &lt;strong&gt;let’s dive into the specifications and implementations&lt;/strong&gt;, a world riddled with misconceptions. Please note that in order to be concise, I’ve omitted vendor prefixes from the examples.&lt;br /&gt;
&lt;blockquote&gt;Not knowing is difficult to handle. It’s easier to assume.&lt;br /&gt;
– Dr. Axel Rauschmayer&lt;/blockquote&gt;… But assumptions are often wrong. I discovered the information in this article by creating a &lt;a href=&quot;http://test.csswg.org/shepherd/search/spec/CSS3-TRANSITIONS/&quot;&gt;CSS3 Transitions Test Suite&lt;/a&gt;.&lt;br /&gt;
&lt;h3&gt;Specifying A Transition&lt;/h3&gt;Besides the shorthand &lt;a href=&quot;http://www.w3.org/TR/css3-transitions/#transition-property-property&quot;&gt;&lt;code&gt;transition&lt;/code&gt; property&lt;/a&gt;, the CSS3 transition specification defines the following four CSS properties for specifying an animated change of state:&lt;br /&gt;
&lt;ul&gt;&lt;li&gt;&lt;code&gt;transition-property&lt;/code&gt;,&lt;/li&gt;
&lt;li&gt;&lt;code&gt;transition-duration&lt;/code&gt;,&lt;/li&gt;
&lt;li&gt;&lt;code&gt;transition-delay&lt;/code&gt;,&lt;/li&gt;
&lt;li&gt;&lt;code&gt;transition-timing-function&lt;/code&gt;.&lt;/li&gt;
&lt;/ul&gt;&lt;h4&gt;CSS Properties to Transition&lt;/h4&gt;The &lt;a href=&quot;http://www.w3.org/TR/css3-transitions/#transition-property-property&quot;&gt;&lt;code&gt;transition-property&lt;/code&gt; property&lt;/a&gt; defines the &lt;strong&gt;property (or properties) to animate&lt;/strong&gt;. The default is &lt;code&gt;all&lt;/code&gt;, meaning that all properties a browser can transition will be animated on change (if there’s a &lt;code&gt;transition-duration&lt;/code&gt; greater than &lt;code&gt;0s&lt;/code&gt;). The property accepts one value or a list of comma-separated values (like all other &lt;code&gt;transition-*&lt;/code&gt; properties).&lt;br /&gt;
The specification states that a browser should accept and preserve any property it doesn’t recognize. So, the following example would still run a transition on &lt;code&gt;padding&lt;/code&gt; lasting 2 seconds:&lt;br /&gt;
&lt;pre&gt;&lt;code&gt;
transition-property: foobar, padding; 
transition-duration: 1s, 2s;
&lt;/code&gt;&lt;/pre&gt;Contrary to the specification, WebKit parses the above to &lt;code&gt;transition-property: all&lt;/code&gt;. Firefox and Opera parse it to &lt;code&gt;transition-property: all, padding&lt;/code&gt;.&lt;br /&gt;
&lt;h4&gt;Duration of a Transition&lt;/h4&gt;The &lt;a href=&quot;http://www.w3.org/TR/css3-transitions/#transition-duration-property&quot;&gt;&lt;code&gt;transition-duration&lt;/code&gt; property&lt;/a&gt; defines the &lt;strong&gt;amount of time&lt;/strong&gt; a transition should take to get from the initial state to the target state. It accepts a &lt;a href=&quot;http://www.w3.org/TR/css3-values/#time&quot;&gt;&lt;code&gt;&amp;lt;time&amp;gt;&lt;/code&gt;&lt;/a&gt; value in seconds or milliseconds (for example, &lt;code&gt;2.3s&lt;/code&gt; and &lt;code&gt;2300ms&lt;/code&gt; both specify 2.3 seconds).&lt;br /&gt;
While the specification makes it clear that values must be a positive number, Opera also accepts &lt;code&gt;-5s&lt;/code&gt; — at least for &lt;code&gt;getComputedStyle()&lt;/code&gt;. Opera and Internet Explorer (IE) do not accept values lower than &lt;code&gt;10ms&lt;/code&gt;, although the specification mentions no such limitation. In all fairness, you wouldn’t notice a transition lasting 9 milliseconds anyways. WebKit (except for the current WebKit nightly) has a bug in its &lt;code&gt;getComputedStyle()&lt;/code&gt; implementation, returning values such as &lt;code&gt;0.009999999776482582s&lt;/code&gt; instead of &lt;code&gt;0.01s&lt;/code&gt;. At least all browsers agree on returning second-based values.&lt;br /&gt;
&lt;h4&gt;Delay of a Transition&lt;/h4&gt;The &lt;a href=&quot;http://www.w3.org/TR/css3-transitions/#transition-delay-property&quot;&gt;&lt;code&gt;transition-delay&lt;/code&gt; property&lt;/a&gt; defines the &lt;strong&gt;time to wait&lt;/strong&gt; before executing a transition, also using &lt;code&gt;&amp;lt;time&amp;gt;&lt;/code&gt; values. The &lt;code&gt;delay&lt;/code&gt; may be a negative value, which will start the transition immediately and make it appear as though the transition had started at the given offset in time — essentially starting with a jump.&lt;br /&gt;
As with &lt;code&gt;transition-duration&lt;/code&gt;, IE and Opera don’t accept values between &lt;code&gt;-10ms&lt;/code&gt; and &lt;code&gt;10ms&lt;/code&gt;. WebKit’s floating point issues appear here, too.&lt;br /&gt;
&lt;h4&gt;Timing Functions&lt;/h4&gt;The &lt;a href=&quot;http://www.w3.org/TR/css3-transitions/#transition-timing-function-property&quot;&gt;&lt;code&gt;transition-timing-function&lt;/code&gt; property&lt;/a&gt; defines the &lt;strong&gt;mathematical function used to calculate a property’s value&lt;/strong&gt; at time &lt;code&gt;t&lt;/code&gt;. There are three basic types: &lt;code&gt;cubic-bezier(x1, y1, x2, y2)&lt;/code&gt;, &lt;code&gt;step(&amp;lt;number&amp;gt;, start|end)&lt;/code&gt;, and keywords that map to predefined cubic bezier curves. Most likely, you already know the keywords &lt;code&gt;linear&lt;/code&gt;, &lt;code&gt;ease&lt;/code&gt;, &lt;code&gt;ease-in&lt;/code&gt;, &lt;code&gt;ease-out&lt;/code&gt; and &lt;code&gt;ease-in-out&lt;/code&gt;. The math behind cubic beziers gets ridiculously unimportant when using &lt;a href=&quot;https://twitter.com/LeaVerou&quot;&gt;Lea Verou&lt;/a&gt;’s charming little &lt;a href=&quot;http://cubic-bezier.com/#.17,.67,.83,.67&quot;&gt;Cubic Bezier Editor&lt;/a&gt;. While cubic bezier curves make smooth transitions, the &lt;code&gt;step()&lt;/code&gt; functions don’t. They instead jump to the next value (i.e. the next step) at a regular interval. This allows for frame-by-frame animations; see “&lt;a href=&quot;http://lea.verou.me/2011/09/pure-css3-typing-animation-with-steps/&quot;&gt;Pure CSS3 Typing Animation With steps()&lt;/a&gt;” for an example.&lt;br /&gt;
The computed value of &lt;code&gt;linear&lt;/code&gt; is usually represented as &lt;code&gt;cubic-bezier(0, 0, 1, 1)&lt;/code&gt; — except for WebKit, which actually returns &lt;code&gt;linear&lt;/code&gt;. But not to worry: WebKit will still return &lt;code&gt;cubic-bezier(0.25, 0.1, 0.25, 1)&lt;/code&gt; instead of &lt;code&gt;ease&lt;/code&gt;. The current WebKit nightly returns the keyword for all defined keywords, though. Looking on the bright side, in a couple of months WebKit won’t be inconsistent with itself — only with the rest of the browser world.&lt;br /&gt;
The specification stipulates that the &lt;code&gt;x&lt;/code&gt; values must be between &lt;code&gt;0&lt;/code&gt; and &lt;code&gt;1&lt;/code&gt;, while the &lt;code&gt;y&lt;/code&gt; values may exceed that range. Contrary to the specification, WebKit allows &lt;code&gt;x&lt;/code&gt; to exceed the bounds, at least computationally. At the time of writing, the Android browser (version 4.0) mixes up ranges for &lt;code&gt;x&lt;/code&gt; and &lt;code&gt;y&lt;/code&gt;, essentially disallowing “bounce” effects.&lt;br /&gt;
&lt;h3&gt;When A Transition Is Complete&lt;/h3&gt;I already mentioned that CSS transitions run asynchronously. The specification provides the &lt;code&gt;TransitionEnd&lt;/code&gt; event to allow JavaScript to synchronize with the end of a transition. Sadly, the specification isn’t very specific about this event. In fact, it simply states that an event is to be fired for every property that has undergone a transition. If you need a single word to describe the situation, “nightmare” isn’t far off.&lt;br /&gt;
While the specification says that shorthand properties (such as &lt;code&gt;padding&lt;/code&gt;) should run transitions for all properties that it covers (&lt;code&gt;padding-top&lt;/code&gt;, &lt;code&gt;padding-right&lt;/code&gt;, etc.), it doesn’t say which property should be named in a &lt;code&gt;TransitionEnd&lt;/code&gt; event. While Gecko, Trident and Presto agree on triggering events for the longhand sub-properties (such as &lt;code&gt;padding-top&lt;/code&gt;), even if a transition was defined for a shorthand property (such as &lt;code&gt;padding&lt;/code&gt;), &lt;strong&gt;WebKit would take the opportunity to screw things up.&lt;/strong&gt; WebKit would trigger an event for &lt;code&gt;padding&lt;/code&gt; if (and only if) you specified &lt;code&gt;transition-property: padding&lt;/code&gt;, but &lt;code&gt;transition-property: all&lt;/code&gt; would trigger the event for &lt;code&gt;padding-left&lt;/code&gt; et al. For some reason, iPhone 6.0.1’s Safari browser &lt;em&gt;might&lt;/em&gt; also triggers events for &lt;code&gt;font-size&lt;/code&gt; and &lt;code&gt;line-height&lt;/code&gt; when &lt;code&gt;padding&lt;/code&gt; is being transitioned. Confused yet?&lt;br /&gt;
&lt;pre&gt;&lt;code&gt;
.example {
  padding: 1px;
  transition-property: padding;
  transition-duration: 1s;
}

.example:hover {
  padding: 10px;
}
&lt;/code&gt;&lt;/pre&gt;The above CSS will trigger different &lt;code&gt;TransitionEnd&lt;/code&gt; events across browsers:&lt;br /&gt;
&lt;dl&gt;&lt;dt&gt;Gecko, Trident, Presto&lt;/dt&gt;
&lt;dd&gt;&lt;code&gt;padding-top&lt;/code&gt;, &lt;code&gt;padding-right&lt;/code&gt;, &lt;code&gt;padding-bottom&lt;/code&gt;, &lt;code&gt;padding-left&lt;/code&gt;&lt;/dd&gt;
&lt;dt&gt;WebKit&lt;/dt&gt;
&lt;dd&gt;&lt;code&gt;padding&lt;/code&gt;&lt;/dd&gt; &lt;/dl&gt;&lt;pre&gt;&lt;code&gt;
.example {
  padding: 1px;
  transition-property: all, padding;
  transition-duration: 1s;
}

.example:hover {
  padding: 10px;
}
&lt;/code&gt;&lt;/pre&gt;The CSS above will trigger different &lt;code&gt;TransitionEnd&lt;/code&gt; events across browsers:&lt;br /&gt;
&lt;dl&gt;&lt;dt&gt;Gecko, Trident, Presto, WebKit&lt;/dt&gt;
&lt;dd&gt;&lt;code&gt;padding-top&lt;/code&gt;, &lt;code&gt;padding-right&lt;/code&gt;, &lt;code&gt;padding-bottom&lt;/code&gt;, &lt;code&gt;padding-left&lt;/code&gt;&lt;/dd&gt;
&lt;dt&gt;Safari 6.0.1 on iPhone (not iPad, mind you!)&lt;/dt&gt;
&lt;dd&gt;&lt;code&gt;padding-top&lt;/code&gt;, &lt;code&gt;padding-right&lt;/code&gt;, &lt;code&gt;padding-bottom&lt;/code&gt;, &lt;code&gt;padding-left&lt;/code&gt;, &lt;code&gt;font-size&lt;/code&gt;, &lt;code&gt;line-height&lt;/code&gt;&lt;/dd&gt; &lt;/dl&gt;I said that you could specify a negative &lt;code&gt;transition-delay&lt;/code&gt; to “jumpstart” your transition. But what happens for &lt;code&gt;transition-duration: 1s; transition-delay: -1s;&lt;/code&gt;? Gecko and WebKit immediately jump to the target value and trigger an event. Trident and Presto won’t trigger any events.&lt;br /&gt;
&lt;strong&gt;That floating point issue that WebKit experiences&lt;/strong&gt; in &lt;code&gt;getComputedStyle()&lt;/code&gt; is also present in &lt;code&gt;TransitionEnd.elapsedTime&lt;/code&gt; — consistently in all browsers. &lt;code&gt;Math.round(event.elapsedTime * 1000) / 1000&lt;/code&gt; will “fix” that for you.&lt;br /&gt;
WebKit and IE have implemented an &lt;a href=&quot;http://snook.ca/archives/html_and_css/background-position-x-y&quot;&gt;unspecified extension to &lt;code&gt;background-position&lt;/code&gt;&lt;/a&gt; that causes them to trigger &lt;code&gt;TransitionEnd&lt;/code&gt; events for &lt;code&gt;background-position-x&lt;/code&gt; and &lt;code&gt;background-position-y&lt;/code&gt;, instead of &lt;code&gt;background-position&lt;/code&gt;.&lt;br /&gt;
So, even if you &lt;em&gt;knew&lt;/em&gt; that a transition was taking place, you wouldn’t be able to rely on the &lt;code&gt;TransitionEnd.propertyName&lt;/code&gt; that you’re given. While you &lt;em&gt;could&lt;/em&gt; write loads of JavaScript to equalize the behavior, you wouldn’t be able to do this in a future-proof way without doing proper feature detection for every single property. And this could include properties you might not even know are animatable.&lt;br /&gt;
&lt;h3&gt;Transitionable Properties&lt;/h3&gt;The specification &lt;a href=&quot;http://www.w3.org/TR/css3-transitions/#animatable-css&quot;&gt;lists a number of CSS properties&lt;/a&gt; that a browser is supposed to support animated transition for. This list contains properties of CSS2.1. Any of the newer properties will be marked as animatable in their respective specifications — as &lt;a href=&quot;http://www.w3.org/TR/css3-flexbox/#order-property&quot;&gt;&lt;code&gt;order&lt;/code&gt; of the Flexible Box Layout&lt;/a&gt; shows.&lt;br /&gt;
The property’s value type is an important factor. The property &lt;code&gt;margin-top&lt;/code&gt; accepts &lt;code&gt;&amp;lt;length&amp;gt;&lt;/code&gt; and &lt;code&gt;&amp;lt;percentage&amp;gt;&lt;/code&gt; values, but according to the list of transitionable CSS properties, only &lt;code&gt;&amp;lt;length&amp;gt;&lt;/code&gt; is to be animated. But that didn’t keep browser vendors from implementing transitions for &lt;code&gt;&amp;lt;percentage&amp;gt;&lt;/code&gt; values anyway. The &lt;code&gt;word-spacing&lt;/code&gt; property is a different story, though. The specification includes &lt;code&gt;&amp;lt;percentage&amp;gt;&lt;/code&gt; values, but at the time of writing, no browser is able to animate that.&lt;br /&gt;
Ignoring the (inherently unreliable) &lt;code&gt;TransitionEnd&lt;/code&gt; events, a property is transitioned from value A to value B if its &lt;code&gt;getComputedStyle()&lt;/code&gt; value is different from A and B at a given time during the transition. Because there is no such thing as a “CSS property value changed” event, &lt;strong&gt;you’re left with polling the DOM&lt;/strong&gt;. &lt;a href=&quot;https://developer.mozilla.org/en-US/docs/DOM/window.setTimeout&quot;&gt;&lt;code&gt;setTimeout()&lt;/code&gt;&lt;/a&gt;’s resolution is not good enough to do this for fast transitions (a duration of less than a few hundred milliseconds). &lt;a href=&quot;https://developer.mozilla.org/en-US/docs/DOM/window.requestAnimationFrame&quot;&gt;&lt;code&gt;requestAnimationFrame()&lt;/code&gt;&lt;/a&gt; is your friend for this. The browser will call you before it repaints to screen, allowing you to grab a couple of intermediate values during transitions. Except for Opera, all engines have this feature already.&lt;br /&gt;
Instead of bloating this article with a full compatibility table, I’ve sent my results to Oli Studholme (&lt;a href=&quot;http://twitter.com/boblet&quot;&gt;@boblet&lt;/a&gt;), who has updated his list of “&lt;a href=&quot;http://oli.jp/2010/css-animatable-properties/&quot;&gt;CSS Animatable Properties&lt;/a&gt;” accordingly.&lt;br /&gt;
&lt;h3&gt;Priority of Transition Properties&lt;/h3&gt;The specification on the &lt;a href=&quot;http://www.w3.org/TR/css3-transitions/#transition-property-property&quot;&gt;&lt;code&gt;transition-property&lt;/code&gt; property&lt;/a&gt; states that we’re allowed to define a property multiple times:&lt;br /&gt;
&lt;blockquote&gt;If a property is specified multiple times in the value of ‘transition-property’ (either on its own, via a shorthand that contains it, or via the ‘all’ value), then the transition that starts uses the duration, delay, and timing function at the index corresponding to the last item in the value of ‘transition-property’ that calls for animating that property.&lt;/blockquote&gt;So, we can make &lt;code&gt;padding&lt;/code&gt; transition for 1 second, while making &lt;code&gt;padding-left&lt;/code&gt; take 2 seconds; or define a default transition style using &lt;code&gt;transition-property: all&lt;/code&gt; and overwrite that for particular properties.&lt;br /&gt;
In Firefox and IE, this works fine. Opera mixes up the priority order, though. Instead of simply using the &lt;em&gt;last&lt;/em&gt; applicable property in the list, it treats &lt;code&gt;padding-left&lt;/code&gt; as more specific than &lt;code&gt;padding&lt;/code&gt; and &lt;code&gt;all&lt;/code&gt;.&lt;br /&gt;
The real problem is WebKit. It’s somehow managed to execute a transition multiple times if a property is specified multiple times. To really freak out WebKit, try running a transition for &lt;code&gt;transition-property: padding, padding-left&lt;/code&gt; with the very small &lt;code&gt;transition-duration: 0.1s&lt;/code&gt; (warning: this is not a good idea for epileptics). WebKit will &lt;em&gt;render&lt;/em&gt; the transition at least twice. But the real beauty is the &lt;code&gt;TransitionEnd&lt;/code&gt; events, of which you could receive up to &lt;em&gt;hundreds&lt;/em&gt; for a single transition.&lt;br /&gt;
&lt;h3&gt;Transitioning From And To &lt;code&gt;auto&lt;/code&gt;&lt;/h3&gt;The CSS property value &lt;code&gt;auto&lt;/code&gt; translates to “Dear browser, please calculate some reasonable value for this.” Paragraphs (&lt;code&gt;&amp;lt;p&amp;gt;&lt;/code&gt;) and any block-level elements will be as wide as their parent if they have &lt;code&gt;width: auto&lt;/code&gt;. There are times when you’ll change from &lt;code&gt;width: auto&lt;/code&gt; to a specific width — and want to transition that change. The specification neither enforces nor denies the use of &lt;code&gt;auto&lt;/code&gt; values for transitionable properties.&lt;br /&gt;
Firefox, IE and Opera cannot transition from or to &lt;code&gt;auto&lt;/code&gt; values. IE makes a little exception for &lt;code&gt;z-index&lt;/code&gt;, but that’s it. WebKit, on the other hand, is capable of transitioning from and to pretty much any CSS property that accepts the &lt;code&gt;auto&lt;/code&gt; value. WebKit doesn’t like &lt;code&gt;clip&lt;/code&gt; too much; for that property, it will only trigger a &lt;code&gt;TransitionEnd&lt;/code&gt; event, without generating or showing any intermediate values or states during the transition.&lt;br /&gt;
For the other properties, such as &lt;code&gt;width&lt;/code&gt; and &lt;code&gt;height&lt;/code&gt;, WebKit’s behavior is not quite what you’d expect. If &lt;code&gt;width: auto&lt;/code&gt; translated to a calculated width of &lt;code&gt;300px&lt;/code&gt; and you transitioned that to &lt;code&gt;100px&lt;/code&gt;, then your transition would not shrink from 300 to 100 pixels. Instead, it would grow from 0 to 100 pixels.&lt;br /&gt;
For a full compatibility table, have a look at “&lt;a href=&quot;http://oli.jp/2010/css-animatable-properties/&quot;&gt;CSS Animatable Properties&lt;/a&gt;.”&lt;br /&gt;
&lt;h3&gt;Implicit Transitions&lt;/h3&gt;An “implicit transition” happens when a change to one property causes another property to be transitioned — or if you change a property on a parent element and cause a child to transition either the inherited property or a dependent property. Confused? Consider &lt;code&gt;font-size: 18px; padding: 2em;&lt;/code&gt; — the padding is calculated as &lt;code&gt;2 × font-size&lt;/code&gt;, because that’s what em does, giving us 36 pixels.&lt;br /&gt;
There are various &lt;strong&gt;relative value types&lt;/strong&gt;: &lt;code&gt;&amp;lt;percentage&amp;gt;&lt;/code&gt;, &lt;code&gt;&amp;lt;length&amp;gt;&lt;/code&gt;, &lt;code&gt;em&lt;/code&gt;, &lt;code&gt;rem&lt;/code&gt;, &lt;code&gt;vh&lt;/code&gt;, &lt;code&gt;vw&lt;/code&gt;, etc. Using a relative value, such as &lt;code&gt;padding: 2em&lt;/code&gt;, makes the browser recalculate the property’s &lt;code&gt;getComputedValue()&lt;/code&gt; every time its depending value (such as &lt;code&gt;font-size&lt;/code&gt;) changes. That in turn triggers a transition for &lt;code&gt;padding&lt;/code&gt; because the computed style has changed. This transition is considered to be “implicit” because the &lt;code&gt;padding&lt;/code&gt; property was not modified explicitly.&lt;br /&gt;
Most browsers run these implicit transitions. The exception is IE 10, which runs them only for the &lt;code&gt;line-height&lt;/code&gt; property. WebKit runs implicit transitions for all applicable properties except &lt;code&gt;vertical-align&lt;/code&gt;. Besides font-relative property values, there are width-relative property values (usually &lt;code&gt;&amp;lt;percentage&amp;gt;&lt;/code&gt;), viewport-relative property values (such as &lt;code&gt;vh&lt;/code&gt; and &lt;code&gt;vw&lt;/code&gt;), default initial values (such as &lt;code&gt;column-gap: 1em&lt;/code&gt; in Opera), and then &lt;a href=&quot;https://developer.mozilla.org/en-US/docs/CSS/color_value#currentColor_keyword&quot;&gt;&lt;code&gt;currentColor&lt;/code&gt;&lt;/a&gt;. All of these might — or might not — trigger implicit transitions.&lt;br /&gt;
In Firefox, these implicit transitions get particularly interesting when both the depending and the dependent properties are transitioned but their &lt;code&gt;transition-duration&lt;/code&gt; or &lt;code&gt;transition-delay&lt;/code&gt; do not match. While WebKit and Opera produce transitions that make sense visually, Firefox garbles things a bit. In IE, this is a non-issue because it doesn’t do implicit transitions.&lt;br /&gt;
Don’t forget about inheritance within the cascade. A &lt;code&gt;font-size&lt;/code&gt; on a DOM element will be inherited by its children, as long as it’s not overwritten, potentially causing implicit transitions.&lt;br /&gt;
&lt;h3&gt;Transitions And Pseudo-Elements&lt;/h3&gt;Pseudo-elements (&lt;code&gt;:before&lt;/code&gt; and &lt;code&gt;:after&lt;/code&gt;) were introduced with &lt;a href=&quot;http://www.w3.org/TR/CSS2/generate.html&quot;&gt;CSS2 generated content&lt;/a&gt;. Read “&lt;a href=&quot;http://coding.smashingmagazine.com/2011/07/13/learning-to-use-the-before-and-after-pseudo-elements-in-css/&quot;&gt;Learning to Use the :before and :after Pseudo-Elements in CSS&lt;/a&gt;” if you’re not yet familiar with generated content. While &lt;a href=&quot;http://www.w3.org/TR/css3-content/&quot;&gt;CSS3 content&lt;/a&gt; defines additional pseudo-elements (&lt;code&gt;::alternate&lt;/code&gt;, &lt;code&gt;::outside&lt;/code&gt;), they are not (yet) supported. All animatable CSS properties should also be animatable for pseudo-elements.&lt;br /&gt;
Firefox and IE 10 will transition properties on pseudo-elements. Opera, Chrome and Safari will not. WebKit added support in January 2013 — which you can already check out in &lt;a href=&quot;http://nightly.webkit.org/&quot;&gt;WebKit nightly&lt;/a&gt; and &lt;a href=&quot;https://www.google.com/intl/en/chrome/browser/canary.html&quot;&gt;Chrome Canary&lt;/a&gt;.&lt;br /&gt;
Transitions of generated content bring their own set of funky issues. &lt;code&gt;TransitionEnd&lt;/code&gt; events aren’t fired at all. At some point in the future, they’re supposed to be triggered on the owner element and provide their pseudo-element through &lt;code&gt;TransitionEnd.pseudoElement&lt;/code&gt;. But even the “&lt;a href=&quot;http://dev.w3.org/csswg/css3-transitions/#transition-events&quot;&gt;Transition Events&lt;/a&gt;” section of the “CSS Transitions” editor’s draft doesn’t specify that properly yet.&lt;br /&gt;
There was a time when we would change the value of the &lt;code&gt;content&lt;/code&gt; property so that IE 8 would re-render that element in certain circumstances (like when entering a &lt;code&gt;:hover&lt;/code&gt; state). It turns out that this fix for old IE interferes with this ability for all other browsers. So, when trying to transition a property on a pseudo-element, make sure the &lt;code&gt;content&lt;/code&gt; is not changed.&lt;br /&gt;
IE 10 will not run a transition for a pseudo-element’s &lt;code&gt;:hover&lt;/code&gt; state if the owner element doesn’t have a &lt;code&gt;:hover&lt;/code&gt; state as well:&lt;br /&gt;
&lt;pre&gt;&lt;code&gt;
.some-selector:before {
  content: &quot;hello&quot;;
  color: red;
  transition: all 1s linear 0s;
}

.some-selector:hover:before {
  color: green;
}
/* This next rule is necessary for IE 10 to transition :before on hover */
.some-selector:hover {}
&lt;/code&gt;&lt;/pre&gt;The weird thing about this issue isn’t that you need a (possibly empty) &lt;code&gt;:hover&lt;/code&gt; state on the owner element. It’s that if you don’t have one, IE 10 will interpret the &lt;code&gt;:hover&lt;/code&gt; as &lt;code&gt;:active&lt;/code&gt; (i.e. active when you mousedown on the element). The even weirder part is that the &lt;code&gt;:active&lt;/code&gt; state persists even after &lt;code&gt;mouseup&lt;/code&gt; and is removed only by another click on the document.&lt;br /&gt;
&lt;h3&gt;Background Tabs&lt;/h3&gt;At the time of writing, IE 10 is the only browser that responds to a tab being in the background or foreground. While it will finish a running transition if the tab is pushed to the background, it won’t start any new transitions there. IE 10 will wait until the tab is pulled into the foreground before starting any new transitions. Fortunately, IE 10 already supports the &lt;a href=&quot;http://www.w3.org/TR/page-visibility/&quot;&gt;Page Visibility API&lt;/a&gt;, allowing developers to respond to this behavior.&lt;br /&gt;
We can expect similar things to happen with other browsers as they continue putting background tabs to sleep.&lt;br /&gt;
&lt;h3&gt;“Invisible” Elements&lt;/h3&gt;So, are transitions executed for DOM elements that are not attached to the DOM? Nope, not a single browser does that — why should they? Well, then, what about hidden elements? Most browsers have figured out that there’s no need to run a transition on an invisible (i.e. not painted) element. Opera thinks differently about this — it’ll run a transition regardless of whether it is painted or not.&lt;br /&gt;
&lt;h3&gt;Transitioning Before The DOM Is Ready?&lt;/h3&gt;The &lt;code&gt;DOMContentLoaded&lt;/code&gt; event is triggered when the document leaves parsing mode. If you’re into jQuery, we’re talking about &lt;a href=&quot;http://api.jquery.com/ready/&quot;&gt;&lt;code&gt;jQuery.ready()&lt;/code&gt;&lt;/a&gt; right now. Transitions can be run &lt;em&gt;before&lt;/em&gt; this event happens.&lt;br /&gt;
&lt;h3&gt;Rendering Quirks&lt;/h3&gt;The issues I’ve described up to this point were found by testing against the specification. The tests were run automatically. But as it turns out, quite a few more problems are visible to the eye. The following quirks have been found by various other developers and could affect your meddling with transitions just as much.&lt;br /&gt;
At this time, transitioning a background from gradient to gradient is not possible. Transitioning from gradient to solid color is possible — with a big caveat. If a gradient is in play, then the color transition will happen from white to the target color, appearing to quickly flash white at the beginning of the transition. This can be &lt;a href=&quot;http://jsbin.com/oyuciz/1/&quot;&gt;observed&lt;/a&gt; in all current browsers.&lt;br /&gt;
Firefox seems to be using a different algorithm for rendering (or smoothing) images as they’re being animated (&lt;a href=&quot;http://jsfiddle.net/fSjUb/3/&quot;&gt;see an example&lt;/a&gt;). Apparently, Gecko sacrifies quality for performance during animation. Note that this occurs if a &lt;a href=&quot;https://bugzilla.mozilla.org/show_bug.cgi?id=860261&quot;&gt;low enough &lt;code&gt;transform: scale()&lt;/code&gt; is in play&lt;/a&gt;.&lt;br /&gt;
Firefox won’t properly animate from &lt;code&gt;a:visited&lt;/code&gt; to &lt;code&gt;a:hover&lt;/code&gt; or vice versa. Instead, it will jump from &lt;code&gt;a:visited&lt;/code&gt; to &lt;code&gt;a:link&lt;/code&gt; and then transition to &lt;code&gt;a:hover&lt;/code&gt;, as you can see &lt;a href=&quot;http://jsbin.com/avabaw/1&quot;&gt;in this example&lt;/a&gt;. This is mentioned somewhat in “&lt;a href=&quot;https://developer.mozilla.org/en-US/docs/CSS/Privacy_and_the_:visited_selector&quot;&gt;Privacy and the :visited Selector&lt;/a&gt;” on the Mozilla Developer Network. While IE 10 agrees with Chrome, Safari and Opera on the proper transition, it also runs the transition from &lt;code&gt;a:link&lt;/code&gt; to &lt;code&gt;a:visited&lt;/code&gt; on page load.&lt;br /&gt;
Transitioning multiple properties is not synchronized in Firefox and Webkit. You can &lt;a href=&quot;http://jsbin.com/uxenaz/1&quot;&gt;see in this example&lt;/a&gt; how making the &lt;code&gt;border&lt;/code&gt; smaller by the same amount that the &lt;code&gt;padding&lt;/code&gt; increases (and vice versa) causes the following content to shake a bit. IE 10 and Opera get this right.&lt;br /&gt;
Firefox won’t animate an element’s properties if one of its parent’s &lt;code&gt;position&lt;/code&gt; is changed, &lt;a href=&quot;http://jsbin.com/azipul/1&quot;&gt;as you can see&lt;/a&gt;. Webkit, Opera and IE 10 behave correctly.&lt;br /&gt;
&lt;h3&gt;Recommendations For The Specification&lt;/h3&gt;Having read the specification from top to bottom and actually tested all of the features, I think a few changes would help:&lt;br /&gt;
&lt;ul&gt;&lt;li&gt;Introduce a &lt;code&gt;TransitionsEnd&lt;/code&gt; (notice the plural), triggered once &lt;em&gt;all&lt;/em&gt; transitions for an element have completed. It could provide a list of properties that have been animated — but I don’t see the use case for knowing &lt;em&gt;what&lt;/em&gt; has transitioned, as long as I’m informed &lt;em&gt;when&lt;/em&gt; all animations are done.&lt;/li&gt;
&lt;li&gt;Introduce a &lt;code&gt;TransitionStart&lt;/code&gt; event, triggered for every property about to be transitioned. Because DOM events don’t come cheap and the JavaScript event loop and the rendering thread are not necessarily blocking each other, a single event &lt;code&gt;TransitionsStart&lt;/code&gt; (there is that plural again) might be the better solution. I don’t see why I should be able to &lt;code&gt;cancel&lt;/code&gt; the event, so this would be a “fire and forget” kind of thing.&lt;/li&gt;
&lt;li&gt;Make it clear what &lt;code&gt;TransitionEnd&lt;/code&gt; is supposed to be triggered for. That &lt;code&gt;padding&lt;/code&gt; versus &lt;code&gt;padding-left&lt;/code&gt; issue in WebKit is rather annoying.&lt;/li&gt;
&lt;li&gt;Clearly specify how “implicit transitions,” such as &lt;code&gt;line-height: 1em&lt;/code&gt; for &lt;code&gt;transition-property: font-size&lt;/code&gt;, are to be handled.&lt;/li&gt;
&lt;li&gt;Add a &lt;code&gt;::transitioning&lt;/code&gt; pseudo-class that allows you to define &lt;code&gt;pointer-events: none&lt;/code&gt; to prevent accidental hover states (among other things). The trick here is to prevent the application of styles that themselves would trigger a new transition or that would alter an already running transition.&lt;/li&gt;
&lt;/ul&gt;In addition to these suggestions, we should be able to accomplish a number of common (simple) things without having to throw a lot of JavaScript at the problem:&lt;br /&gt;
&lt;ul&gt;&lt;li&gt;Every once in a while, you’ll want to completely mute all transitions — for example, because you’re changing the layout and need to calculate dimensions and positions before unleashing your beautiful transitions upon the visitor.&lt;/li&gt;
&lt;li&gt;Sometimes you’ll want to remove an object from the DOM and want that to be animated. Right now, you’d add a class, wait for the &lt;code&gt;TransitionEnd&lt;/code&gt; event and then remove the element.&lt;/li&gt;
&lt;li&gt;Just as with removing things, you’ll want to add a new element and animate its appearance. Right now, you have to insert the element, set some “invisible style,” force a repaint and then revert to the new element’s actual style.&lt;/li&gt;
&lt;li&gt;Reordering, hiding and showing elements are common for any Web application. Giving that task a little style currently requires us to run utilities such as &lt;a href=&quot;http://isotope.metafizzy.co/&quot;&gt;Isotope&lt;/a&gt;. A vanilla CSS solution could shave off some bytes.&lt;/li&gt;
&lt;/ul&gt;&lt;h3&gt;Use The &lt;code&gt;delay&lt;/code&gt;, Luke!&lt;/h3&gt;Imagine a number of elements packed together tightly. Imagine that the styles of those elements change on hover. Imagine moving your cursor (moderately quickly) over that group. What happens? Exactly: you’ll see the &lt;a href=&quot;http://jsbin.com/irazox/1&quot;&gt;styles of those elements flash&lt;/a&gt;.&lt;br /&gt;
By adding a relatively short delay to your transitions, you can &lt;a href=&quot;http://jsbin.com/egeniz/1/&quot;&gt;mitigate that effect&lt;/a&gt;; 20 milliseconds is undetectable to the human eye, but it’s enough for the mouse cursor to pass over small elements. The transitions won’t appear to lag because of this, and the visual distraction you might have caused just disappears. Simple trick, I know.&lt;br /&gt;
&lt;h3&gt;Conclusion&lt;/h3&gt;&lt;ul&gt;&lt;li&gt;Be very careful when using &lt;code&gt;transition-property: all&lt;/code&gt;. You &lt;em&gt;will&lt;/em&gt; get &lt;code&gt;TransitionEnd&lt;/code&gt; events for properties that you didn’t expect to ever transition.&lt;/li&gt;
&lt;li&gt;Be careful when using shorthand properties, because the number of triggered events varies between browsers.&lt;/li&gt;
&lt;li&gt;Opera and IE don’t trigger events when a negative delay cancels out the duration.&lt;/li&gt;
&lt;li&gt;WebKit has real issues with the priority of properties such as &lt;code&gt;transition-property: margin, margin-left&lt;/code&gt;. Avoid this for now.&lt;/li&gt;
&lt;li&gt;IE doesn’t support implicit transitions — for example, triggered for &lt;code&gt;padding: 2em&lt;/code&gt; when &lt;code&gt;font-size&lt;/code&gt; changes.&lt;/li&gt;
&lt;li&gt;Firefox and Opera cannot parse &lt;code&gt;transition-property: all, width&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;Opera mixes up the priority of properties.&lt;/li&gt;
&lt;li&gt;Transitions on pseudo-elements do not trigger &lt;code&gt;TransitionEnd&lt;/code&gt; events.&lt;/li&gt;
&lt;li&gt;IE 10 has a weird &lt;code&gt;:hover&lt;/code&gt; bug when transitioning pseudo-elements.&lt;/li&gt;
&lt;li&gt;The specification leaves a lot of room for improvement.&lt;/li&gt;
&lt;/ul&gt;&lt;h4&gt;Related Content&lt;/h4&gt;If you’re interested in transitions and animations — and how to use them wisely — have a look at these fantastic resources:&lt;br /&gt;
&lt;ul&gt;&lt;li&gt;“&lt;a href=&quot;http://docs.webplatform.org/wiki/tutorials/css_transitions&quot;&gt;Dynamic Visual Effects With CSS3 Transitions&lt;/a&gt;,” Mike Sierra, Web Platform Docs&lt;/li&gt;
&lt;li&gt;“&lt;a href=&quot;http://blog.alexmaccaw.com/css-transitions&quot;&gt;All You Need to Know About CSS Transitions&lt;/a&gt;,” Alex MacCaw&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://www.ui-transitions.com/&quot;&gt;Meaningful Transitions&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;“&lt;a href=&quot;https://medium.com/design-ux/926eb80d64e3&quot;&gt;Transitionable Interfaces&lt;/a&gt;,” Pasquale D’Silva, Medium&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://leaverou.github.com/animatable/&quot;&gt;Animatable&lt;/a&gt; (showcase of transitions), Lea Verou&lt;/li&gt;
&lt;li&gt;“&lt;a href=&quot;http://oli.jp/2010/css-animatable-properties/&quot;&gt;CSS Animatable Properties&lt;/a&gt;,” Oli Studholme&lt;/li&gt;
&lt;/ul&gt;&lt;em&gt;Thanks go to &lt;a href=&quot;http://oli.jp/&quot;&gt;Oli Studholme&lt;/a&gt; for taking the time to review this article, and &lt;a href=&quot;https://blog.linss.com/&quot;&gt;Peter Linss&lt;/a&gt; for walking me through the CSS Working Group’s testing infrastructure.&lt;/em&gt;&lt;br /&gt;
&lt;em&gt;(al)&lt;/em&gt;&lt;br /&gt;
&lt;hr /&gt;&lt;small&gt;© Rodney Rehm for &lt;a href=&quot;http://www.smashingmagazine.com/&quot;&gt;Smashing Magazine&lt;/a&gt;, 2013.&lt;/small&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3176943100655981551/posts/default/5891496865338957260'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3176943100655981551/posts/default/5891496865338957260'/><link rel='alternate' type='text/html' href='http://luiscameroon.blogspot.com/2013/04/css3-transitions-thank-god-we-have.html' title='CSS3 Transitions: Thank God We Have A Specification!'/><author><name>Luis Cameroon</name><uri>http://www.blogger.com/profile/02443056704463245314</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author></entry><entry><id>tag:blogger.com,1999:blog-3176943100655981551.post-8250546689119935376</id><published>2013-04-08T06:26:00.001-07:00</published><updated>2013-04-08T06:26:38.924-07:00</updated><title type='text'>Reading List #4</title><content type='html'>&lt;h3&gt;HTML5, Responsive, NEWT&lt;/h3&gt;&lt;ul&gt;&lt;li&gt;&lt;a href=&quot;http://my.opera.com/ODIN/blog/2013/03/22/operas-webkit-patches&quot;&gt;Opera’s WebKit patches&lt;/a&gt; – enhancements to WebKit’s CSS support and some housekeeping&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://html5doctor.com/interview-steve-faulkner-html5-editor-new-doctor/&quot;&gt;Interview with Steve Faulkner&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://demosthenes.info/blog/662/Design-From-the-Inside-Out-With-CSS-MinContent&quot;&gt;Design From the Inside Out With CSS Min-Content&lt;/a&gt; the little-known CSS &lt;code&gt;min-content&lt;/code&gt; value&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://daily.w3viewer.com/&quot;&gt;Open Web Platform Daily Digest&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://confreaks.com/videos/2223-html5tx2013-browser-versions-are-dead&quot;&gt;“Browser Versions Are Dead”&lt;/a&gt;- One hour talk by @getify on why feature detection is the only sensible development methodology&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://lists.whatwg.org/pipermail/whatwg-whatwg.org/2013-March/039236.html&quot;&gt;Media queries for multichannel audio?&lt;/a&gt; – suggestion by Netflix: “This would save network bandwidth as well as providing better quality (if the custom-mixed stereo audio is likely better than the end-device down-mixed version)”&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://www.html5rocks.com/en/tutorials/webcomponents/shadowdom-201/&quot;&gt;Shadow DOM 201&lt;/a&gt; – CSS and Styling&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://www.creativebloq.com/app-design/web-designers-need-know-3132155&quot;&gt;10 things web designers need to know about app design&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://typedarray.org/javascript-refresh/&quot;&gt;JavaScript refresh&lt;/a&gt; – “We will cover here some of the key concepts of JavaScript to get us started.”&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://toolness.github.com/slowmo-js/&quot;&gt;SlowmoJS&lt;/a&gt; – utility shows you step-by-step how your code is analysed and executed.&lt;br /&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://callbackhell.com/&quot;&gt;Callback Hell&lt;/a&gt; – A guide to writing elegant asynchronous javascript programs&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://www.backalleycoder.com/2013/03/18/cross-browser-event-based-element-resize-detection/&quot;&gt;Cross-Browser, Event-based, Element Resize Detection&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://dbushell.com/2013/03/19/on-responsive-layout-and-grids/&quot;&gt;On Responsive Layout and Grids&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://shkspr.mobi/blog/2013/03/preparing-for-the-collapse-of-digital-civilization/&quot;&gt;Preparing for the Collapse of Digital Civilization&lt;/a&gt; – Terence Eden on Google Reader, free web services and open-source replacements for them&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://meyerweb.com/eric/thoughts/2013/03/19/unsupportable-promises/&quot;&gt;Unsupportable Promises&lt;/a&gt; – Eric Meyer gets all negged out and totally heavy about @supports in CSS&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://news.cnet.com/8301-1023_3-57575523-93/google-fixing-some-webp-image-format-shortcomings/&quot;&gt;Google fixing some WebP image format shortcomings&lt;/a&gt; – “Google finalizes how its image file format will handle metadata and color profiles. Also new: faster encoding and animation support.”&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://www.html5rocks.com/en/tutorials/webcomponents/shadowdom-301/&quot;&gt;Shadow DOM 301: Advanced Concepts &amp;amp; DOM APIs&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://www.uxdrinkinggame.com/&quot;&gt;The UX drinking game&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;h3&gt;DRM corner&lt;/h3&gt;&lt;ul&gt;&lt;li&gt;&lt;a href=&quot;http://vimeo.com/62269279&quot;&gt;Encrypted Media Extensions&lt;/a&gt; (the official term for HTML5 DRM) – 1 hour 40 mins video presentation from John Simmons of Microsoft&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://plus.google.com/app/basic/stream/z13qtnxhuojytbjbr04ci3cowrmtehsy324&quot;&gt;The purpose of DRM&lt;/a&gt; by Hixie. Interesting analysis (“The purpose of DRM is not to prevent copyright violations. The purpose of DRM is to give content providers leverage against creators of playback devices”) but avoids direct question of why Google supports it.&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://www.bbc.co.uk/news/technology-21856720&quot;&gt;Music sales are not affected by web piracy, study finds&lt;/a&gt; report published by the European Commission Joint Research Committee&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://www.fiercemobilecontent.com/story/brightcove-retreats-html5-pushes-refreshed-sdks-native-android-ios-apps/2013-03-19&quot;&gt;Brightcove retreats from HTML5pushes refreshed SDKs for native Android, iOS apps&lt;/a&gt; – “native apps allow Brightcove customers to properly install digital rights management policies”&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://arstechnica.com/apple/2013/03/apples-entire-product-line-targeted-for-alleged-drm-patent-violations/&quot;&gt;Apple’s entire product line targeted for alleged DRM patent violations&lt;/a&gt; – “Intertrust won $440M from Microsoft, now accuses Apple of using its patented tech.” As &lt;a href=&quot;https://twitter.com/robinberjon/status/314658863188168704&quot;&gt;Robin Berjon wittily noted&lt;/a&gt;, this is like Alien vs Predator.&lt;/li&gt;
&lt;/ul&gt;&lt;h3&gt;Social Meeja corner&lt;/h3&gt;&lt;ul&gt;&lt;li&gt;Hyperbole corner: &lt;a href=&quot;http://www.thedrum.com/news/2013/03/18/websites-are-dead-and-content-meaningless-unless-mobile-ready-says-asda-s-social&quot;&gt;“websites are dead”&lt;/a&gt; says person employed by Asda to do social media rather than its website (which they haven’t taken offline) “while exploring ways to tie-in the mobile and social customer journey to their in-store experiences”&lt;/li&gt;
&lt;li&gt;Rain on your ‘social customer journey’ parade corner: &lt;a href=&quot;http://adage.com/article/cmo-strategy/coca-cola-sees-sales-impact-online-buzz-digital-display-effective-tv/240409/&quot;&gt;Buzzkill: Coca-Cola Finds No Sales Lift from Online Chatter&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://www.guardian.co.uk/technology/2007/feb/08/business.comment&quot;&gt;Will MySpace ever lose its monopoly?&lt;/a&gt; from 2007&lt;/li&gt;
&lt;/ul&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3176943100655981551/posts/default/8250546689119935376'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3176943100655981551/posts/default/8250546689119935376'/><link rel='alternate' type='text/html' href='http://luiscameroon.blogspot.com/2013/04/reading-list-4.html' title='Reading List #4'/><author><name>Luis Cameroon</name><uri>http://www.blogger.com/profile/02443056704463245314</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author></entry><entry><id>tag:blogger.com,1999:blog-3176943100655981551.post-1853901569945384315</id><published>2013-02-22T21:02:00.001-08:00</published><updated>2013-02-22T21:02:52.486-08:00</updated><title type='text'>Reading List #3</title><content type='html'>&lt;br /&gt;
&lt;h3&gt;NEWT, innit?&lt;/h3&gt;&lt;ul&gt;&lt;li&gt;&lt;a href=&quot;http://www.90percentofeverything.com/2011/03/25/fk-captcha/&quot;&gt;F**K CAPTCHA&lt;/a&gt; – Big site removes CRAPTCHA, sees conversion rate uplift of 33.3%&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://css-tricks.com/using-flexbox/&quot;&gt;Using Flexbox: Mixing Old and New for the Best Browser Support&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://bugs.webkit.org/show_bug.cgi?id=105463&quot;&gt;Microsoft’s new WebKit patch for Pointer Events&lt;/a&gt; – great spec; needs support for pointers from multiple simultaneous users, eg multi-player games like PS3, Wii&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://speckyboy.com/2013/02/04/myths-about-how-blind-people-use-the-internet/#comment-788445484&quot;&gt;More on screen readers and HTML title attributes&lt;/a&gt; by James Craig, editor of WAI-ARIA spec (VoiceOver supports them, and in the future things may be better, he says)&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://www.jonathanklein.net/2013/02/a-comprehensive-guide-to-webp.html&quot;&gt;A Comprehensive Guide to WebP&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://github.com/sysapps/sysapps/issues/41&quot;&gt;Manifest format should support some way of including a splash screen&lt;/a&gt; – discussion started by Marcos Caceres&lt;/li&gt;
&lt;/ul&gt;&lt;h3&gt;Industry&lt;/h3&gt;&lt;ul&gt;&lt;li&gt;Not just featurephones: &lt;a href=&quot;http://www.opera.com/smw/2013/01/&quot;&gt;Smartphones are 32% of Opera Mini/ Mobile installs&lt;/a&gt;, 8 million new users in January&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://blogs.hbr.org/cs/2012/07/africas_true_mobile_revolution.html&quot;&gt;Africa’s True Mobile Revolution Has Yet to Start&lt;/a&gt; – “The United States economy is nine times the size of Africa’s, but Africa has twice as many mobile phones.”&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://www.fabcapo.com/2013/02/google-has-killed-android-brand.html&quot;&gt;Google has killed Android (the brand)&lt;/a&gt; – “Of course, Android is dominant. So much that saying you sell an “Android phone” makes you a cheap commodity play. Nobody wants that, they all want to be cool and different … Android is now so dominant, it can be killed. Because it is just what’s inside. What matters, it is the outside.”&lt;/li&gt;
&lt;/ul&gt;&lt;h3&gt;Misc&lt;/h3&gt;&lt;ul&gt;&lt;li&gt;&lt;a href=&quot;http://guardiantruncationteam.tumblr.com/&quot;&gt;Guardian Truncation Team&lt;/a&gt; – “Celebrating the work of the tireless men &amp;amp; women who shorten headlines so they’ll fit on your iPhone.”&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://screenshotsofdespair.tumblr.com/&quot;&gt;Screenshots of Despair&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3176943100655981551/posts/default/1853901569945384315'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3176943100655981551/posts/default/1853901569945384315'/><link rel='alternate' type='text/html' href='http://luiscameroon.blogspot.com/2013/02/reading-list-3.html' title='Reading List #3'/><author><name>Luis Cameroon</name><uri>http://www.blogger.com/profile/02443056704463245314</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author></entry><entry><id>tag:blogger.com,1999:blog-3176943100655981551.post-6759963270033330580</id><published>2013-02-15T20:50:00.001-08:00</published><updated>2013-02-15T20:50:30.967-08:00</updated><title type='text'>Reading List #2</title><content type='html'>&lt;h3&gt;NEWT&lt;/h3&gt;&lt;ul&gt;&lt;li&gt;&lt;a href=&quot;http://www.paciellogroup.com/blog/2013/02/using-wai-aria-landmarks-2013/&quot;&gt;Using WAI-ARIA Landmarks – 2013&lt;/a&gt; – with video by @LeonieWatson SHOWING how useful they are to AT users&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://appendto.com/blog/2013/02/prototype-chromium-build-with-support-for-ms-pointer-events/&quot;&gt;Prototype Chromium build with support for MS Pointer Events&lt;/a&gt; &lt;/li&gt;
&lt;li&gt;HTML5 Doctor: &lt;a href=&quot;http://html5doctor.com/the-progress-element/&quot;&gt;The progress element&lt;/a&gt; by Ian Devlin&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://jimramsden.com/notes/no-more-mobile&quot;&gt;No more ‘Mobile’&lt;/a&gt; – “Mobile was a useful term when it was new and niche. You could use it in a conversation to narrow things down. Now it’s so broad it’s fast becoming meaningless.”&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://www.456bereastreet.com/archive/201302/making_elements_keyboard_focusable_and_clickable/&quot;&gt;Making elements keyboard focusable and clickable&lt;/a&gt; – use natively keyboard accessible elements (preferable) or make what you use instead mimic the appropriate native element as closely as possible.”&lt;/li&gt;
&lt;/ul&gt;&lt;h3&gt;Opera/ WebKit switch&lt;/h3&gt;Opera (my employer) announced &lt;a href=&quot;http://my.opera.com/ODIN/blog/300-million-users-and-move-to-webkit&quot;&gt;Opera will switch to WebKit&lt;/a&gt;. Here are some reaction posts – I’ve noted authors’ affiliations, as many work for browsers so are not wholly disinterested parties.&lt;br /&gt;
&lt;ul&gt;&lt;li&gt;&lt;a href=&quot;http://www.brucelawson.co.uk/2013/opera-and-webkit-a-personal-perspective/&quot;&gt;Opera and WebKit: a personal perspective&lt;/a&gt; – by me&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://alistapart.com/blog/post/opera-moves-to-webkit&quot;&gt;Interview with me on A List Apart&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://www.netmagazine.com/news/devs-respond-opera-webkit-switch-132567&quot;&gt;Devs respond to Opera WebKit switch&lt;/a&gt; (.net magazine)&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://ejohn.org/blog/webkit-is-the-jquery-of-browser-engines/&quot;&gt;WebKit is the jQuery of Browser Engines&lt;/a&gt; by John Resig (jQuery, Mozilla)&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://brendaneich.com/2013/02/why-mozilla-matters/&quot;&gt;Why Mozilla Matters&lt;/a&gt; – by Brendan Eich, Mozilla CTO&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://lilly.tumblr.com/post/43088488614/a-few-folks-have-asked-me-what-i-think-of-the-news&quot;&gt;John Lilly’s opinion&lt;/a&gt; – ex-CEO of Mozilla&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://generatedcontent.org/post/43036827576/hey-o-lets-go&quot;&gt;Hey -o-, let’s go!&lt;/a&gt; by David Storey, ex-devrel colleague of mine at Opera, and chum&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://robertnyman.com/2013/02/14/webkit-an-objective-view/&quot;&gt;WebKit: An Objective View&lt;/a&gt; by Robert Nyman and Rob Hawkes of Mozilla&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://www.quirksmode.org/blog/archives/2013/02/opera_switching.html&quot;&gt;Opera switching to WebKit: thoughts and guesses&lt;/a&gt; by PPK&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://my.opera.com/chaals/blog/2013/02/14/another-chapter-of-a-long-goodbye&quot;&gt;Another chapter of a long goodbye?&lt;/a&gt; by Chaals, ex-Opera, now Yandex (which has its own Chromium-based browser)&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://christianheilmann.com/2013/02/13/i-will-miss-the-douglas-crockford-of-browsers/&quot;&gt;I will miss the “Douglas Crockford of browsers”&lt;/a&gt; by Christian Heilmann (Mozilla)&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://plus.google.com/u/0/116237864387312784020/posts/iRRPVaaPQvo&quot;&gt;Jake Archibald’s reaction&lt;/a&gt; (Google Chrome team)&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://my.opera.com/haavard/blog/2013/02/13/webkit&quot;&gt;300 million users strong, Opera moves to WebKit&lt;/a&gt; – personal post from Opera employee Haarvard&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://www.glazman.org/weblog/dotclear/index.php?post/2013/02/13/Strange-day-for-the-Open-Web&quot;&gt;Strange day for the Open Web&lt;/a&gt; by Daniel Glazman, co-chair of CSS WG and authoring tool author (that embeds Mozilla’s Gecko&lt;/li&gt;
&lt;/ul&gt;&lt;h3&gt;Industry&lt;/h3&gt;&lt;ul&gt;&lt;li&gt;&lt;a href=&quot;http://pubs.aeaweb.org/doi/pdfplus/10.1257/jep.27.1.3&quot;&gt;Journal of Economic Perspectives: The Case Against Patents (PDF)&lt;/a&gt; – “there is no empirical evidence that they serve to increase innovation and productivity … in spite of the enormous increase in the number of patents and in the strength of their legal protection, the US economy has seen neither a dramatic acceleration in the rate of technological progress nor a major increase in the levels of research and development expenditure.”&lt;/li&gt;
&lt;li&gt;As well as Opera’s WebKit announcement, we also hit the 300 million user milestone. Here are the &lt;a href=&quot;http://storify.com/liveleer/opera300-million-users-today-cake-in-all-offices&quot;&gt;celebration cakes&lt;/a&gt; across the world.&lt;/li&gt;
&lt;/ul&gt;&lt;h3&gt;Misc&lt;/h3&gt;&lt;ul&gt;&lt;li&gt;&lt;a href=&quot;http://www.tomforth.co.uk/guardiancomments/&quot;&gt;Guardian comment generator&lt;/a&gt; – “try one of these random comments and you’ll be sure to impress the self‑proclaimed who’s who of the left‑wing internet intelligentsia.”&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://www.nydailynews.com/life-style/health/ouch-pubic-hair-care-sends-er-study-article-1.1257037&quot;&gt;Ouch! ER visits due to pubic hair grooming on the rise in both men and women: study&lt;br /&gt;
&lt;br /&gt;
&lt;/a&gt; –  University of California reports five-fold increase in pubic hair removal injuries from 2002-2010&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://www.thisisdevon.co.uk/Man-tried-making-love-ambulance-Barnstaple-bus/story-18137026-detail/story.html&quot;&gt;Man tried making love to an ambulance in Barnstaple bus station&lt;/a&gt; – “he was  spotted on CCTV in a phone box setting light to a packet of peanuts while also punching them”&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://jonmillward.com/blog/studies/deep-inside-a-study-of-10000-porn-stars/&quot;&gt;Deep Inside: A Study of 10,000 Porn Stars and Their Careers&lt;/a&gt; – what does the average porn star look like? What’s the average name and repertoire?&lt;/li&gt;
&lt;li&gt;SETI asks &lt;a href=&quot;https://sites.google.com/a/plutorocks.com/voting/&quot;&gt;Help Us Name the Moons of Pluto!&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://harlemshakeroulette.com/&quot;&gt;Harlem Shake Roulette&lt;/a&gt; – “All the best Harlem Shakers in one place.”&lt;/li&gt;
&lt;/ul&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3176943100655981551/posts/default/6759963270033330580'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3176943100655981551/posts/default/6759963270033330580'/><link rel='alternate' type='text/html' href='http://luiscameroon.blogspot.com/2013/02/reading-list-2.html' title='Reading List #2'/><author><name>Luis Cameroon</name><uri>http://www.blogger.com/profile/02443056704463245314</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author></entry><entry><id>tag:blogger.com,1999:blog-3176943100655981551.post-2964618333546545085</id><published>2013-02-13T16:32:00.001-08:00</published><updated>2013-02-13T16:32:01.734-08:00</updated><title type='text'>Reading List #1</title><content type='html'>&lt;a href=&quot;http://addyosmani.com/blog/devtools-visually-re-engineering-css-for-faster-paint-times/&quot;&gt;&lt;span style=&quot;font-size: large;&quot;&gt;&lt;b&gt;DevTools: Visually Re-engineering CSS For Faster Paint Times&lt;/b&gt;&lt;/span&gt;&lt;/a&gt;&lt;br /&gt;
&lt;a href=&quot;http://addyosmani.com/&quot; rel=&quot;author&quot;&gt;Addy Osmani&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
Addy Osmani explains in detail how to profile your CSS and what you can do to optimize paint times of your application.&lt;br /&gt;
&lt;h2&gt;&lt;a href=&quot;http://techtime.getharvest.com/blog/in-defense-of-rem-units&quot;&gt;In Defense Of Rem Units&lt;/a&gt;&lt;/h2&gt;&lt;a href=&quot;http://matthewlettini.com/&quot; rel=&quot;author&quot;&gt;Matthew Lettini&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
Rem units are easier to work with than em units but just as useful. Matthew Lettini explains their pros and cons.&lt;br /&gt;
&lt;h1&gt;Articles &amp;amp; tutorials&lt;/h1&gt;&lt;h2&gt;&lt;a href=&quot;http://corlan.org/2013/02/08/say-hello-to-css-regions-polyfill/&quot;&gt;CSS Regions Polyfill&lt;/a&gt;&lt;/h2&gt;&lt;span rel=&quot;author&quot;&gt;Mihai Corlan &amp;amp; Razvan Caliman&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
Thanks to experimental polyfill by Mihai Corlan and Razvan Caliman CSS Regions have just came a step closer to real-world usage. The sooner we’re able to use them in our daily projects the better.&lt;br /&gt;
&lt;h2&gt;&lt;a href=&quot;http://www.impressivewebs.com/when-to-avoid-descendant-selector/&quot;&gt;When to Avoid the Descendant Selector&lt;/a&gt;&lt;/h2&gt;&lt;a href=&quot;http://www.impressivewebs.com/about&quot; rel=&quot;author&quot;&gt;Louis Lazaris&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
Louis Lazaris explains why should putting descendant selectors (too) high in the DOM be avoided.&lt;br /&gt;
&lt;h2&gt;&lt;a href=&quot;http://csswizardry.com/2013/02/responsive-grid-systems-a-solution/&quot;&gt;Responsive grid systems; a solution?&lt;/a&gt;&lt;/h2&gt;&lt;a href=&quot;http://csswizardry.com/about/&quot; rel=&quot;author&quot;&gt;Harry Roberts&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
Harry Roberts shows how he tackled the problem of grid systems in his Inuit.css framework. Quite interesting read.&lt;br /&gt;
&lt;h2&gt;&lt;a href=&quot;http://blog.sarasoueidan.com/windows8-animations/&quot;&gt;How to Create Windows-8-like 3D animations with CSS3 and jQuery&lt;/a&gt;&lt;/h2&gt;&lt;a href=&quot;http://sarasoueidan.com/about.php&quot; rel=&quot;author&quot;&gt;Sara Soueidan&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
Sara Soueidan guides you through creating stunning CSS3 Windows-8-like animations.&lt;br /&gt;
&lt;h2&gt;&lt;a href=&quot;http://www.kirupa.com/html5/introduction_to_animation_html.htm&quot;&gt;Introduction to Animation in HTML&lt;/a&gt;&lt;/h2&gt;&lt;a href=&quot;http://www.kirupa.com/about/whatiskirupa.htm&quot; rel=&quot;author&quot;&gt;Kirupa Chinnathambi&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
Very good introduction into animations on the web. The article covers CSS transitions, WebGL and plain old JavaScript animations.&lt;br /&gt;
&lt;h2&gt;&lt;a href=&quot;https://coderwall.com/p/7p7w2a&quot;&gt;When to use Sass mixins, extends and variables&lt;/a&gt;&lt;/h2&gt;&lt;a href=&quot;http://www.rachelnabors.com/&quot; rel=&quot;author&quot;&gt;Rachel Nabors&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
Rachel Nabors shares a couple of short tips that you’ll find helpful, particularly,if you’re new to the whole Sass / preprocessor thingy.&lt;br /&gt;
&lt;h1&gt;Tools&lt;/h1&gt;&lt;h2&gt;&lt;a href=&quot;http://roole.org/&quot;&gt;Roole&lt;/a&gt;&lt;/h2&gt;&lt;span rel=&quot;author&quot;&gt;Glen Huang&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
Roole is a brand new CSS preprocessor. It is implemented in JavaScript, it has vendor prefixing built-in and it utilizes braceless syntax. The question is if we really need another CSS preprocessor.</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3176943100655981551/posts/default/2964618333546545085'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3176943100655981551/posts/default/2964618333546545085'/><link rel='alternate' type='text/html' href='http://luiscameroon.blogspot.com/2013/02/reading-list-1.html' title='Reading List #1'/><author><name>Luis Cameroon</name><uri>http://www.blogger.com/profile/02443056704463245314</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author></entry><entry><id>tag:blogger.com,1999:blog-3176943100655981551.post-8363388076402419838</id><published>2013-02-13T01:20:00.001-08:00</published><updated>2013-02-13T01:20:58.394-08:00</updated><title type='text'>Reading List</title><content type='html'>&lt;ul&gt;&lt;li&gt;&lt;a href=&quot;https://gocardless.com/blog/unresponsive-design/&quot;&gt;Ditching responsive design&lt;/a&gt; – why GoCardless ditched their resposive re-design&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://electricpulp.com/notes/you-like-apples/&quot;&gt;You like apples?&lt;/a&gt; – Ecommerce site’s sales up 112% – 333% comparing responsive and non-responsive designs&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://tommorris.org/posts/8070&quot;&gt;No, I’m not going to download your bullshit app&lt;/a&gt; – Admirable sentiment, swearing and grumpiness&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://www.webaxe.org/accessible-html5-media-players-and-more/&quot;&gt;Accessible HTML5 Media Players and More&lt;/a&gt; by Dennis Lembree of WebAxe&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://blog.cloudfour.com/the-real-conflict-behind-picture-and-srcset/&quot;&gt;The real conflict behind &amp;lt;picture&amp;gt; and @srcset&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://blog.netvlies.nl/design-interactie/retina-revolution/&quot;&gt;Retina Revolution&lt;/a&gt; – technique to serve lower-bandwidth jpgs that look good on retina displays&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://nostrongbeliefs.com/notes-on-the-classlist-api/&quot;&gt;Notes on the classList API&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://blogs.adobe.com/webplatform/2013/01/30/balancing-text-for-better-readability/&quot;&gt;Balancing Text for better readability&lt;/a&gt; – &lt;code&gt;text-wrap: balance&lt;/code&gt;. I’ve been sceptical of some of the Adobe CSS proposals, but I heart this&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://www.456bereastreet.com/archive/201302/css_background-position_and_percent/&quot;&gt;CSS background-position and percent&lt;/a&gt; – calc() to the rescue but background-origo property would be nice&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://lists.w3.org/Archives/Public/www-tag/2013Feb/0003.html&quot;&gt;IndexedDB, what were the issues? How do we stop it from happening again?&lt;/a&gt; – I thought my difficulties with IndexedDB were because I’m thick. But even clever people dislike the API. (WebSQL was simpler but was tied to  a specific dialect of SQL so withered on the vine.)&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://gist.github.com/domenic/3889970&quot;&gt;You’re Missing the Point of Promises&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;h3&gt;Interoperability corner&lt;/h3&gt;&lt;ul&gt;&lt;li&gt;&lt;a href=&quot;https://hacks.mozilla.org/2013/02/hello-chrome-its-firefox-calling/&quot;&gt;Hello Chrome, it’s Firefox calling!&lt;/a&gt; – Firefox &amp;amp; Chrome videoconferencing in-browser via webRTC (no plugins or proprietary gronks)&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://news.cnet.com/8301-1023_3-57567605-93/netflix-support-coming-to-arm-based-chromebooks/&quot;&gt;Netflix to stream to Chrome O/S using Native Client plugin&lt;/a&gt; – presumably for “DRM”?&lt;/li&gt;
&lt;/ul&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3176943100655981551/posts/default/8363388076402419838'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3176943100655981551/posts/default/8363388076402419838'/><link rel='alternate' type='text/html' href='http://luiscameroon.blogspot.com/2013/02/reading-list.html' title='Reading List'/><author><name>Luis Cameroon</name><uri>http://www.blogger.com/profile/02443056704463245314</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author></entry><entry><id>tag:blogger.com,1999:blog-3176943100655981551.post-1978197368842477715</id><published>2012-12-10T18:42:00.001-08:00</published><updated>2012-12-10T18:52:28.632-08:00</updated><title type='text'>Differences Between CSS2.1 and CSS3+</title><content type='html'>&lt;br /&gt;
Most of us know that with the introduction of what we customarily call “CSS3″1, there have been changes and additions to CSS, compared to what we had in CSS2.1.&lt;br /&gt;
Putting all cross-browser issues aside, I thought it would be nice to be able to document all these changes into a single post and keep it up to date.&lt;br /&gt;
So if you want a list of everything that’s been introduced into the CSS spec since CSS2.1, here it is.&lt;br /&gt;
&lt;h3&gt;
New Properties&lt;/h3&gt;
Following is a list of CSS properties that were not defined in the CSS2.1 specification.&lt;br /&gt;
&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt; &lt;/span&gt;•&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt; &lt;/span&gt;animation (and eight associated longhand properties)&lt;br /&gt;
&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt; &lt;/span&gt;•&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt; &lt;/span&gt;background-clip&lt;br /&gt;
&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt; &lt;/span&gt;•&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt; &lt;/span&gt;background-origin&lt;br /&gt;
&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt; &lt;/span&gt;•&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt; &lt;/span&gt;background-size&lt;br /&gt;
&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt; &lt;/span&gt;•&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt; &lt;/span&gt;border-radius (and four associated longhand properties)&lt;br /&gt;
&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt; &lt;/span&gt;•&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt; &lt;/span&gt;border-image (and six associated longhand properties)&lt;br /&gt;
&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt; &lt;/span&gt;•&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt; &lt;/span&gt;box-decoration-break&lt;br /&gt;
&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt; &lt;/span&gt;•&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt; &lt;/span&gt;box-shadow&lt;br /&gt;
&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt; &lt;/span&gt;•&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt; &lt;/span&gt;box-sizing&lt;br /&gt;
&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt; &lt;/span&gt;•&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt; &lt;/span&gt;columns (and thirteen associated multi-column properties)&lt;br /&gt;
&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt; &lt;/span&gt;•&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt; &lt;/span&gt;clear-after&lt;br /&gt;
&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt; &lt;/span&gt;•&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt; &lt;/span&gt;flex (and eleven associated flexbox properties)&lt;br /&gt;
&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt; &lt;/span&gt;•&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt; &lt;/span&gt;font-stretch&lt;br /&gt;
&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt; &lt;/span&gt;•&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt; &lt;/span&gt;font-size-adjust&lt;br /&gt;
&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt; &lt;/span&gt;•&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt; &lt;/span&gt;font-synthesis&lt;br /&gt;
&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt; &lt;/span&gt;•&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt; &lt;/span&gt;font-kerning&lt;br /&gt;
&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt; &lt;/span&gt;•&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt; &lt;/span&gt;font-variant-caps&lt;br /&gt;
&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt; &lt;/span&gt;•&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt; &lt;/span&gt;hanging-punctuation&lt;br /&gt;
&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt; &lt;/span&gt;•&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt; &lt;/span&gt;hyphens&lt;br /&gt;
&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt; &lt;/span&gt;•&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt; &lt;/span&gt;icon&lt;br /&gt;
&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt; &lt;/span&gt;•&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt; &lt;/span&gt;image-resolution&lt;br /&gt;
&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt; &lt;/span&gt;•&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt; &lt;/span&gt;image-orientation&lt;br /&gt;
&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt; &lt;/span&gt;•&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt; &lt;/span&gt;line-break&lt;br /&gt;
&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt; &lt;/span&gt;•&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt; &lt;/span&gt;object-fit&lt;br /&gt;
&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt; &lt;/span&gt;•&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt; &lt;/span&gt;object-position&lt;br /&gt;
&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt; &lt;/span&gt;•&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt; &lt;/span&gt;opacity&lt;br /&gt;
&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt; &lt;/span&gt;•&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt; &lt;/span&gt;outline-offset&lt;br /&gt;
&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt; &lt;/span&gt;•&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt; &lt;/span&gt;overflow-wrap / word-wrap&lt;br /&gt;
&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt; &lt;/span&gt;•&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt; &lt;/span&gt;backface-visibility&lt;br /&gt;
&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt; &lt;/span&gt;•&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt; &lt;/span&gt;perspective&lt;br /&gt;
&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt; &lt;/span&gt;•&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt; &lt;/span&gt;perspective-origin&lt;br /&gt;
&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt; &lt;/span&gt;•&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt; &lt;/span&gt;pointer-events (for HTML)&lt;br /&gt;
&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt; &lt;/span&gt;•&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt; &lt;/span&gt;resize&lt;br /&gt;
&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt; &lt;/span&gt;•&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt; &lt;/span&gt;tab-size&lt;br /&gt;
&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt; &lt;/span&gt;•&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt; &lt;/span&gt;text-align-last&lt;br /&gt;
&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt; &lt;/span&gt;•&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt; &lt;/span&gt;text-decoration-line&lt;br /&gt;
&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt; &lt;/span&gt;•&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt; &lt;/span&gt;text-decoration-skip&lt;br /&gt;
&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt; &lt;/span&gt;•&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt; &lt;/span&gt;text-decoration-position&lt;br /&gt;
&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt; &lt;/span&gt;•&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt; &lt;/span&gt;text-decoration-style&lt;br /&gt;
&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt; &lt;/span&gt;•&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt; &lt;/span&gt;text-emphasis (and three associated properties)&lt;br /&gt;
&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt; &lt;/span&gt;•&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt; &lt;/span&gt;text-justify&lt;br /&gt;
&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt; &lt;/span&gt;•&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt; &lt;/span&gt;text-orientation&lt;br /&gt;
&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt; &lt;/span&gt;•&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt; &lt;/span&gt;text-overflow&lt;br /&gt;
&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt; &lt;/span&gt;•&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt; &lt;/span&gt;transform&lt;br /&gt;
&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt; &lt;/span&gt;•&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt; &lt;/span&gt;transform-style&lt;br /&gt;
&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt; &lt;/span&gt;•&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt; &lt;/span&gt;text-shadow&lt;br /&gt;
&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt; &lt;/span&gt;•&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt; &lt;/span&gt;transition (and four associated longhand properties)&lt;br /&gt;
&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt; &lt;/span&gt;•&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt; &lt;/span&gt;word-break&lt;br /&gt;
&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt; &lt;/span&gt;•&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt; &lt;/span&gt;word-spacing&lt;br /&gt;
&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt; &lt;/span&gt;•&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt; &lt;/span&gt;writing-mode&lt;br /&gt;
&lt;h3&gt;
New Values&lt;/h3&gt;
Properties from CSS2.1 have new values added to them in CSS3. Following are those new values and which property each belongs to.&lt;br /&gt;
&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt; &lt;/span&gt;•&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt; &lt;/span&gt;Value “local” for the background-attachment property&lt;br /&gt;
&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt; &lt;/span&gt;•&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt; &lt;/span&gt;Value &quot;rgba()&quot; for any property that accepts a color value&lt;br /&gt;
&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt; &lt;/span&gt;•&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt; &lt;/span&gt;Value &quot;hsl()&quot; for any property that accepts a color value&lt;br /&gt;
&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt; &lt;/span&gt;•&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt; &lt;/span&gt;Value &quot;hsla()&quot; for any property that accepts a color value&lt;br /&gt;
&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt; &lt;/span&gt;•&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt; &lt;/span&gt;Value &quot;currentColor&quot; for any property that accepts a color value&lt;br /&gt;
&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt; &lt;/span&gt;•&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt; &lt;/span&gt;Value &quot;inset()&quot; for the clip property&lt;br /&gt;
&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt; &lt;/span&gt;•&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt; &lt;/span&gt;Value &quot;linear-gradient()&quot; for any property that accepts an image value&lt;br /&gt;
&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt; &lt;/span&gt;•&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt; &lt;/span&gt;Value &quot;radial-gradient()&quot; for any property that accepts an image value&lt;br /&gt;
&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt; &lt;/span&gt;•&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt; &lt;/span&gt;Value &quot;repeating-linear-gradient()&quot; for any property that accepts an image value&lt;br /&gt;
&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt; &lt;/span&gt;•&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt; &lt;/span&gt;Value &quot;repeating-radial-gradient()&quot; for any property that accepts an image value&lt;br /&gt;
&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt; &lt;/span&gt;•&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt; &lt;/span&gt;Value &quot;image()&quot; for any property that accepts an image value&lt;br /&gt;
&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt; &lt;/span&gt;•&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt; &lt;/span&gt;Multiple comma-separated images for any property that accepts an image value&lt;br /&gt;
&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt; &lt;/span&gt;•&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt; &lt;/span&gt;Multiple comma-separated background-related values to match multiple background image declarations&lt;br /&gt;
&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt; &lt;/span&gt;•&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt; &lt;/span&gt;Value &quot;center&quot; for the position property&lt;br /&gt;
&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt; &lt;/span&gt;•&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt; &lt;/span&gt;Value &quot;page&quot; for the position property&lt;br /&gt;
&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt; &lt;/span&gt;•&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt; &lt;/span&gt;Value &quot;space&quot; for the background-repeat property&lt;br /&gt;
&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt; &lt;/span&gt;•&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt; &lt;/span&gt;Value &quot;round&quot; for the background-repeat property&lt;br /&gt;
&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt; &lt;/span&gt;•&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt; &lt;/span&gt;15 new values for the cursor property&lt;br /&gt;
&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt; &lt;/span&gt;•&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt; &lt;/span&gt;Values &quot;flex&quot; and &quot;inline-flex&quot; for the display property&lt;br /&gt;
&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt; &lt;/span&gt;•&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt; &lt;/span&gt;Values &quot;all-small-caps&quot;, &quot;petite-caps&quot;, &quot;all-petite-caps&quot;, &quot;titling-caps&quot;, and &quot;unicase&quot; for the font-variant property&lt;br /&gt;
&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt; &lt;/span&gt;•&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt; &lt;/span&gt;Multiple, space-separated values for the letter-spacing property&lt;br /&gt;
&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt; &lt;/span&gt;•&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt; &lt;/span&gt;New values for the text-align property, including &quot;&amp;lt;string&amp;gt;&quot;, &quot;match-parent&quot;, &quot;start&quot;, &quot;end&quot;, and &quot;start end&quot;&lt;br /&gt;
&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt; &lt;/span&gt;•&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt; &lt;/span&gt;text-decoration is now a shorthand property&lt;br /&gt;
&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt; &lt;/span&gt;•&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt; &lt;/span&gt;Keywords &quot;hanging&quot; and &quot;each-line&quot; declared along with length or percentage values for the tfext-indent property&lt;br /&gt;
&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt; &lt;/span&gt;•&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt; &lt;/span&gt;Value &quot;full-width&quot; for the text-transform property&lt;br /&gt;
&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt; &lt;/span&gt;•&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt; &lt;/span&gt;rem units for lengths&lt;br /&gt;
&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt; &lt;/span&gt;•&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt; &lt;/span&gt;calc() units for lengths&lt;br /&gt;
&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt; &lt;/span&gt;•&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt; &lt;/span&gt;toggle() units&lt;br /&gt;
&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt; &lt;/span&gt;•&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt; &lt;/span&gt;Angle units (deg, grad, rad, turn)&lt;br /&gt;
&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt; &lt;/span&gt;•&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt; &lt;/span&gt;Time units (s, ms)&lt;br /&gt;
&lt;h3&gt;
New Selectors&lt;/h3&gt;
Following is a list of selectors introduced in CSS3.&lt;br /&gt;
&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt; &lt;/span&gt;•&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt; &lt;/span&gt;Substring matching attribute selectors ([att^=val], [att$=val], [att*=val])&lt;br /&gt;
&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt; &lt;/span&gt;•&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt; &lt;/span&gt;:target pseudo-class&lt;br /&gt;
&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt; &lt;/span&gt;•&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt; &lt;/span&gt;New pseudo-classes: :enabled, :disabled, :checked, and :indeterminate&lt;br /&gt;
&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt; &lt;/span&gt;•&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt; &lt;/span&gt;:root pseudo-class&lt;br /&gt;
&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt; &lt;/span&gt;•&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt; &lt;/span&gt;New expression-based structural pseudo-classes: :nth-child(), :nth-last-child(), :nth-of-type(), :nth-last-of-type()&lt;br /&gt;
&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt; &lt;/span&gt;•&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt; &lt;/span&gt;Other new structural pseudo-classes: :last-child, :first-of-type, :last-of-type, :only-child, :only-of-type, :empty&lt;br /&gt;
&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt; &lt;/span&gt;•&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt; &lt;/span&gt;The negation pseudo-class :not()&lt;br /&gt;
&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt; &lt;/span&gt;•&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt; &lt;/span&gt;Four pseudo-elements with double-colon syntax (::first-line, ::first-letter, ::before, ::after)&lt;br /&gt;
&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt; &lt;/span&gt;•&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt; &lt;/span&gt;The following-sibling combinator (p ~ img)&lt;br /&gt;
&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt; &lt;/span&gt;•&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt; &lt;/span&gt;::selection pseudo-class (removed from the spec, but everyone uses it)&lt;br /&gt;
&lt;h3&gt;
Other Miscallaneous New Features&lt;/h3&gt;
Other new features not part of CSS2.1 include:&lt;br /&gt;
&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt; &lt;/span&gt;•&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt; &lt;/span&gt;@font-face&lt;br /&gt;
&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt; &lt;/span&gt;•&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt; &lt;/span&gt;Media Queries&lt;br /&gt;
&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt; &lt;/span&gt;•&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt; &lt;/span&gt;Keyframe animations using @keyframes&lt;br /&gt;
&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt; &lt;/span&gt;•&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt; &lt;/span&gt;Conditional styles using @supports&lt;br /&gt;
&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt; &lt;/span&gt;•&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt; &lt;/span&gt;Namespacing using @namespace&lt;br /&gt;
&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt; &lt;/span&gt;•&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt; &lt;/span&gt;Regions&lt;br /&gt;
&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt; &lt;/span&gt;•&lt;span class=&quot;Apple-tab-span&quot; style=&quot;white-space: pre;&quot;&gt; &lt;/span&gt;Filters&lt;br /&gt;
&lt;h3&gt;
Features Still in Flux&lt;/h3&gt;
The lists above aren&#39;t exhaustive. There&#39;s a lot that&#39;s still in major flux in the spec and that doesn&#39;t have much browser support. Below is a list of many of the new modules, which have loads of new features not mentioned above.&lt;br /&gt;
&lt;ul class=&quot;body_list&quot;&gt;
&lt;li&gt;&lt;a href=&quot;http://dev.w3.org/csswg/css-counter-styles-3/&quot;&gt;Counter Styles Level 3&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://dev.w3.org/csswg/css-device-adapt/&quot;&gt;Device Adaptation&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://dev.w3.org/csswg/css-display-3/&quot;&gt;Display Module Level 3&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://dev.w3.org/csswg/css-line-grid/&quot;&gt;Line Grid&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://dev.w3.org/csswg/css-size-adjust/&quot;&gt;Mobile Text Size Adjustment&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://dev.w3.org/csswg/css-variables/&quot;&gt;CSS Variables&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://dev.w3.org/csswg/css3-align/&quot;&gt;Box Alignment&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://dev.w3.org/csswg/css3-cascade/#all-shorthand&quot;&gt;The &quot;all&quot; property&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://dev.w3.org/csswg/css3-exclusions/&quot;&gt;Exclusions and Shapes&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://dev.w3.org/csswg/css3-gcpm/&quot;&gt;Generated Content for Paged Media&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://dev.w3.org/csswg/css3-grid-layout/&quot;&gt;Grid Layout&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://dev.w3.org/csswg/css3-layout/&quot;&gt;Grid Template Layout&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://dev.w3.org/csswg/css3-linebox/&quot;&gt;Line Layout Module&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;New features in &lt;a href=&quot;http://dev.w3.org/csswg/css3-lists/&quot;&gt;Lists and Counters&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://dev.w3.org/csswg/css3-overflow/&quot;&gt;Overflow Module&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;New features in &lt;a href=&quot;http://dev.w3.org/csswg/css3-page/&quot;&gt;Paged Media&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;New features in &lt;a href=&quot;http://dev.w3.org/csswg/css3-sizing/&quot;&gt;CSS Sizing&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://dev.w3.org/csswg/mediaqueries4/&quot;&gt;Media Queries Level 4&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://dev.w3.org/csswg/selectors4/&quot;&gt;Selectors Level 4&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://www.w3.org/TR/css3-values/#ch-unit&quot;&gt;ch units&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://www.w3.org/TR/css3-values/#viewport-relative-lengths&quot;&gt;Viewport relative lengths&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;New &lt;a href=&quot;http://www.w3.org/TR/css3-values/#resolution&quot;&gt;resolution units&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://dvcs.w3.org/hg/FXTF/rawfile/tip/compositing/index.html&quot;&gt;Compositing and Blending&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;New features in &lt;a href=&quot;http://dev.w3.org/csswg/css3-speech/&quot;&gt;CSS speech&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;The &lt;a href=&quot;http://www.w3.org/TR/css3-fonts/#unicode-range-desc&quot;&gt;unicode-range descriptor&lt;/a&gt; for @font-face&lt;/li&gt;
&lt;li&gt;New features in &lt;a href=&quot;http://dev.w3.org/csswg/css4-images/&quot;&gt;CSS Images and Replaced Content&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;
Summary&lt;/h3&gt;
This isn&#39;t exactly the most useful post, but I kind of wanted to have a single reference that I can use to look up stuff like this, for ideas and whatnot.&lt;br /&gt;
In conclusion, if you don&#39;t see a CSS feature listed here, then it almost certainly belongs to CSS2.1, or else I&#39;ve left it out for whatever reason.&lt;br /&gt;
As always, I&#39;ve done what I can to ensure I&#39;ve included everything, but feel free to add anything in the comments and I&#39;ll update accordingly.&lt;br /&gt;
&lt;br /&gt;
&lt;a href=&quot;http://www.impressivewebs.com/differences-between-css2-and-css3/&quot; target=&quot;_blank&quot;&gt;Post by Louis Lazaris&lt;/a&gt;&lt;br /&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3176943100655981551/posts/default/1978197368842477715'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3176943100655981551/posts/default/1978197368842477715'/><link rel='alternate' type='text/html' href='http://luiscameroon.blogspot.com/2012/12/differences-between-css21-and-css3.html' title='Differences Between CSS2.1 and CSS3+'/><author><name>Luis Cameroon</name><uri>http://www.blogger.com/profile/02443056704463245314</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author></entry><entry><id>tag:blogger.com,1999:blog-3176943100655981551.post-7263343993461454280</id><published>2012-12-05T14:15:00.001-08:00</published><updated>2012-12-05T22:35:01.067-08:00</updated><title type='text'>Building Responsive Layouts</title><content type='html'>&lt;h2 class=&quot;entry-title&quot; style=&quot;background-color: white; font-family: arial, sans-serif; margin: 0px; max-width: 650px;&quot;&gt;
&lt;span style=&quot;font-size: small;&quot;&gt;Responsive web design link hubs&lt;/span&gt;&lt;/h2&gt;
&lt;div class=&quot;entry-body&quot; style=&quot;background-color: white; font-family: arial, sans-serif; font-size: 13px; margin: 0px; max-width: 650px; padding-top: 0.5em;&quot;&gt;
&lt;div style=&quot;margin: 0px;&quot;&gt;
&lt;div class=&quot;item-body&quot; style=&quot;margin: 0px;&quot;&gt;
&lt;div style=&quot;margin: 0px;&quot;&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;http://responsive.rga.com/&quot; style=&quot;color: #1155cc;&quot; target=&quot;_blank&quot;&gt;This is Responsive&lt;/a&gt;&amp;nbsp;by R/GA&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://bradfrost.github.com/this-is-responsive/resources.html&quot; style=&quot;color: #1155cc;&quot; target=&quot;_blank&quot;&gt;Responsive Resources&lt;/a&gt;&amp;nbsp;by Brad Frost&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://www.scoop.it/t/gonzodesign&quot; style=&quot;color: #1155cc;&quot; target=&quot;_blank&quot;&gt;Responsive WebDesign&lt;/a&gt;&amp;nbsp;by gonzodesign for Scoop.it&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://www.templatemonster.com/infographics/responsive-web-design-interactive-guide.php&quot; style=&quot;color: #1155cc;&quot; target=&quot;_blank&quot;&gt;Responsive web design interactive infographic&lt;/a&gt;&amp;nbsp;by Template Monster&lt;/li&gt;
&lt;li&gt;“&lt;a href=&quot;http://www.netmagazine.com/features/50-fantastic-tools-responsive-web-design&quot; style=&quot;color: #1155cc;&quot; target=&quot;_blank&quot;&gt;50 fantastic tools for responsive web design&lt;/a&gt;” by Denise Jacobs and Peter Gasston for .net Magazine&lt;/li&gt;
&lt;li&gt;“&lt;a href=&quot;http://www.smashingmagazine.com/responsive-web-design-guidelines-tutorials/&quot; style=&quot;color: #1155cc;&quot; target=&quot;_blank&quot;&gt;Responsive Web Design Guidelines and Tutorials&lt;/a&gt;” by Smashing Magazine&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;
Responsive web design articles, tutorials, and tools&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;“&lt;a href=&quot;http://zomigi.com/blog/essential-considerations-for-crafting-quality-media-queries/&quot; style=&quot;color: #1155cc;&quot; target=&quot;_blank&quot;&gt;Essential considerations for crafting quality media queries&lt;/a&gt;” by Zoe Gillenwater&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://stunningcss3.com/samples/index.html&quot; style=&quot;color: #1155cc;&quot; target=&quot;_blank&quot;&gt;Excerpt of Chapter 6 of Stunning CSS3 on media queries&lt;/a&gt;&amp;nbsp;by Zoe Gillenwater&lt;/li&gt;
&lt;li&gt;“&lt;a href=&quot;http://www.alistapart.com/articles/responsive-web-design/&quot; style=&quot;color: #1155cc;&quot; target=&quot;_blank&quot;&gt;Responsive Web Design&lt;/a&gt;” by Ethan Marcotte for A List Apart&lt;/li&gt;
&lt;li&gt;“&lt;a href=&quot;http://www.netmagazine.com/tutorials/adaptive-layouts-media-queries&quot; style=&quot;color: #1155cc;&quot; target=&quot;_blank&quot;&gt;Adaptive layouts with media queries&lt;/a&gt;” by Aaron Gustafson for .net Magazine&lt;/li&gt;
&lt;li&gt;“&lt;a href=&quot;http://artequalswork.com/posts/target-first.php&quot; style=&quot;color: #1155cc;&quot; target=&quot;_blank&quot;&gt;Design for a Target Experience First&lt;/a&gt;” by Nathan C. Ford&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://www.goldilocksapproach.com/&quot; style=&quot;color: #1155cc;&quot; target=&quot;_blank&quot;&gt;The Goldilocks Approach&lt;/a&gt;&amp;nbsp;by Front design agency&lt;/li&gt;
&lt;li&gt;“&lt;a href=&quot;http://coding.smashingmagazine.com/2012/03/22/device-agnostic-approach-to-responsive-web-design/&quot; style=&quot;color: #1155cc;&quot; target=&quot;_blank&quot;&gt;Device-Agnostic Approach To Responsive Web Design&lt;/a&gt;” by Theirry Koblentz for Smashing Magazine&lt;/li&gt;
&lt;li&gt;“&lt;a href=&quot;http://www.alaress.com.au/2011/04/developing-for-high-dpi-devices/&quot; style=&quot;color: #1155cc;&quot; target=&quot;_blank&quot;&gt;Why images appear blurry on mobile devices&lt;/a&gt;” by Christopher Cohen&lt;/li&gt;
&lt;li&gt;“&lt;a href=&quot;http://css-tricks.com/which-responsive-images-solution-should-you-use/&quot; style=&quot;color: #1155cc;&quot; target=&quot;_blank&quot;&gt;Which responsive images solution should you use?&lt;/a&gt;” by Chris Coyier&lt;/li&gt;
&lt;li&gt;“&lt;a href=&quot;http://www.lukew.com/ff/entry.asp?1552&quot; style=&quot;color: #1155cc;&quot; target=&quot;_blank&quot;&gt;RESS Multi-Device Design Resources&lt;/a&gt;” by Luke Wroblewski&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://gridpak.com/&quot; style=&quot;color: #1155cc;&quot; target=&quot;_blank&quot;&gt;Gridpak&lt;/a&gt;&amp;nbsp;responsive grid generator by Erskine Design&lt;/li&gt;
&lt;/ul&gt;
&lt;br /&gt;
&lt;h3&gt;
Mobile viewports&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;“&lt;a href=&quot;http://quirksmode.org/presentations/Spring2012/viewports_sf.pdf&quot; style=&quot;color: #1155cc;&quot; target=&quot;_blank&quot;&gt;A pixel is not a pixel&lt;/a&gt;” by Peter-Paul Koch (PDF of presentation slides)&lt;/li&gt;
&lt;li&gt;“&lt;a href=&quot;http://dev.opera.com/articles/view/an-introduction-to-meta-viewport-and-viewport/&quot; style=&quot;color: #1155cc;&quot; target=&quot;_blank&quot;&gt;An introduction to meta viewport and @viewport&lt;/a&gt;” by Andrea Bovens for Dev.Opera&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://github.com/scottjehl/Device-Bugs/issues/2&quot; style=&quot;color: #1155cc;&quot; target=&quot;_blank&quot;&gt;iOS orientation change zoom bug&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;“&lt;a href=&quot;http://timkadlec.com/2012/10/ie10-snap-mode-and-responsive-design/&quot; style=&quot;color: #1155cc;&quot; target=&quot;_blank&quot;&gt;IE10 Snap Mode and Responsive Design&lt;/a&gt;” by Tim Kadlec&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;
Dealing with IE 6-8 support&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://github.com/scottjehl/Respond&quot; style=&quot;color: #1155cc;&quot; target=&quot;_blank&quot;&gt;Respond&lt;/a&gt;&amp;nbsp;script for media query support by Scott Jehl&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://code.google.com/p/css3-mediaqueries-js/&quot; style=&quot;color: #1155cc;&quot; target=&quot;_blank&quot;&gt;css3-mediaqueries.js&lt;/a&gt;&amp;nbsp;script for media query support by Wouter van der Graaf&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://github.com/Schepp/box-sizing-polyfill&quot; style=&quot;color: #1155cc;&quot; target=&quot;_blank&quot;&gt;box-sizing polyfill&lt;/a&gt;&amp;nbsp;for box-sizing support by Christian Schaefer&lt;/li&gt;
&lt;li&gt;“&lt;a href=&quot;http://adactio.com/journal/4494/&quot; style=&quot;color: #1155cc;&quot; target=&quot;_blank&quot;&gt;Windows mobile media queries&lt;/a&gt;” by Jeremy Keith&lt;/li&gt;
&lt;li&gt;“&lt;a href=&quot;http://blogs.msdn.com/b/iemobile/archive/2010/12/08/targeting-mobile-optimized-css-at-windows-phone-7.aspx&quot; style=&quot;color: #1155cc;&quot; target=&quot;_blank&quot;&gt;Targeting mobile-optimized CSS at Windows Phone 7&lt;/a&gt;” by IE Mobile Team&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;
Fluid/liquid layout&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;http://flexiblewebbook.com/&quot; style=&quot;color: #1155cc;&quot; target=&quot;_blank&quot;&gt;Flexible Web Design: Creating Liquid and Elastic Layouts with CSS&lt;/a&gt;&amp;nbsp;book by Zoe Gillenwater&lt;/li&gt;
&lt;li&gt;“&lt;a href=&quot;http://zomigi.com/blog/essential-resources-for-creating-liquid-and-elastic-layouts/&quot; style=&quot;color: #1155cc;&quot; target=&quot;_blank&quot;&gt;70+ essential resources for creating liquid and elastic layouts&lt;/a&gt;” by Zoe Gillenwater&lt;/li&gt;
&lt;li&gt;“&lt;a href=&quot;http://www.vanseodesign.com/css/css-layout-patterns-part-2/&quot; style=&quot;color: #1155cc;&quot; target=&quot;_blank&quot;&gt;Pros And Cons Of 6 CSS Layout Patterns: Part 2&lt;/a&gt;” by Steven Bradley&lt;/li&gt;
&lt;li&gt;“&lt;a href=&quot;http://coding.smashingmagazine.com/2009/07/27/the-definitive-guide-to-using-negative-margins/&quot; style=&quot;color: #1155cc;&quot; target=&quot;_blank&quot;&gt;The Definitive Guide to Using Negative Margins&lt;/a&gt;” by John Imbong for Smashing Magazine&lt;/li&gt;
&lt;li&gt;“&lt;a href=&quot;http://www.mindfly.com/blog/post/2009/01/12/Get-Refreshed-Liquid-Layouts-With-Simpler-CSS-and-Without-A-Semantic-Mess.aspx&quot; style=&quot;color: #1155cc;&quot; target=&quot;_blank&quot;&gt;Get Refreshed: Liquid Layouts With Simpler CSS and Without A Semantic Mess&lt;/a&gt;” by Kyle Weems&lt;/li&gt;
&lt;li&gt;“&lt;a href=&quot;http://palantir.net/blog/responsive-design-s-dirty-little-secret&quot; style=&quot;color: #1155cc;&quot; target=&quot;_blank&quot;&gt;Responsive Design’s Dirty Little Secret&lt;/a&gt;” by John Albin Wilkins&lt;/li&gt;
&lt;li&gt;“&lt;a href=&quot;http://builtbyboon.com/blog/proportional-grids&quot; style=&quot;color: #1155cc;&quot; target=&quot;_blank&quot;&gt;Proportional Grids&lt;/a&gt;” by Matt Berridge&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://moople.co.uk/likeatable.html&quot; style=&quot;color: #1155cc;&quot; target=&quot;_blank&quot;&gt;Hybrid fluid-fixed demo using display:table&lt;/a&gt;&amp;nbsp;by Moople&lt;/li&gt;
&lt;li&gt;“&lt;a href=&quot;http://paulirish.com/2012/box-sizing-border-box-ftw/&quot; style=&quot;color: #1155cc;&quot; target=&quot;_blank&quot;&gt;* { box-sizing: border-box } FTW&lt;/a&gt;” by Paul Irish&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;
Responsive web design inspiration and design patterns&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;http://mediaqueri.es/&quot; style=&quot;color: #1155cc;&quot; target=&quot;_blank&quot;&gt;Mediaqueri.es&lt;/a&gt;&amp;nbsp;gallery&lt;/li&gt;
&lt;li&gt;My media query inspiration bookmarks on&amp;nbsp;&lt;a href=&quot;https://gimmebar.com/loves/zomigi/tag/mediaqueries&quot; style=&quot;color: #1155cc;&quot; target=&quot;_blank&quot;&gt;Gimmebar&lt;/a&gt;&amp;nbsp;and&amp;nbsp;&lt;a href=&quot;http://delicious.com/pixelsurge/mediaqueries+nicedesign&quot; style=&quot;color: #1155cc;&quot; target=&quot;_blank&quot;&gt;delicious&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;My liquid layout inspiration bookmarks on&amp;nbsp;&lt;a href=&quot;https://gimmebar.com/loves/zomigi/tag/liquid&quot; style=&quot;color: #1155cc;&quot; target=&quot;_blank&quot;&gt;Gimmebar&lt;/a&gt;&amp;nbsp;and&amp;nbsp;&lt;a href=&quot;http://delicious.com/pixelsurge/liquid+nicedesign&quot; style=&quot;color: #1155cc;&quot; target=&quot;_blank&quot;&gt;delicious&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;“&lt;a href=&quot;http://zomigi.com/blog/examples-of-flexible-layouts-with-css3-media-queries/&quot; style=&quot;color: #1155cc;&quot; target=&quot;_blank&quot;&gt;Examples of flexible layouts with CSS3 media queries&lt;/a&gt;” by Zoe Gillenwater&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://bradfrost.github.com/this-is-responsive/patterns.html&quot; style=&quot;color: #1155cc;&quot; target=&quot;_blank&quot;&gt;Responsive Patterns&lt;/a&gt;&amp;nbsp;collection by Brad Frost&lt;/li&gt;
&lt;li&gt;“&lt;a href=&quot;http://www.lukew.com/ff/entry.asp?1514&quot; style=&quot;color: #1155cc;&quot; target=&quot;_blank&quot;&gt;Multi-Device Layout Patterns&lt;/a&gt;” by Luke Wroblewski&lt;/li&gt;
&lt;li&gt;“&lt;a href=&quot;http://bradfrostweb.com/blog/web/responsive-nav-patterns/&quot; style=&quot;color: #1155cc;&quot; target=&quot;_blank&quot;&gt;Responsive navigation patterns&lt;/a&gt;” by Brad Frost&lt;/li&gt;
&lt;li&gt;“&lt;a href=&quot;http://bradfrostweb.com/blog/web/complex-navigation-patterns-for-responsive-design/&quot; style=&quot;color: #1155cc;&quot; target=&quot;_blank&quot;&gt;Complex navigation patterns for responsive design&lt;/a&gt;” by Brad Frost&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;
Related Posts by Zoe Gillenwater:&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;http://zomigi.com/blog/responsive-layouts-presentation/&quot; style=&quot;color: #1155cc;&quot; target=&quot;_blank&quot; title=&quot;Building Responsive Layouts presentation at Responsive Web Design Summit&quot;&gt;Building Responsive Layouts presentation at Responsive Web Design Summit&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://zomigi.com/blog/responsive-web-design-presentation/&quot; style=&quot;color: #1155cc;&quot; target=&quot;_blank&quot; title=&quot;Responsive web design presentation at STC Summit&quot;&gt;Responsive web design presentation at STC Summit&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://zomigi.com/blog/media-queries-presentation/&quot; style=&quot;color: #1155cc;&quot; target=&quot;_blank&quot; title=&quot;Media queries presentation at indieconf&quot;&gt;Media queries presentation at indieconf&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://zomigi.com/blog/future-css-layout-fowd/&quot; style=&quot;color: #1155cc;&quot; target=&quot;_blank&quot; title=&quot;The Future of CSS Layout presentation at Future of Web Design conference&quot;&gt;The Future of CSS Layout presentation at Future of Web Design conference&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://zomigi.com/blog/examples-of-flexible-layouts-with-css3-media-queries/&quot; style=&quot;color: #1155cc;&quot; target=&quot;_blank&quot; title=&quot;Examples of flexible layouts with CSS3 media queries&quot;&gt;Examples of flexible layouts with CSS3 media queries&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;br /&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3176943100655981551/posts/default/7263343993461454280'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3176943100655981551/posts/default/7263343993461454280'/><link rel='alternate' type='text/html' href='http://luiscameroon.blogspot.com/2012/12/building-responsive-layouts.html' title='Building Responsive Layouts'/><author><name>Luis Cameroon</name><uri>http://www.blogger.com/profile/02443056704463245314</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author></entry><entry><id>tag:blogger.com,1999:blog-3176943100655981551.post-4556117372408171450</id><published>2012-10-04T10:09:00.001-07:00</published><updated>2012-10-04T10:09:52.283-07:00</updated><title type='text'>The Code Side Of Color // Hex Colors</title><content type='html'>The trouble with a color’s name is that it never really is perceived as the exact same color to two different individuals —&amp;nbsp;especially if they have a stake in a website’s emotional impact. Name a color, and you’re most likely to give a misleading impression. Even something like “blue” is uncertain. To be more precise, it could be “sky blue”, “ocean blue”, “jeans blue” or even “arc welder blue”.&lt;br /&gt;
Descriptions vary with personal taste and in context with other colors. We label them “indigo”, “jade”, “olive”, “tangerine”, “scarlet” or “cabaret”. What exactly is “electric lime”? Names and precise shades vary — unless you’re a computer.&lt;br /&gt;
&lt;h3&gt;Code Demands Precision&lt;/h3&gt;When computers name a color, they use a so-called &lt;em&gt;hexidecimal code&lt;/em&gt; that most humans gloss over: 24-bit colors. That is, 16,777,216 unique combinations of exactly seven characters made from ten numerals and six letters — preceded by a hash mark. Like any computer language, there’s a logical system at play. Designers who understand how hex colors work can treat them as tools rather than mysteries.&lt;br /&gt;
&lt;h4&gt;Breaking Hexadecimals Into Manageable Bytes&lt;/h4&gt;Pixels on back-lit screens are dark until lit by combinations of red, green, and blue. Hex numbers represent these combinations with a concise code. That code is easily broken. To make sense of &lt;code&gt;#970515&lt;/code&gt;, we need to look at its structure:&lt;br /&gt;
The first character &lt;code&gt;#&lt;/code&gt; declares that this “is a hex number.” The other six are really three sets of pairs: &lt;code&gt;0–9&lt;/code&gt; and &lt;code&gt;a–f&lt;/code&gt;. Each pair controls one primary additive color.&lt;br /&gt;
&lt;img alt=&quot;Hex Reading&quot; height=&quot;132&quot; src=&quot;http://media.smashingmagazine.com/wp-content/uploads/2012/08/hex-reading.png&quot; title=&quot;Hex Reading&quot; width=&quot;500&quot; /&gt;&lt;br /&gt;
&lt;em&gt;The higher the numbers are, the brighter each primary color is. In the example above, 97 overwhelms the red color, 05 the green color and 15 the blue color.&lt;/em&gt;&lt;br /&gt;
Each pair can only hold two characters, but &lt;code&gt;#999999&lt;/code&gt; is only medium gray. To reach colors brighter than &lt;code&gt;99&lt;/code&gt; with only two characters, each of the hex numbers use letters to represent &lt;code&gt;10–16&lt;/code&gt;. &lt;code&gt;A&lt;/code&gt;, &lt;code&gt;B&lt;/code&gt;, &lt;code&gt;C&lt;/code&gt;, &lt;code&gt;D&lt;/code&gt;, &lt;code&gt;E&lt;/code&gt;, and &lt;code&gt;F&lt;/code&gt; after &lt;code&gt;0–9&lt;/code&gt; makes an even &lt;code&gt;16&lt;/code&gt;, not unlike jacks, queens, kings and aces in cards.&lt;br /&gt;
&lt;img alt=&quot;Diagram showing how hex colors pass above 0-9&quot; height=&quot;470&quot; src=&quot;http://media.smashingmagazine.com/wp-content/uploads/2012/09/hex-chart-2.png&quot; title=&quot;Hex Chart&quot; width=&quot;500&quot; /&gt;&lt;br /&gt;
Being mathematical, computer-friendly codes, &lt;strong&gt;hex numbers are strings full of patterns&lt;/strong&gt;. For example, because &lt;code&gt;00&lt;/code&gt; is a lack of primary and &lt;code&gt;ff&lt;/code&gt; is the primary at full strength, &lt;code&gt;#000000&lt;/code&gt; is black (no primaries) and &lt;code&gt;#ffffff&lt;/code&gt; is white (all primaries). We can build on these to find additive and subtractive colors. Starting with black, change each pair to &lt;code&gt;ff&lt;/code&gt;:&lt;br /&gt;
&lt;ul&gt;&lt;li&gt;&lt;code&gt;#000000&lt;/code&gt; is black, the starting point.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;#&lt;strong&gt;ff&lt;/strong&gt;0000&lt;/code&gt; stands for the brightest red.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;#00&lt;strong&gt;ff&lt;/strong&gt;00&lt;/code&gt; stands for the brightest green.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;#0000&lt;strong&gt;ff&lt;/strong&gt;&lt;/code&gt; stands for the brightest blue.&lt;/li&gt;
&lt;/ul&gt;Subtractive colors start with white, i.e. with the help of &lt;code&gt;#ffffff&lt;/code&gt;. To find subtractive primaries, change each pair to &lt;code&gt;00&lt;/code&gt;:&lt;br /&gt;
&lt;ul&gt;&lt;li&gt;&lt;code&gt;#ffffff&lt;/code&gt; is white, the starting point.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;#&lt;strong&gt;00&lt;/strong&gt;ffff&lt;/code&gt; stands for the brightest cyan.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;#ff&lt;strong&gt;00&lt;/strong&gt;ff&lt;/code&gt; stands for the brightest magenta.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;#ffff&lt;strong&gt;00&lt;/strong&gt;&lt;/code&gt; stands for the brightest yellow.&lt;/li&gt;
&lt;/ul&gt;&lt;img alt=&quot;Mixing additive colors to make subtractives&quot; height=&quot;447&quot; src=&quot;http://media.smashingmagazine.com/wp-content/uploads/2012/09/hex-additive-and-subtractive.png&quot; title=&quot;Mixing Additive Colors to Make Subtractives&quot; width=&quot;500&quot; /&gt;&lt;br /&gt;
&lt;h4&gt;Shortcuts In Hex&lt;/h4&gt;Hex numbers that use only three characters, such as &lt;code&gt;#fae&lt;/code&gt;, imply that each &lt;a href=&quot;http://www.mathsisfun.com/hexadecimals.html&quot;&gt;ones place&lt;/a&gt; should match the &lt;a href=&quot;http://en.wikipedia.org/wiki/Tens_place#Computation_of_place_values&quot;&gt;tens place&lt;/a&gt;. Thus &lt;code&gt;#fae&lt;/code&gt; expands to &lt;code&gt;#ffaaee&lt;/code&gt; and &lt;code&gt;#09b&lt;/code&gt; really means &lt;code&gt;#0099bb&lt;/code&gt;. These shorthand codes provides brevity in code.&lt;br /&gt;
In most cases, one can read a hex number by ignoring every other character, because the difference between the tens place tells us more than the ones place. That is, it’s hard to see the difference between 41 and 42; easier to gauge is the difference between 41 and 51.&lt;br /&gt;
&lt;img alt=&quot;Diagram emphasizing the first character in each pair of characters&quot; height=&quot;148&quot; src=&quot;http://media.smashingmagazine.com/wp-content/uploads/2012/08/hex-first-digits-first.png&quot; title=&quot;First Digits First&quot; width=&quot;500&quot; /&gt;&lt;br /&gt;
The example above has enough difference among its tens place to make the color easy to guess — lots of red, some blue, no green. This would provide us with a warm violet color. Tens in the second example (9, 9 and 8) are very similar. To judge this color, we need to examine the ones (7, 0, and 5). The closer a hex color’s tens places are, the more neutral (i.e. less saturated) it will be.&lt;br /&gt;
&lt;h3&gt;Make Hexadecimals Work For You&lt;/h3&gt;Understanding hex colors lets designers do more than impress co-workers and clients by saying, “Ah, good shade of burgundy there.” Hex colors let designers tweak colors on the fly to improve legibility, identify elements by color in stylesheets, and develop color schemes in ways most image editors can’t.&lt;br /&gt;
&lt;h4&gt;Keep Shades In Character&lt;/h4&gt;To brighten or darken a color, one’s inclination is often to adjust its brightness. &lt;strong&gt;This makes a color run the gamut from murky to brilliant&lt;/strong&gt;, but loses its character on either end of the scale. For example, below a middle green becomes decidedly black when reduced to 20% brightness. Raised to 100%, the once-neutral green gains vibrancy.&lt;br /&gt;
A funny thing happens when we treat hex colors as if they were increments of tens. By adding one to each of the tens place, we &lt;em&gt;raise&lt;/em&gt; a color’s brightness while &lt;em&gt;lowering&lt;/em&gt; its saturation. This prevents shades of a given color from wandering too closely to pitch black or brilliant neon.&amp;nbsp;Altering hex pairs retains the essence of a color.&lt;br /&gt;
&lt;img alt=&quot;Diagram showing how hex affects brightness and saturation&quot; height=&quot;464&quot; src=&quot;http://media.smashingmagazine.com/wp-content/uploads/2012/08/hex-changing-tens.png&quot; title=&quot;Changing Tens&quot; width=&quot;500&quot; /&gt;&lt;br /&gt;
In the example above, the top set of shades appears to gain yellow or fall to black, even though it’s technically the same green hue. By changing its hex pairs, the second set appears to keep more natural shades.&lt;br /&gt;
&lt;h4&gt;Faded Underlines&lt;/h4&gt;By default, browsers underline text to denote links. But thick underlines interfere with letters’ descenders. Designers can make underlines less obtrusive by scaling back hex colors. The idea is to make the tags closer to the background color, while the text itself gains contrast against the background.&lt;br /&gt;
&lt;ul&gt;&lt;li&gt;For dark text on a bright background, we make the links brighter.&lt;/li&gt;
&lt;li&gt;For bright text on a dark background, we make the links darker.&lt;/li&gt;
&lt;/ul&gt;To make this work, every embedded link needs a &amp;lt;&lt;code&gt;span&lt;/code&gt;&amp;gt; inside of every &amp;lt;a&amp;gt;:&lt;br /&gt;
&lt;code&gt;a { text-decoration:underline;color:#aaaaff; }&lt;/code&gt;&lt;br /&gt;
&lt;code&gt;a span { text-decoration:none;color:#0000ff; }&lt;/code&gt;&lt;br /&gt;
&lt;img alt=&quot;Example of underlines that pale compared to the clickable text&quot; height=&quot;400&quot; src=&quot;http://media.smashingmagazine.com/wp-content/uploads/2012/08/hex-descenders.png&quot; title=&quot;Descenders&quot; width=&quot;500&quot; /&gt;&lt;br /&gt;
As you can see here, underlines in the same color as the text can interfere with parts of type that drop below the baseline. Changing the underline to resemble the background more closely makes descenders easier to read, even though most browsers place underlines above the letterforms.&lt;br /&gt;
Adding spans to every anchor tag can be problematic. A popular alternative is to remove underlines and add border-bottom:&lt;br /&gt;
&lt;code&gt;a { text-decoration: none; border-bottom: 1px solid #aaaaff; }&lt;/code&gt;&lt;br /&gt;
&lt;h4&gt;Better Body Copy&lt;/h4&gt;A recurring design problem is that a specific color may be technically correct but has an unintended effect. For example, some designs call for headers and body copy to be the same color. We have to keep in mind that the thicker the strokes of large text appears, the darker the small text appears.&lt;br /&gt;
&lt;img alt=&quot;Example of text that, while technically correct, appears too bright&quot; height=&quot;134&quot; src=&quot;http://media.smashingmagazine.com/wp-content/uploads/2012/08/hex-text-too-light1.png&quot; title=&quot;The Text Is Too Bright&quot; width=&quot;500&quot; /&gt;&lt;br /&gt;
&lt;code&gt;h1, p { color: #797979; }&lt;/code&gt;&lt;br /&gt;
&lt;img alt=&quot;Example of text technically darker but visually the same&quot; height=&quot;134&quot; src=&quot;http://media.smashingmagazine.com/wp-content/uploads/2012/08/hex-text-improved1.png&quot; title=&quot;The Text Is Improved&quot; width=&quot;500&quot; /&gt;&lt;br /&gt;
&lt;code&gt;h1 { color: #797979; }&lt;/code&gt;&lt;br /&gt;
&lt;code&gt;p { color: #393939; }&lt;/code&gt;&lt;br /&gt;
While technically identical, the body of the copy is narrower, and more delicate letterforms make it visually brighter than the heading. Lowering the tens places will make the text easier to read.&lt;br /&gt;
&lt;h4&gt;How To Warm Up Or Cool Down A Background&lt;/h4&gt;Neutral backgrounds may be easy to read against, but “neutral” doesn’t have to mean “bland”. Adjusting the first and last byte can make a background subtly warmer or cooler.&lt;br /&gt;
&lt;img alt=&quot;Examples with slight background color variations&quot; height=&quot;106&quot; src=&quot;http://media.smashingmagazine.com/wp-content/uploads/2012/08/hex-different-backgrounds-1.png&quot; title=&quot;Different Backgrounds-1&quot; width=&quot;500&quot; /&gt;&lt;br /&gt;
&lt;ul&gt;&lt;li&gt;&lt;code&gt;#404040&lt;/code&gt; — neutral&lt;/li&gt;
&lt;li&gt;&lt;code&gt;#504030&lt;/code&gt; — warmer&lt;/li&gt;
&lt;li&gt;&lt;code&gt;#304050&lt;/code&gt; — cooler&lt;/li&gt;
&lt;/ul&gt;Is that too much? For a more subtle shift, use the ones places instead:&lt;br /&gt;
&lt;img alt=&quot;Examples of very slight variations in background color&quot; height=&quot;106&quot; src=&quot;http://media.smashingmagazine.com/wp-content/uploads/2012/08/hex-different-backgrounds-2.png&quot; title=&quot;More Subtle Background Shift&quot; width=&quot;500&quot; /&gt;&lt;br /&gt;
&lt;ul&gt;&lt;li&gt;&lt;code&gt;#404040&lt;/code&gt; — neutral&lt;/li&gt;
&lt;li&gt;&lt;code&gt;#594039&lt;/code&gt; — warmer&lt;/li&gt;
&lt;li&gt;&lt;code&gt;#394059&lt;/code&gt; — cooler&lt;/li&gt;
&lt;/ul&gt;&lt;h4&gt;Coordinate Colors With Copy-Paste&lt;/h4&gt;Recognizing the structure of a hex number’s number/letter pairs gives designers a unique tool to explore color combinations. Unlike color wheels and charts, rearranging pairs in a hex number is a simple process to change hues while keeping values similar. As a bonus, the results can be unpredictable. The simplest technique is to move one pair of characters to a different spot, which trades primary colors.&lt;br /&gt;
A common design technique to make text or other visual elements coordinate with a photo is to use colors from within that photo. &lt;strong&gt;Understanding hex colors can take that a step further&lt;/strong&gt;, by deriving new colors that coordinate with the photo without taking directly from the photo.&lt;br /&gt;
&lt;img alt=&quot;Examples of how swapping primary colors can yield coordinated but interesting results&quot; height=&quot;390&quot; src=&quot;http://media.smashingmagazine.com/wp-content/uploads/2012/08/swap-triplets.png&quot; title=&quot;Swap Triplets&quot; width=&quot;500&quot; /&gt;&lt;br /&gt;
&lt;h3&gt;Going Forward&lt;/h3&gt;Don’t let the code intimidate you. With a little creativity, hex colors are a tool at your disposal. If nothing else, next time someone asks if you can solve a problem with code in any language, you can simply say:&lt;br /&gt;
&lt;br /&gt;
&lt;blockquote&gt;“Shouldn’t be harder than parsing hexidecimal triplets in my head.”&lt;/blockquote&gt;&lt;br /&gt;
&lt;h4&gt;Further Reading&lt;/h4&gt;You may be interested in the following articles and related resources:&lt;br /&gt;
&lt;ul&gt;&lt;li&gt;&lt;a href=&quot;http://www.colblindor.com/color-name-hue/&quot;&gt;Color Name &amp;amp; Hue&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
Use this handy tool to find human-friendly names for any hex color.&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://www.bamagazine.com/How-to-find-the-perfect-color-p/d1310453.htm&quot;&gt;How to Choose the Perfect Color&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
Recognize that color is relational and context becomes the key to choosing the right color to compliment any photo.&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://www.w3schools.com/html/html_colornames.asp&quot;&gt;HTML Color Names&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
147 official color names and their hexidecimal values recognized by all major browsers.&lt;/li&gt;
&lt;/ul&gt;&lt;em&gt;(il)&lt;/em&gt;&lt;br /&gt;
&lt;b&gt;&lt;br /&gt;
&lt;/b&gt; &lt;b&gt;Post:&amp;nbsp;&lt;/b&gt;&lt;a href=&quot;http://www.smashingmagazine.com/2012/10/04/the-code-side-of-color/&quot;&gt;The Code Side Of Color // Hex Colors&lt;/a&gt;&lt;br /&gt;
&lt;hr /&gt;&lt;small&gt;© Ben Gremillion for &lt;a href=&quot;http://www.smashingmagazine.com/&quot;&gt;Smashing Magazine&lt;/a&gt;, 2012.&lt;/small&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3176943100655981551/posts/default/4556117372408171450'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3176943100655981551/posts/default/4556117372408171450'/><link rel='alternate' type='text/html' href='http://luiscameroon.blogspot.com/2012/10/the-code-side-of-color-hex-colors.html' title='The Code Side Of Color // Hex Colors'/><author><name>Luis Cameroon</name><uri>http://www.blogger.com/profile/02443056704463245314</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author></entry><entry><id>tag:blogger.com,1999:blog-3176943100655981551.post-8138269360876368074</id><published>2012-09-25T10:07:00.001-07:00</published><updated>2012-09-25T10:07:40.841-07:00</updated><title type='text'>Perfect Workflow in Sublime Text: Free Course!</title><content type='html'>&lt;a href=&quot;http://feedproxy.google.com/~r/nettuts/~3/BwhCVw5hFhE/&quot;&gt;Perfect Workflow in Sublime Text: Free Course!&lt;/a&gt;: &lt;a href=&quot;http://rss.buysellads.com/click.php?z=1260013&amp;amp;k=d754f1e9ba63a736ba8ff5ece958f7dd&amp;amp;a=27293&amp;amp;c=1621506705&quot;&gt;&lt;img alt=&quot;&quot; border=&quot;0&quot; src=&quot;http://rss.buysellads.com/img.php?z=1260013&amp;amp;k=d754f1e9ba63a736ba8ff5ece958f7dd&amp;amp;a=27293&amp;amp;c=1621506705&quot; /&gt;&lt;/a&gt;&lt;br /&gt;
I’m pleased to announce that my newest course on &lt;a href=&quot;https://tutsplus.com/course/improve-workflow-in-sublime-text-2/&quot;&gt;Tuts+ Premium&lt;/a&gt; is out…and free to everyone! I have a confession: I’m a code editor addict, and have tried them all! I was an early adopter of Coda, a TextMate advocate, even a Vim convert. But all of that changed when I discovered Sublime Text 2, the best code editor available today.&lt;br /&gt;
&lt;br /&gt;
&lt;blockquote&gt;I’ll demonstrate what I consider to be the perfect workflow.&lt;/blockquote&gt;In this &lt;a href=&quot;https://tutsplus.com/course/improve-workflow-in-sublime-text-2/&quot;&gt;free course&lt;/a&gt;, I’ll demonstrate what I consider to be the perfect workflow in Sublime Text 2. We’ll cover everything from the basic core features, such as multiple cursors and the command palette, to the most popular and useful plugins, to working with Sublime’s build system.&lt;br /&gt;
If you’re intrigued by Sublime Text, but haven’t yet dug into it, now is the perfect time. &lt;a href=&quot;https://tutsplus.com/course/improve-workflow-in-sublime-text-2/&quot;&gt;Let me convince you&lt;/a&gt;!&lt;br /&gt;
&lt;hr /&gt;&lt;h2&gt;Outline&lt;/h2&gt;Here’s the full lesson outline for the course. You certainly don’t have to watch in order; skip around to the ones that interest you most!&lt;br /&gt;
&lt;ul&gt;&lt;li&gt;&lt;a href=&quot;https://tutsplus.com/lesson/hello-2/&quot;&gt;Hello&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://tutsplus.com/lesson/installation-and-base-settings/&quot;&gt;Installation and Base Settings&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://tutsplus.com/lesson/services-and-opening-sublime-from-the-terminal/&quot;&gt;Services and Opening Sublime From the Terminal&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://tutsplus.com/lesson/multiple-cursors-and-incremental-search/&quot;&gt;Multiple Cursors and Incremental Search&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://tutsplus.com/lesson/the-command-palette/&quot;&gt;The Command Palette&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://tutsplus.com/lesson/instant-file-changing/&quot;&gt;Instant File Changing&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://tutsplus.com/lesson/symbols/&quot;&gt;Symbols&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://tutsplus.com/lesson/key-bindings/&quot;&gt;Key Bindings&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://tutsplus.com/lesson/installing-plugins-without-package-control/&quot;&gt;Installing Plugins Without Package Control&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://tutsplus.com/lesson/package-control/&quot;&gt;Package Control&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://tutsplus.com/lesson/your-first-snippet/&quot;&gt;Your First Snippet&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://tutsplus.com/lesson/adding-snippets-through-package-control/&quot;&gt;Adding Snippets Through Package Control&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://tutsplus.com/lesson/easier-testing-with-snippets/&quot;&gt;Easier Testing With Snippets&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://tutsplus.com/lesson/zen-coding-2/&quot;&gt;Zen Coding&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://tutsplus.com/lesson/emmet/&quot;&gt;Emmet&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://tutsplus.com/lesson/cross-browser-css-with-prefixr/&quot;&gt;Cross-Browser CSS With Prefixr&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://tutsplus.com/lesson/fetch-files-with-ease/&quot;&gt;Fetch Files With Ease &lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://tutsplus.com/lesson/lightning-fast-folder-and-file-creation/&quot;&gt;Lightning Fast Folder and File Creation &lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://tutsplus.com/lesson/sidebar-enhancements/&quot;&gt;Sidebar Enhancements&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://tutsplus.com/lesson/sublime-linter/&quot;&gt;Sublime Linter&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://tutsplus.com/lesson/sexy-code-snippet-management-with-gists/&quot;&gt;Sexy Code Snippet Management With Gists&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://tutsplus.com/lesson/docblockr/&quot;&gt;DocBlockr&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://tutsplus.com/lesson/pretty-task-management/&quot;&gt;Pretty Task Management&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://tutsplus.com/lesson/http-requests-within-sublime/&quot;&gt;HTTP Requests Within Sublime&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://tutsplus.com/lesson/livereload/&quot;&gt;LiveReload&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://tutsplus.com/lesson/regular-expressions-in-sublime/&quot;&gt;Regular Expressions in Sublime&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://tutsplus.com/lesson/vintage-mode/&quot;&gt;Vintage Mode&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://tutsplus.com/lesson/quicker-stylesheet-references/&quot;&gt;Quicker Stylesheet References&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://tutsplus.com/lesson/joining-lines/&quot;&gt;Joining Lines&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://tutsplus.com/lesson/sublime-and-markdown-with-marked/&quot;&gt;Sublime and Markdown with Marked&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://tutsplus.com/lesson/all-about-projects/&quot;&gt;All About Projects &lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://tutsplus.com/lesson/configuring-and-mastering-split-windows/&quot;&gt;Configuring and Mastering Split Windows&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://tutsplus.com/lesson/custom-builds/&quot;&gt;Custom Builds&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://tutsplus.com/lesson/see-ya/&quot;&gt;See Ya!&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://tutsplus.com/lesson/perfect-workflow-in-sublime-text-2-course-quiz/&quot;&gt;Course Quiz&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;hr /&gt;&lt;h2&gt;Exclusively on Tuts+ Premium&lt;/h2&gt;&lt;div&gt;&lt;a href=&quot;https://tutsplus.com/course/improve-workflow-in-sublime-text-2/&quot;&gt;&lt;img alt=&quot;Perfect Workflow in Sublime Text&quot; src=&quot;http://tutsplus.s3.amazonaws.com/tutspremium/courses_$folder$/PerfectWorkflowInSublimeText/screenshots/sublime-text-ss.jpg&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;a href=&quot;http://tutsplus.com/take-the-tour/&quot; style=&quot;float: right; margin-left: 20px;&quot;&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;/a&gt;&lt;br /&gt;
</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3176943100655981551/posts/default/8138269360876368074'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3176943100655981551/posts/default/8138269360876368074'/><link rel='alternate' type='text/html' href='http://luiscameroon.blogspot.com/2012/09/perfect-workflow-in-sublime-text-free.html' title='Perfect Workflow in Sublime Text: Free Course!'/><author><name>Luis Cameroon</name><uri>http://www.blogger.com/profile/02443056704463245314</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author></entry><entry><id>tag:blogger.com,1999:blog-3176943100655981551.post-4475688928988723211</id><published>2012-09-11T12:12:00.001-07:00</published><updated>2012-09-11T12:12:07.362-07:00</updated><title type='text'>Testing Websites in Game Console Browsers</title><content type='html'>&lt;a href=&quot;http://www.alistapart.com/articles/testing-websites-in-game-console-browsers/&quot;&gt;Testing Websites in Game Console Browsers&lt;/a&gt;: Today’s game consoles may offer subpar web experiences with little browser choice, but that doesn’t mean we can ignore them.  More than one in eight internet users in the UK, US, and France—and nearly one in four American teens—uses a game console to get online. As more console makers offer internet-capable devices—and as smart TVs continue to enter the market—now is the time to plan how our sites will adapt to these new contexts. Learn how to test your web content on phone consoles; handheld consoles like Sony PSP and Nintendo DS; and TV consoles like Nintendo Wii, Sony PS3, and Microsoft Xbox 360.</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3176943100655981551/posts/default/4475688928988723211'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3176943100655981551/posts/default/4475688928988723211'/><link rel='alternate' type='text/html' href='http://luiscameroon.blogspot.com/2012/09/testing-websites-in-game-console.html' title='Testing Websites in Game Console Browsers'/><author><name>Luis Cameroon</name><uri>http://www.blogger.com/profile/02443056704463245314</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author></entry><entry><id>tag:blogger.com,1999:blog-3176943100655981551.post-6287079020590983044</id><published>2012-09-06T13:37:00.001-07:00</published><updated>2012-09-06T13:37:17.369-07:00</updated><title type='text'>BookBlock: A Content Flip Plugin</title><content type='html'>&lt;a href=&quot;http://tympanus.net/codrops/2012/09/03/bookblock-a-content-flip-plugin/&quot;&gt;BookBlock: A Content Flip Plugin&lt;/a&gt;: &lt;br /&gt;
&lt;a href=&quot;http://tympanus.net/Development/BookBlock/&quot;&gt;&lt;img alt=&quot;BookBlock: A Content Flip Plugin&quot; height=&quot;315&quot; src=&quot;http://tympanus.net/codrops/wp-content/uploads/2012/09/bookblock.jpg&quot; title=&quot;BookBlock: A Content Flip Plugin&quot; width=&quot;580&quot; /&gt;&lt;/a&gt;&lt;br /&gt;
&lt;a href=&quot;http://tympanus.net/Development/BookBlock/&quot;&gt;View demo&lt;/a&gt; &lt;a href=&quot;http://tympanus.net/Development/BookBlock/BookBlock.zip&quot;&gt;Download source&lt;/a&gt;&lt;br /&gt;
BookBlock is a jQuery plugin that can be used for creating booklet-like components that allow a “page flip” navigation. Any content can be used, such as images or text. The plugin transforms the structure only when needed (i.e. when flipping a page) and uses some overlays as shadow for the pages to create more realism.&lt;br /&gt;
We will be using &lt;a href=&quot;http://jquerypp.com/&quot;&gt;jQuery++ by Bitovi&lt;/a&gt; which has some add-ons for jQuery (specifically, to add the swipe event).&lt;br /&gt;
The following structure will allow to add custom content in a wrapper with the class “cf-item”, which represents an open page (left and right side): &lt;br /&gt;
&lt;pre&gt;&amp;lt;div id=&quot;bb-bookblock&quot; class=&quot;bb-bookblock&quot;&amp;gt;
 &amp;lt;div class=&quot;bb-item&quot;&amp;gt;
  &amp;lt;!-- custom content --&amp;gt;
 &amp;lt;/div&amp;gt;
 &amp;lt;div class=&quot;bb-item&quot;&amp;gt;
  
 &amp;lt;/div&amp;gt;
 &amp;lt;div class=&quot;bb-item&quot;&amp;gt;
  &amp;lt;!-- ... --&amp;gt;
 &amp;lt;/div&amp;gt;
 &amp;lt;div class=&quot;bb-item&quot;&amp;gt;
  &amp;lt;!-- ... --&amp;gt;
 &amp;lt;/div&amp;gt;
 &amp;lt;!-- ... --&amp;gt;
&amp;lt;/div&amp;gt;
&lt;/pre&gt;The plugin can be called like this:&lt;br /&gt;
&lt;pre&gt;$(function() {
   
 $( &#39;#bb-bookblock&#39; ).bookblock();

});
&lt;/pre&gt;You also have to include the other scripts that are needed (see one of the demo files).&lt;br /&gt;
&lt;div&gt;&lt;div&gt;&lt;img src=&quot;http://tympanus.net/codrops/wp-content/themes/codropstheme02/images/advertisement.jpg&quot; /&gt;&lt;br /&gt;
&lt;div&gt;&lt;/div&gt;&lt;div style=&quot;clear: both;&quot;&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;h3&gt;Options&lt;/h3&gt;The following options are available:&lt;br /&gt;
&lt;pre&gt;// speed for the flip transition in ms.
speed  : 1000,

// easing for the flip transition.
easing  : &#39;ease-in-out&#39;,

// if set to true, both the flipping page and the sides will have an overlay to simulate shadows
shadows  : true,

// opacity value for the &quot;shadow&quot; on both sides (when the flipping page is over it).
// value : 0.1 - 1
shadowSides : 0.2,

// opacity value for the &quot;shadow&quot; on the flipping page (while it is flipping).
// value : 0.1 - 1
shadowFlip : 0.1,

// perspective value
perspective : 1300,

// if we should show the first item after reaching the end.
circular : false,

// if we want to specify a selector that triggers the next() function. example: &#39;#bb-nav-next&#39;.
nextEl  : &#39;&#39;,

// if we want to specify a selector that triggers the prev() function.
prevEl  : &#39;&#39;,

// callback after the flip transition.
// page is the current item&#39;s index.
// isLimit is true if the current page is the last one (or the first one).
onEndFlip : function( page, isLimit ) { return false; },

// callback before the flip transition.
// page is the current item&#39;s index.
onBeforeFlip: function( page ) { return false; }
&lt;/pre&gt;Check out the three demos with different configurations:&lt;br /&gt;
&lt;ul&gt;&lt;li&gt;&lt;a href=&quot;http://tympanus.net/Development/BookBlock/index.html&quot;&gt;&lt;strong&gt;Demo 1:&lt;/strong&gt; Next/Previous buttons and button to jump to a specific page (here: the last page)&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://tympanus.net/Development/BookBlock/index2.html&quot;&gt;&lt;strong&gt;Demo 2:&lt;/strong&gt; Multiple instances with dots navigation&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://tympanus.net/Development/BookBlock/index3.html&quot;&gt;&lt;strong&gt;Demo 3:&lt;/strong&gt; Custom content example&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;div&gt;&lt;a href=&quot;https://github.com/codrops/BookBlock&quot;&gt;Find this project on Github&lt;/a&gt;&lt;/div&gt;&lt;a href=&quot;http://tympanus.net/Development/BookBlock/&quot;&gt;View demo&lt;/a&gt; &lt;a href=&quot;http://tympanus.net/Development/BookBlock/BookBlock.zip&quot;&gt;Download source&lt;/a&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3176943100655981551/posts/default/6287079020590983044'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3176943100655981551/posts/default/6287079020590983044'/><link rel='alternate' type='text/html' href='http://luiscameroon.blogspot.com/2012/09/bookblock-content-flip-plugin.html' title='BookBlock: A Content Flip Plugin'/><author><name>Luis Cameroon</name><uri>http://www.blogger.com/profile/02443056704463245314</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author></entry><entry><id>tag:blogger.com,1999:blog-3176943100655981551.post-4890503957744432111</id><published>2012-08-22T05:16:00.001-07:00</published><updated>2012-08-22T05:16:01.131-07:00</updated><title type='text'>Convert Your Photoshop Layers into CSS3 Styles</title><content type='html'>&lt;a href=&quot;http://css3ps.com/&quot; title=&quot;CSS3Ps&quot;&gt;CSS3Ps&lt;/a&gt; is free cloud based &lt;strong&gt;photoshop plugin that converts your layers to CSS3&lt;/strong&gt;. You can select several layers and groups of layers and convert them in one click. Stroke is converted into CSS border property. Inner Shadow, Inner Glow, Drop Shadow, Outer Glow are converted into CSS box-shadow property.&lt;br /&gt;
You can see the result styles in browser and share them with other people. It works on Windows or Mac OS X and Photoshop CS3 and later. And best of all, it’s absolutely free!&lt;br /&gt;
&lt;div style=&quot;text-align: center;&quot;&gt;&lt;a href=&quot;http://css3ps.com/&quot; title=&quot;CSS3Ps&quot;&gt;&lt;img alt=&quot;css3ps&quot; height=&quot;343&quot; src=&quot;http://maxcdn.webappers.com/img/2012/08/css3ps.png&quot; title=&quot;css3ps&quot; width=&quot;580&quot; /&gt;&lt;/a&gt;&lt;/div&gt;&lt;blockquote&gt;Requirements: Photoshop CS3+&lt;br /&gt;
&lt;br /&gt;
Demo: &lt;a href=&quot;http://css3ps.com/&quot; rel=&quot;nofollow&quot; title=&quot;demo&quot;&gt;http://css3ps.com/&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
License: License Free&lt;/blockquote&gt;&lt;br /&gt;
&lt;h3&gt;&lt;a href=&quot;http://www.webappers.com/2012/08/22/convert-your-photoshop-layers-into-css3-styles/&quot;&gt;Convert Your Photoshop Layers into CSS3 Styles&lt;/a&gt;&lt;/h3&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3176943100655981551/posts/default/4890503957744432111'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3176943100655981551/posts/default/4890503957744432111'/><link rel='alternate' type='text/html' href='http://luiscameroon.blogspot.com/2012/08/convert-your-photoshop-layers-into-css3.html' title='Convert Your Photoshop Layers into CSS3 Styles'/><author><name>Luis Cameroon</name><uri>http://www.blogger.com/profile/02443056704463245314</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author></entry><entry><id>tag:blogger.com,1999:blog-3176943100655981551.post-2742026934706996312</id><published>2012-08-17T05:24:00.001-07:00</published><updated>2012-08-17T05:25:06.378-07:00</updated><title type='text'>Working with elements before the DOM is ready</title><content type='html'>I’ve been looking into ways to modify elements before &lt;code&gt;DOMContentLoaded&lt;/code&gt; so that enhancements can be made as an element is rendered to the screen allowing users to begin interacting with a page even if it hasn’t finished loading or if rendering is being blocked by 3rd party assets such as banner ads or tracking code. The most robust way to do this is to include an inline &lt;code&gt;&amp;lt;script&amp;gt;&lt;/code&gt; directly after each element you need to enhance which calls the relevant JavaScript functions — this works, but it’s not very DRY and it’s not easy to maintain.&lt;br /&gt;
Recently, I stumbled across a hack in an &lt;a href=&quot;http://davidwalsh.name/detect-node-insertion&quot;&gt;article&lt;/a&gt; by &lt;a href=&quot;https://twitter.com/davidwalshblog&quot;&gt;David Walsh&lt;/a&gt; which uses a CSS animation and the &lt;code&gt;animationStart&lt;/code&gt; event to detect when an element has been inserted into the DOM. It works by exploiting the fact that CSS animations run as soon as an element is appended to the document. Creating a simple animation that runs for a tiny duration and applying it to any elements you to want modify will fire a &lt;code&gt;animationStart&lt;/code&gt; event for each element as it’s inserted, essentially emulating the (now defunct) DOM mutation events. What’s great about this technique is it also works during page load!&lt;br /&gt;
&lt;h2&gt;
The trick&lt;/h2&gt;
Let’s say we want to enhance all &lt;code&gt;&amp;lt;input&amp;gt;&lt;/code&gt; fields:&lt;br /&gt;
&lt;pre&gt;&lt;code&gt;&amp;lt;input type=&quot;text&quot; size=&quot;50&quot;&amp;gt;&lt;/code&gt;&lt;/pre&gt;
We’ll need to set up a CSS animation and apply it to every &lt;code&gt;&amp;lt;input&amp;gt;&lt;/code&gt; field with CSS: &lt;br /&gt;
&lt;pre&gt;&lt;code&gt;/* prefixes omitted for brevity */
input {
    animation-name: nodeReady;
    animation-duration: 0.001s;
}

@keyframes nodeReady {
    from { clip: rect(1px, auto, auto, auto); }
    to { clip: rect(0px, auto, auto, auto); }
}&lt;/code&gt;&lt;/pre&gt;
Finally, we need to make our “enhancements” with JavaScript:&lt;br /&gt;
&lt;pre&gt;&lt;code&gt;/* prefixed variants omitted for brevity */
document.addEventListener(&quot;animationstart&quot;, function(e) {
    if (e.animationName == &quot;nodeReady&quot;) {
        e.target.value = new Date();
    }
}, false);&lt;/code&gt;&lt;/pre&gt;
That’s it, if the browser supports CSS animations all &lt;code&gt;&amp;lt;input&amp;gt;&lt;/code&gt; elements will be modified as the page loads.&lt;br /&gt;
&lt;h2&gt;
Fallbacks&lt;/h2&gt;
If the browser doesn’t support CSS animations we need a fallback to ensure theses elements are still modified. Handling this case is actually really simple, just use &lt;code&gt;DOMContentLoaded&lt;/code&gt; or the window &lt;code&gt;load&lt;/code&gt; event to fire the code you would have run in the &lt;code&gt;animationStart&lt;/code&gt; event. In this situation things will behave the way they always have.&lt;br /&gt;
&lt;h2&gt;
A demo&lt;/h2&gt;
Here’s a simple &lt;a href=&quot;http://www.jamesallardice.com/modifying-dom-before-ready/&quot;&gt;demo of this techinque in action&lt;/a&gt;. I’ve used PHP buffering to simulate a slow connection. &lt;br /&gt;
&lt;h2&gt;
Credit&lt;/h2&gt;
Credit must go to David Walsh for his &lt;a href=&quot;http://davidwalsh.name/detect-node-insertion&quot;&gt;article&lt;/a&gt; and to Daniel Buchner for the &lt;a href=&quot;http://www.backalleycoder.com/2012/04/25/i-want-a-damnodeinserted/&quot;&gt;original discovery&lt;/a&gt;. Also, &lt;a href=&quot;https://twitter.com/james_allardice&quot;&gt;James Allardice&lt;/a&gt; is working on wrapping this up into something easily deployable.&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;POST:&lt;/b&gt;&amp;nbsp;&lt;a href=&quot;http://blog.keithclark.co.uk/working-with-elements-before-the-dom-is-ready/&quot;&gt;Working with elements before the DOM is ready&lt;/a&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3176943100655981551/posts/default/2742026934706996312'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3176943100655981551/posts/default/2742026934706996312'/><link rel='alternate' type='text/html' href='http://luiscameroon.blogspot.com/2012/08/working-with-elements-before-dom-is.html' title='Working with elements before the DOM is ready'/><author><name>Luis Cameroon</name><uri>http://www.blogger.com/profile/02443056704463245314</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author></entry><entry><id>tag:blogger.com,1999:blog-3176943100655981551.post-1528775737641494660</id><published>2012-08-10T10:25:00.001-07:00</published><updated>2012-08-10T10:26:33.583-07:00</updated><title type='text'>Circle Hover Effects with CSS Transitions</title><content type='html'>&lt;a href=&quot;http://tympanus.net/Tutorials/CircleHoverEffects/&quot;&gt;&lt;img alt=&quot;Circle Hover Effects with CSS Transitions&quot; height=&quot;315&quot; src=&quot;http://tympanus.net/codrops/wp-content/uploads/2012/08/CircleHoverEffects.jpg&quot; title=&quot;Circle Hover Effects with CSS Transitions&quot; width=&quot;580&quot; /&gt;&lt;/a&gt;&lt;br /&gt;
&lt;a href=&quot;http://tympanus.net/Tutorials/CircleHoverEffects/&quot;&gt;&lt;br /&gt;
&lt;/a&gt;&lt;br /&gt;
&lt;a href=&quot;http://tympanus.net/Tutorials/CircleHoverEffects/&quot;&gt;View demo&lt;/a&gt; &lt;a href=&quot;http://tympanus.net/Tutorials/CircleHoverEffects/CircleHoverEffects.zip&quot;&gt;Download source&lt;/a&gt;&lt;br /&gt;
In today’s tutorial we’ll experiment with hover effects on circles. Since we have the border radius property, we can create circular shapes and they have been appearing more often as design elements in websites. One use that I especially enjoy seeing is the circular thumbnail which just looks so much more interesting than the usual rectangular. And because the circle is such a special shape, we are going to create some special hover effects for it!&lt;br /&gt;
&lt;div&gt;
&lt;strong&gt;Please note: the result of this tutorial will only work as intended in browsers that support the respective CSS properties.&lt;/strong&gt;&lt;/div&gt;
We will omit vendor prefixes in this tutorial. But you’ll of course find them in the files.&lt;br /&gt;
So, let’s get started!&lt;br /&gt;
&lt;h3&gt;
The HTML&lt;/h3&gt;
For most of the examples, we’ll be using the following structure:&lt;br /&gt;
&lt;pre&gt;&amp;lt;ul class=&quot;ch-grid&quot;&amp;gt;
 &amp;lt;li&amp;gt;
  &amp;lt;div class=&quot;ch-item ch-img-1&quot;&amp;gt;
   &amp;lt;div class=&quot;ch-info&quot;&amp;gt;
    &amp;lt;h3&amp;gt;Use what you have&amp;lt;/h3&amp;gt;
    &amp;lt;p&amp;gt;by Angela Duncan &amp;lt;a href=&quot;http://drbl.in/eOPF&quot;&amp;gt;View on Dribbble&amp;lt;/a&amp;gt;&amp;lt;/p&amp;gt;
   &amp;lt;/div&amp;gt;
  &amp;lt;/div&amp;gt;
 &amp;lt;/li&amp;gt;
 &amp;lt;li&amp;gt;
  &amp;lt;div class=&quot;ch-item ch-img-2&quot;&amp;gt;
   &amp;lt;div class=&quot;ch-info&quot;&amp;gt;
    &amp;lt;h3&amp;gt;Common Causes of Stains&amp;lt;/h3&amp;gt;
    &amp;lt;p&amp;gt;by Antonio F. Mondragon &amp;lt;a href=&quot;http://drbl.in/eKMi&quot;&amp;gt;View on Dribbble&amp;lt;/a&amp;gt;&amp;lt;/p&amp;gt;
   &amp;lt;/div&amp;gt;
  &amp;lt;/div&amp;gt;
 &amp;lt;/li&amp;gt;
 &amp;lt;li&amp;gt;
  &amp;lt;div class=&quot;ch-item ch-img-3&quot;&amp;gt;
   &amp;lt;div class=&quot;ch-info&quot;&amp;gt;
    &amp;lt;h3&amp;gt;Pink Lightning&amp;lt;/h3&amp;gt;
    &amp;lt;p&amp;gt;by Charlie Wagers &amp;lt;a href=&quot;http://drbl.in/ekhp&quot;&amp;gt;View on Dribbble&amp;lt;/a&amp;gt;&amp;lt;/p&amp;gt;
   &amp;lt;/div&amp;gt;
  &amp;lt;/div&amp;gt;
 &amp;lt;/li&amp;gt;
&amp;lt;/ul
&lt;/pre&gt;
Although we could use images here, we’ll give ourselves a bit more freedom by using background images instead. We’ll define them in the classes starting with “ch-img-”. Additionally, we’ll have a division for the description of the item with a title. &lt;br /&gt;
Now, let’s make some hover effects!&lt;br /&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;/div&gt;
&lt;div style=&quot;clear: both;&quot;&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;h3&gt;
The CSS&lt;/h3&gt;
Let’s define some common style for the list and the list items:&lt;br /&gt;
&lt;pre&gt;.ch-grid {
 margin: 20px 0 0 0;
 padding: 0;
 list-style: none;
 display: block;
 text-align: center;
 width: 100%;
}

.ch-grid:after,
.ch-item:before {
 content: &#39;&#39;;
    display: table;
}

.ch-grid:after {
 clear: both;
}

.ch-grid li {
 width: 220px;
 height: 220px;
 display: inline-block;
 margin: 20px;
}
&lt;/pre&gt;
We can center the list items by using display inline-block and setting the text-align property of its parent to center.&lt;br /&gt;
&lt;br /&gt;
The clearfix hack is by Nicolas Gallagher: http://nicolasgallagher.com/micro-clearfix-hack/&lt;br /&gt;
Some of the examples will have a different structure but we’ll look into that for each example in more detail.&lt;br /&gt;
&lt;h3&gt;
Example 1&lt;/h3&gt;
&lt;a href=&quot;http://tympanus.net/Tutorials/CircleHoverEffects/index.html&quot;&gt;&lt;img alt=&quot;CircleHoverEffects_01&quot; height=&quot;207&quot; src=&quot;http://tympanus.net/codrops/wp-content/uploads/2012/08/CircleHoverEffects_01.jpg&quot; title=&quot;&quot; width=&quot;580&quot; /&gt;&lt;/a&gt;&lt;br /&gt;
The first example is going to reveal the description by scaling it up and we will also animate the inset box shadow of the item itself. So let’s position the item and set a nice, bif inset box shadow and a transition:&lt;br /&gt;
&lt;pre&gt;.ch-item {
 width: 100%;
 height: 100%;
 border-radius: 50%;
 overflow: hidden;
 position: relative;
 cursor: default;
 box-shadow: 
  inset 0 0 0 16px rgba(255,255,255,0.6),
  0 1px 2px rgba(0,0,0,0.1);
 transition: all 0.4s ease-in-out;
}
&lt;/pre&gt;
As you notices before, we’ve given two classes to the item (not the list item but its child division): one is ct-item and the other one will be used to define a specific background image:&lt;br /&gt;
&lt;pre&gt;.ch-img-1 { 
 background-image: url(../images/1.jpg);
}

.ch-img-2 { 
 background-image: url(../images/2.jpg);
}

.ch-img-3 { 
 background-image: url(../images/3.jpg);
}
&lt;/pre&gt;
The description element will be positioned absolutely and we’ll give it a semi-transparent background by setting an RGBA value. It’s opacity is going to be 0 and we’ll scale it down to 0, too:&lt;br /&gt;
&lt;pre&gt;.ch-info {
 position: absolute;
 background: rgba(63,147,147, 0.8);
 width: inherit;
 height: inherit;
 border-radius: 50%;
 overflow: hidden;
 opacity: 0;
 transition: all 0.4s ease-in-out;
 transform: scale(0);
}
&lt;/pre&gt;
The title of the item will have some fitting paddings and margins and a smooth text shadow:&lt;br /&gt;
&lt;pre&gt;.ch-info h3 {
 color: #fff;
 text-transform: uppercase;
 letter-spacing: 2px;
 font-size: 22px;
 margin: 0 30px;
 padding: 45px 0 0 0;
 height: 140px;
 font-family: &#39;Open Sans&#39;, Arial, sans-serif;
 text-shadow: 
  0 0 1px #fff, 
  0 1px 2px rgba(0,0,0,0.3);
}
&lt;/pre&gt;
The paragraph element has 0 opacity and a transition (we want to fade it in on hover but with a delay):&lt;br /&gt;
&lt;pre&gt;.ch-info p {
 color: #fff;
 padding: 10px 5px;
 font-style: italic;
 margin: 0 30px;
 font-size: 12px;
 border-top: 1px solid rgba(255,255,255,0.5);
 opacity: 0;
 transition: all 1s ease-in-out 0.4s;
}
&lt;/pre&gt;
The link will be in uppercase letters and we’ll make the hover color yellow:&lt;br /&gt;
&lt;pre&gt;.ch-info p a {
 display: block;
 color: rgba(255,255,255,0.7);
 font-style: normal;
 font-weight: 700;
 text-transform: uppercase;
 font-size: 9px;
 letter-spacing: 1px;
 padding-top: 4px;
 font-family: &#39;Open Sans&#39;, Arial, sans-serif;
}

.ch-info p a:hover {
 color: rgba(255,242,34, 0.8);
}

&lt;/pre&gt;
And now, the interesting hover action!&lt;br /&gt;
&lt;br /&gt;
The item will animate its box shadow’s spread radius from 16px to 1px:&lt;br /&gt;
&lt;pre&gt;.ch-item:hover {
 box-shadow: 
  inset 0 0 0 1px rgba(255,255,255,0.1),
  0 1px 2px rgba(0,0,0,0.1);
}
&lt;/pre&gt;
The description will fade in and scale up to 1:&lt;br /&gt;
&lt;pre&gt;.ch-item:hover .ch-info {
 transform: scale(1);
 opacity: 1;
}
&lt;/pre&gt;
And the paragraph of the description will just fade in (with a delay):&lt;br /&gt;
&lt;pre&gt;.ch-item:hover .ch-info p {
 opacity: 1;
}
&lt;/pre&gt;
And that’s the first example! Let’s take a look at the next one.&lt;br /&gt;
&lt;h3&gt;
Example 2&lt;/h3&gt;
&lt;a href=&quot;http://tympanus.net/Tutorials/CircleHoverEffects/index2.html&quot;&gt;&lt;img alt=&quot;CircleHoverEffects_02&quot; height=&quot;207&quot; src=&quot;http://tympanus.net/codrops/wp-content/uploads/2012/08/CircleHoverEffects_02.jpg&quot; title=&quot;&quot; width=&quot;580&quot; /&gt;&lt;/a&gt;&lt;br /&gt;
&lt;em&gt;The HTML structure in this example is the same as the first one.&lt;/em&gt;&lt;br /&gt;
In this example we will use the box shadow of the item to fill our circle and serve as the background of the description.&lt;br /&gt;
&lt;br /&gt;
So, nothing special here, just the box shadow that has one more value line:&lt;br /&gt;
&lt;pre&gt;.ch-item {
 width: 100%;
 height: 100%;
 border-radius: 50%;
 position: relative;
 cursor: default;
 box-shadow: 
  inset 0 0 0 0 rgba(200,95,66, 0.4),
  inset 0 0 0 16px rgba(255,255,255,0.6),
  0 1px 2px rgba(0,0,0,0.1);
 transition: all 0.4s ease-in-out;
}
&lt;/pre&gt;
And the background-images:&lt;br /&gt;
&lt;pre&gt;.ch-img-1 { 
 background-image: url(../images/4.jpg);
}

.ch-img-2 { 
 background-image: url(../images/5.jpg);
}

.ch-img-3 { 
 background-image: url(../images/6.jpg);
}
&lt;/pre&gt;
The description will be scaled down again:&lt;br /&gt;
&lt;pre&gt;.ch-info {
 position: absolute;
 width: 100%;
 height: 100%;
 border-radius: 50%;
 overflow: hidden;
 opacity: 0;
 transition: all 0.4s ease-in-out;
 transform: scale(0);
 backface-visibility: hidden;
}
&lt;/pre&gt;
And let’s style the typographical elements:&lt;br /&gt;
&lt;pre&gt;.ch-info h3 {
 color: #fff;
 text-transform: uppercase;
 position: relative;
 letter-spacing: 2px;
 font-size: 22px;
 margin: 0 30px;
 padding: 65px 0 0 0;
 height: 110px;
 font-family: &#39;Open Sans&#39;, Arial, sans-serif;
 text-shadow: 
  0 0 1px #fff, 
  0 1px 2px rgba(0,0,0,0.3);
}

.ch-info p {
 color: #fff;
 padding: 10px 5px;
 font-style: italic;
 margin: 0 30px;
 font-size: 12px;
 border-top: 1px solid rgba(255,255,255,0.5);
}

.ch-info p a {
 display: block;
 color: rgba(255,255,255,0.7);
 font-style: normal;
 font-weight: 700;
 text-transform: uppercase;
 font-size: 9px;
 letter-spacing: 1px;
 padding-top: 4px;
 font-family: &#39;Open Sans&#39;, Arial, sans-serif;
}

.ch-info p a:hover {
 color: rgba(255,242,34, 0.8);
}
&lt;/pre&gt;
On hover we’ll animate the inset box shadow (the reddish one) to 110px spread radius. This will cover all the circle:&lt;br /&gt;
&lt;pre&gt;.ch-item:hover {
 box-shadow: 
  inset 0 0 0 110px rgba(200,95,66, 0.4),
  inset 0 0 0 16px rgba(255,255,255,0.8),
  0 1px 2px rgba(0,0,0,0.1);
}
&lt;/pre&gt;
And we’ll scale up the description and fade it in:&lt;br /&gt;
&lt;pre&gt;.ch-item:hover .ch-info {
 opacity: 1;
 transform: scale(1); 
}
&lt;/pre&gt;
&lt;h3&gt;
Example 3&lt;/h3&gt;
&lt;a href=&quot;http://tympanus.net/Tutorials/CircleHoverEffects/index3.html&quot;&gt;&lt;img alt=&quot;CircleHoverEffects_03&quot; height=&quot;233&quot; src=&quot;http://tympanus.net/codrops/wp-content/uploads/2012/08/CircleHoverEffects_03.jpg&quot; title=&quot;&quot; width=&quot;580&quot; /&gt;&lt;/a&gt;&lt;br /&gt;
In this example, we’ll play with rotation. The structure will be a bit different from the first two examples since we need to add the thumbnail as a second divison. So the list item will look as follows:&lt;br /&gt;
&lt;pre&gt;&amp;lt;li&amp;gt;
 &amp;lt;div class=&quot;ch-item&quot;&amp;gt; 
  &amp;lt;div class=&quot;ch-info&quot;&amp;gt;
   &amp;lt;h3&amp;gt;Music poster&amp;lt;/h3&amp;gt;
   &amp;lt;p&amp;gt;by Jonathan Quintin &amp;lt;a href=&quot;http://drbl.in/eGjw&quot;&amp;gt;View on Dribbble&amp;lt;/a&amp;gt;&amp;lt;/p&amp;gt;
  &amp;lt;/div&amp;gt;
  &amp;lt;div class=&quot;ch-thumb ch-img-1&quot;&amp;gt;&amp;lt;/div&amp;gt;
 &amp;lt;/div&amp;gt;
&amp;lt;/li&amp;gt;
&lt;/pre&gt;
The item division will be styled like before (with a subtle box shadow):&lt;br /&gt;
&lt;pre&gt;.ch-item {
 width: 100%;
 height: 100%;
 border-radius: 50%;
 position: relative;
 cursor: default;
 box-shadow: 0 1px 3px rgba(0,0,0,0.2);
}
&lt;/pre&gt;
The thumbnail element will have a specific transform-origin (somewhere to the right middle) and a transition. This will be the element that we want to rotate down on hover so that it reveals the description element:&lt;br /&gt;
&lt;pre&gt;.ch-thumb {
 width: 100%;
 height: 100%;
 border-radius: 50%;
 overflow: hidden;
 position: absolute;
 box-shadow: inset 0 0 0 15px rgba(255,255,255, 0.5);
 transform-origin: 95% 40%;
 transition: all 0.3s ease-in-out;
}
&lt;/pre&gt;
Using the pseudo-class :after we’ll create a little brass fastener with a radial gradient:&lt;br /&gt;
&lt;pre&gt;.ch-thumb:after {
 content: &#39;&#39;;
 width: 8px;
 height: 8px;
 position: absolute;
 border-radius: 50%;
 top: 40%;
 left: 95%;
 margin: -4px 0 0 -4px;
 background: radial-gradient(ellipse at center, rgba(14,14,14,1) 0%,rgba(125,126,125,1) 100%);
 box-shadow: 0 0 1px rgba(255,255,255,0.9);
}
&lt;/pre&gt;
Let’s define the background images for each thumb element:&lt;br /&gt;
&lt;pre&gt;.ch-img-1 { 
 background-image: url(../images/7.jpg);
 z-index: 12;
}

.ch-img-2 { 
 background-image: url(../images/8.jpg);
 z-index: 11;
}

.ch-img-3 { 
 background-image: url(../images/9.jpg);
 z-index: 10;
}
&lt;/pre&gt;
The desciption element will be styled as follows:&lt;br /&gt;
&lt;pre&gt;.ch-info {
 position: absolute;
 width: inherit;
 height: inherit;
 border-radius: 50%;
 overflow: hidden;
 background: #c9512e url(../images/noise.png);
 box-shadow: inset 0 0 0 5px rgba(0,0,0,0.05);
}
&lt;/pre&gt;
The typographical elements will be positioned and styled the following way:&lt;br /&gt;
&lt;pre&gt;.ch-info h3 {
 color: #fff;
 text-transform: uppercase;
 position: relative;
 letter-spacing: 2px;
 font-size: 18px;
 margin: 0 60px;
 padding: 22px 0 0 0;
 height: 85px;
 font-family: &#39;Open Sans&#39;, Arial, sans-serif;
 text-shadow: 
  0 0 1px #fff, 
  0 1px 2px rgba(0,0,0,0.3);
}

.ch-info p {
 color: #fff;
 padding: 10px 5px;
 font-style: italic;
 margin: 0 30px;
 font-size: 12px;
 border-top: 1px solid rgba(255,255,255,0.5);
}
&lt;/pre&gt;
The anchor will be a little circle that should move in from the right on hover:&lt;br /&gt;
&lt;pre&gt;.ch-info p a {
 display: block;
 color: #333;
 width: 80px;
 height: 80px;
 background: rgba(255,255,255,0.3);
 border-radius: 50%;
 color: #fff;
 font-style: normal;
 font-weight: 700;
 text-transform: uppercase;
 font-size: 9px;
 letter-spacing: 1px;
 padding-top: 24px;
 margin: 7px auto 0;
 font-family: &#39;Open Sans&#39;, Arial, sans-serif;
 opacity: 0;
 transition: 
  transform 0.3s ease-in-out 0.2s,
  opacity 0.3s ease-in-out 0.2s,
  background 0.2s linear 0s;
 transform: translateX(60px) rotate(90deg);
}

.ch-info p a:hover {
 background: rgba(255,255,255,0.5);
}
&lt;/pre&gt;
Since we want the movement and opacity to happen with a delay, but the background hover transition without, we’ll separate the transitions.&lt;br /&gt;
On hover we’ll rotate the thumb and move/rotate the link element:&lt;br /&gt;
&lt;pre&gt;.ch-item:hover .ch-thumb {
 box-shadow: inset 0 0 0 15px rgba(255,255,255, 0.5), 0 1px 3px rgba(0,0,0,0.2);
 transform: rotate(-110deg);
}
.ch-item:hover .ch-info p a{
 opacity: 1;
 transform: translateX(0px) rotate(0deg);
}
&lt;/pre&gt;
&lt;h3&gt;
Example 4&lt;/h3&gt;
&lt;a href=&quot;http://tympanus.net/Tutorials/CircleHoverEffects/index4.html&quot;&gt;&lt;img alt=&quot;CircleHoverEffects_04&quot; height=&quot;206&quot; src=&quot;http://tympanus.net/codrops/wp-content/uploads/2012/08/CircleHoverEffects_04.jpg&quot; title=&quot;&quot; width=&quot;580&quot; /&gt;&lt;/a&gt;&lt;br /&gt;
The forth example will involve some 3D rotations. So, we need to adjust the structured in order to have a container for the perspective and a front and backface. So, the list items will look as follows:&lt;br /&gt;
&lt;pre&gt;&amp;lt;li&amp;gt;
 &amp;lt;div class=&quot;ch-item ch-img-1&quot;&amp;gt;    
  &amp;lt;div class=&quot;ch-info-wrap&quot;&amp;gt;
   &amp;lt;div class=&quot;ch-info&quot;&amp;gt;
    &amp;lt;div class=&quot;ch-info-front ch-img-1&quot;&amp;gt;&amp;lt;/div&amp;gt;
    &amp;lt;div class=&quot;ch-info-back&quot;&amp;gt;
     &amp;lt;h3&amp;gt;Bears Type&amp;lt;/h3&amp;gt;
     &amp;lt;p&amp;gt;by Josh Schott &amp;lt;a href=&quot;http://drbl.in/ewUW&quot;&amp;gt;View on Dribbble&amp;lt;/a&amp;gt;&amp;lt;/p&amp;gt;
    &amp;lt;/div&amp;gt; 
   &amp;lt;/div&amp;gt;
  &amp;lt;/div&amp;gt;
 &amp;lt;/div&amp;gt;
&amp;lt;/li&amp;gt;
&lt;/pre&gt;
As you can see, we’ll add the background image to the item division and also to the front part of the flipping division.&lt;br /&gt;
&lt;br /&gt;
The trick is to give the same background to the ch-info-wrap like the body. This will give the illusion as if our item has a hole.&lt;br /&gt;
The item will have the usual styling:&lt;br /&gt;
&lt;pre&gt;.ch-item {
 width: 100%;
 height: 100%;
 border-radius: 50%;
 position: relative;
 box-shadow: 0 1px 2px rgba(0,0,0,0.1);
 cursor: default;
}
&lt;/pre&gt;
The extra wrapper will be used for the perspective and we’ll also add a transition for the box shadow:&lt;br /&gt;
&lt;pre&gt;.ch-info-wrap{
 position: absolute;
 width: 180px;
 height: 180px;
 border-radius: 50%;
 perspective: 800px;
 transition: all 0.4s ease-in-out;
 top: 20px;
 left: 20px;
 background: #f9f9f9 url(../images/bg.jpg);
 box-shadow: 
  0 0 0 20px rgba(255,255,255,0.2), 
  inset 0 0 3px rgba(115,114, 23, 0.8);

}
&lt;/pre&gt;
The ch-info div will need preserve-3d for the transform-style and we’ll give it a transition since this is the element we’ll rotate in 3d:&lt;br /&gt;
&lt;pre&gt;.ch-info{
 position: absolute;
 width: 180px;
 height: 180px;
 border-radius: 50%;
 transition: all 0.4s ease-in-out;
 transform-style: preserve-3d;
}
&lt;/pre&gt;
The front and the backface will have the following common styles:&lt;br /&gt;
&lt;pre&gt;.ch-info &amp;gt; div {
 display: block;
 position: absolute;
 width: 100%;
 height: 100%;
 border-radius: 50%;
 background-position: center center;
 backface-visibility: hidden;
}
&lt;/pre&gt;
The backface will be rotated so that we won’t see it initially:&lt;br /&gt;
&lt;pre&gt;.ch-info .ch-info-back {
 transform: rotate3d(0,1,0,180deg);
 background: #000;
}
&lt;/pre&gt;
And again, the background images:&lt;br /&gt;
&lt;pre&gt;.ch-img-1 { 
 background-image: url(../images/10.jpg);
}

.ch-img-2 { 
 background-image: url(../images/11.jpg);
}

.ch-img-3 { 
 background-image: url(../images/12.jpg);
}
&lt;/pre&gt;
…and the typographical elements:&lt;br /&gt;
&lt;pre&gt;.ch-info h3 {
 color: #fff;
 text-transform: uppercase;
 letter-spacing: 2px;
 font-size: 14px;
 margin: 0 15px;
 padding: 40px 0 0 0;
 height: 90px;
 font-family: &#39;Open Sans&#39;, Arial, sans-serif;
 text-shadow: 
  0 0 1px #fff, 
  0 1px 2px rgba(0,0,0,0.3);
}

.ch-info p {
 color: #fff;
 padding: 10px 5px;
 font-style: italic;
 margin: 0 30px;
 font-size: 12px;
 border-top: 1px solid rgba(255,255,255,0.5);
}

.ch-info p a {
 display: block;
 color: rgba(255,255,255,0.7);
 font-style: normal;
 font-weight: 700;
 text-transform: uppercase;
 font-size: 9px;
 letter-spacing: 1px;
 padding-top: 4px;
 font-family: &#39;Open Sans&#39;, Arial, sans-serif;
}

.ch-info p a:hover {
 color: rgba(255,242,34, 0.8);
}
&lt;/pre&gt;
On hover, we’ll change the box shadow of the wrapper and rotate the parent of the back and frontface so that we see the back:&lt;br /&gt;
&lt;pre&gt;.ch-item:hover .ch-info-wrap {
 box-shadow: 
  0 0 0 0 rgba(255,255,255,0.8), 
  inset 0 0 3px rgba(115,114, 23, 0.8);
}

.ch-item:hover .ch-info {
 transform: rotate3d(0,1,0,-180deg);
}
&lt;/pre&gt;
&lt;h3&gt;
Example 5&lt;/h3&gt;
&lt;a href=&quot;http://tympanus.net/Tutorials/CircleHoverEffects/index5.html&quot;&gt;&lt;img alt=&quot;CircleHoverEffects_05&quot; height=&quot;205&quot; src=&quot;http://tympanus.net/codrops/wp-content/uploads/2012/08/CircleHoverEffects_05.jpg&quot; title=&quot;&quot; width=&quot;580&quot; /&gt;&lt;/a&gt;&lt;br /&gt;
In this example we want to scale down the inner thumbnail part to 0 and make the description element appear by fading it in and scaling it down to 1.&lt;br /&gt;
&lt;br /&gt;
&lt;em&gt;The structure of the fifth example will be the same as in the previous example.&lt;/em&gt;&lt;br /&gt;
The item has the usual style:&lt;br /&gt;
&lt;pre&gt;.ch-item {
 width: 100%;
 height: 100%;
 border-radius: 50%;
 position: relative;
 box-shadow: 0 1px 2px rgba(0,0,0,0.1);
 cursor: default;
}
&lt;/pre&gt;
The wrapper of the description div and the info div itself will have the following common style:&lt;br /&gt;
&lt;pre&gt;.ch-info-wrap, 
.ch-info{
 position: absolute;
 width: 180px;
 height: 180px;
 border-radius: 50%;
}
&lt;/pre&gt;
Let’s do again the “hole” trick by setting the same background of the body to the wrapper:&lt;br /&gt;
&lt;pre&gt;.ch-info-wrap {
 top: 20px;
 left: 20px;
 background: #f9f9f9 url(../images/bg.jpg);
 box-shadow: 
  0 0 0 20px rgba(255,255,255,0.2), 
  inset 0 0 3px rgba(115,114, 23, 0.8);

}
&lt;/pre&gt;
The “front” and the “back” (it’s not really a front and backface anymore) common style:&lt;br /&gt;
&lt;pre&gt;.ch-info &amp;gt; div {
 display: block;
 position: absolute;
 width: 100%;
 height: 100%;
 border-radius: 50%;
 background-position: center center;
}
&lt;/pre&gt;
The “front” will have a transition (it will scale down and disappear):&lt;br /&gt;
&lt;pre&gt;.ch-info .ch-info-front {
 transition: all 0.6s ease-in-out;
}
&lt;/pre&gt;
And the back that holds the description will have 0 opacity initially and be scaled up to 1.5:&lt;br /&gt;
&lt;pre&gt;.ch-info .ch-info-back {
 opacity: 0;
 background: #223e87;
 pointer-events: none;
 transform: scale(1.5);
 transition: all 0.4s ease-in-out 0.2s;
}
&lt;/pre&gt;
We need to set the pointer-events to none since we don’t want the element to “block” everything else…remeber, it’s scaled up, we just can’t see it because of it’s opacity, but it’s still there.&lt;br /&gt;
Background images and typographical elements as usual, just with some different colors:&lt;br /&gt;
&lt;pre&gt;.ch-img-1 { 
 background-image: url(../images/13.jpg);
}

.ch-img-2 { 
 background-image: url(../images/14.jpg);
}

.ch-img-3 { 
 background-image: url(../images/15.jpg);
}

.ch-info h3 {
 color: #fff;
 text-transform: uppercase;
 letter-spacing: 2px;
 font-size: 18px;
 margin: 0 15px;
 padding: 40px 0 0 0;
 height: 80px;
 font-family: &#39;Open Sans&#39;, Arial, sans-serif;
 text-shadow: 
  0 0 1px #fff, 
  0 1px 2px rgba(0,0,0,0.3);
}

.ch-info p {
 color: #fff;
 padding: 10px 5px 0;
 font-style: italic;
 margin: 0 30px;
 font-size: 12px;
 border-top: 1px solid rgba(255,255,255,0.5);
}

.ch-info p a {
 display: block;
 color: #e7615e;
 font-style: normal;
 font-weight: 700;
 text-transform: uppercase;
 font-size: 9px;
 letter-spacing: 1px;
 padding-top: 4px;
 font-family: &#39;Open Sans&#39;, Arial, sans-serif;
}

.ch-info p a:hover {
 color: #fff;
}

&lt;/pre&gt;
On hover we’ll scale down the inner thumbnail part to 0 and set the opacity to 0. This will make it disappear into the back.&lt;br /&gt;
&lt;pre&gt;.ch-item:hover .ch-info-front {
 transform: scale(0);
 opacity: 0;
} 
&lt;/pre&gt;
The part that contains the description will be scaled down to 1 and faded in. We’ll also set the pointer event to whatever they were before because now we want to be able to click on the link:&lt;br /&gt;
&lt;pre&gt;.ch-item:hover .ch-info-back {
 transform: scale(1);
 opacity: 1;
 pointer-events: auto;
}
&lt;/pre&gt;
&lt;h3&gt;
Example 6&lt;/h3&gt;
&lt;a href=&quot;http://tympanus.net/Tutorials/CircleHoverEffects/index6.html&quot;&gt;&lt;img alt=&quot;CircleHoverEffects_06&quot; height=&quot;310&quot; src=&quot;http://tympanus.net/codrops/wp-content/uploads/2012/08/CircleHoverEffects_06.jpg&quot; title=&quot;&quot; width=&quot;580&quot; /&gt;&lt;/a&gt;&lt;br /&gt;
In this example we want to flip the inner thumbnail part down in order to reveal the description. &lt;em&gt;The HTML will be the same like in the previous two examples.&lt;/em&gt;&lt;br /&gt;
The item will be styled as before:&lt;br /&gt;
&lt;pre&gt;.ch-item {
 width: 100%;
 height: 100%;
 border-radius: 50%;
 position: relative;
 box-shadow: 0 1px 2px rgba(0,0,0,0.1);
 cursor: default;
}
&lt;/pre&gt;
The common style of the wrapper and the description element:&lt;br /&gt;
&lt;pre&gt;.ch-info-wrap, 
.ch-info{
 position: absolute;
 width: 180px;
 height: 180px;
 border-radius: 50%;
 transition: all 0.4s ease-in-out;
}
&lt;/pre&gt;
The wrapper will have perspective:&lt;br /&gt;
&lt;pre&gt;.ch-info-wrap {
 top: 20px;
 left: 20px;
 background: #f9f9f9 url(../images/bg.jpg);
 box-shadow: 
  0 0 0 20px rgba(255,255,255,0.2), 
  inset 0 0 3px rgba(115,114, 23, 0.8);
 perspective: 800px;
}
&lt;/pre&gt;
The info element will need the following transform style:&lt;br /&gt;
&lt;pre&gt;.ch-info {
 transform-style: preserve-3d;
}
&lt;/pre&gt;
The front and the backface will have a transition. Note that this time we’ll not set the backface-visibility to hidden, since we want the back of the inner thumbnail part to show when we flip it down:&lt;br /&gt;
&lt;pre&gt;.ch-info &amp;gt; div {
 display: block;
 position: absolute;
 width: 100%;
 height: 100%;
 border-radius: 50%;
 background-position: center center;
 transition: all 0.6s ease-in-out;
}
&lt;/pre&gt;
Let’s set the correct transform-origin so that we can open it down:&lt;br /&gt;
&lt;pre&gt;.ch-info .ch-info-front {
 transform-origin: 50% 100%; 
 z-index: 100;
 box-shadow: 
  inset 2px 1px 4px rgba(0,0,0,0.1);
}
&lt;/pre&gt;
We’ll set an RGBA value with 0 opacity to the background of the description part:&lt;br /&gt;
&lt;pre&gt;.ch-info .ch-info-back {
 background: rgba(230,132,107,0);
}
&lt;/pre&gt;
And the usual style for the other elements:&lt;br /&gt;
&lt;pre&gt;.ch-img-1 { 
 background-image: url(../images/16.jpg);
}

.ch-img-2 { 
 background-image: url(../images/17.jpg);
}

.ch-img-3 { 
 background-image: url(../images/18.jpg);
}

.ch-info h3 {
 color: #fff;
 text-transform: uppercase;
 letter-spacing: 2px;
 font-size: 14px;
 margin: 0 25px;
 padding: 40px 0 0 0;
 height: 90px;
 font-family: &#39;Open Sans&#39;, Arial, sans-serif;
 text-shadow: 
  0 0 1px #fff, 
  0 1px 2px rgba(0,0,0,0.3);
}

.ch-info p {
 color: #fff;
 padding: 10px 5px;
 font-style: italic;
 margin: 0 30px;
 font-size: 12px;
 border-top: 1px solid rgba(255,255,255,0.5);
}

.ch-info p a {
 display: block;
 color: rgba(255,255,255,0.7);
 font-style: normal;
 font-weight: 700;
 text-transform: uppercase;
 font-size: 9px;
 letter-spacing: 1px;
 padding-top: 4px;
 font-family: &#39;Open Sans&#39;, Arial, sans-serif;
}

.ch-info p a:hover {
 color: rgba(255,242,34, 0.8);
}

&lt;/pre&gt;
On hover, we’ll rotate the front part and animate the box shadow slightly. The back part will fade in its background color:&lt;br /&gt;
&lt;pre&gt;.ch-item:hover .ch-info-front {
 transform: rotate3d(1,0,0,-180deg);
 box-shadow: 
  inset 0 0 5px rgba(255,255,255,0.2), 
  inset 0 0 3px rgba(0,0,0,0.3);
}

.ch-item:hover .ch-info-back {
 background: rgba(230,132,107,0.6);
}
&lt;/pre&gt;
&lt;h3&gt;
Example 7&lt;/h3&gt;
&lt;a href=&quot;http://tympanus.net/Tutorials/CircleHoverEffects/index7.html&quot;&gt;&lt;img alt=&quot;CircleHoverEffects_07&quot; height=&quot;209&quot; src=&quot;http://tympanus.net/codrops/wp-content/uploads/2012/08/CircleHoverEffects_07.jpg&quot; title=&quot;&quot; width=&quot;580&quot; /&gt;&lt;/a&gt;&lt;br /&gt;
The last example will act like a rotating cube where we reveal the description by rotating it in from the top back. Since we will rotate each of the faces, we won’t need an extra wrapper. So, our HTML will look as follows:&lt;br /&gt;
&lt;pre&gt;&amp;lt;li&amp;gt;
 &amp;lt;div class=&quot;ch-item&quot;&amp;gt;    
  &amp;lt;div class=&quot;ch-info&quot;&amp;gt;
   &amp;lt;div class=&quot;ch-info-front ch-img-1&quot;&amp;gt;&amp;lt;/div&amp;gt;
   &amp;lt;div class=&quot;ch-info-back&quot;&amp;gt;
    &amp;lt;h3&amp;gt;Mouse&amp;lt;/h3&amp;gt;
    &amp;lt;p&amp;gt;by Alexander Shumihin &amp;lt;a href=&quot;http://drbl.in/eAoj&quot;&amp;gt;View on Dribbble&amp;lt;/a&amp;gt;&amp;lt;/p&amp;gt;
   &amp;lt;/div&amp;gt; 
  &amp;lt;/div&amp;gt;
 &amp;lt;/div&amp;gt;
&amp;lt;/li&amp;gt;
&lt;/pre&gt;
We’ll give a perspective value to the item itself:&lt;br /&gt;
&lt;pre&gt;.ch-item {
 width: 100%;
 height: 100%;
 border-radius: 50%;
 position: relative;
 cursor: default;
 perspective: 900px;
}
&lt;/pre&gt;
The element with the class &lt;strong&gt;ch-info&lt;/strong&gt; will need the preserve-3d:&lt;br /&gt;
&lt;pre&gt;.ch-info{
 position: absolute;
 width: 100%;
 height: 100%;
 transform-style: preserve-3d;
}
&lt;/pre&gt;
The front and backface will have a transition and the transform origin will be set to 50% 0%:&lt;br /&gt;
&lt;pre&gt;.ch-info &amp;gt; div {
 display: block;
 position: absolute;
 width: 100%;
 height: 100%;
 border-radius: 50%;
 background-position: center center;
 transition: all 0.4s linear;
 transform-origin: 50% 0%;
}
&lt;/pre&gt;
Let’s set a nice inset box shadow to the front part:&lt;br /&gt;
&lt;pre&gt;.ch-info .ch-info-front {
 box-shadow: inset 0 0 0 16px rgba(0,0,0,0.3);
}
&lt;/pre&gt;
The backface will be rotated initially in order to appear as the down face of a cube:&lt;br /&gt;
&lt;pre&gt;.ch-info .ch-info-back {
 transform: translate3d(0,0,-220px) rotate3d(1,0,0,90deg);
 background: #000;
 opacity: 0;
}
&lt;/pre&gt;
And the usual style for the background images and text elements:&lt;br /&gt;
&lt;pre&gt;.ch-img-1 { 
 background-image: url(../images/19.jpg);
}

.ch-img-2 { 
 background-image: url(../images/20.jpg);
}

.ch-img-3 { 
 background-image: url(../images/21.jpg);
}

.ch-info h3 {
 color: #fff;
 text-transform: uppercase;
 letter-spacing: 2px;
 font-size: 24px;
 margin: 0 15px;
 padding: 60px 0 0 0;
 height: 110px;
 font-family: &#39;Open Sans&#39;, Arial, sans-serif;
 text-shadow: 
  0 0 1px #fff, 
  0 1px 2px rgba(0,0,0,0.3);
}

.ch-info p {
 color: #fff;
 padding: 10px 5px;
 font-style: italic;
 margin: 0 30px;
 font-size: 12px;
 border-top: 1px solid rgba(255,255,255,0.5);
}

.ch-info p a {
 display: block;
 color: rgba(255,255,255,0.7);
 font-style: normal;
 font-weight: 700;
 text-transform: uppercase;
 font-size: 9px;
 letter-spacing: 1px;
 padding-top: 4px;
 font-family: &#39;Open Sans&#39;, Arial, sans-serif;
}

.ch-info p a:hover {
 color: rgba(255,242,34, 0.8);
}
&lt;/pre&gt;
We’ll use translate3d to move the front part on the Y axis of our 3d space and rotate3d to actually rotate it. We’ll also fade it out because we don’t want to see any part of it afterwards:&lt;br /&gt;
&lt;pre&gt;.ch-item:hover .ch-info-front {
 transform: translate3d(0,280px,0) rotate3d(1,0,0,-90deg);
 opacity: 0;
}
&lt;/pre&gt;
The backface will be rotated “back” to 0 degrees (remember, initially it was rotated downwards):&lt;br /&gt;
&lt;pre&gt;.ch-item:hover .ch-info-back {
 transform: rotate3d(1,0,0,0deg);
 opacity: 1;
}
&lt;/pre&gt;
And that’s it! A whole bunch of hover effects that allow for many different variations, just try it out and play with it!&lt;br /&gt;
&lt;br /&gt;
&lt;strong&gt;Hope you enjoyed these effects and find them inspiring!&lt;/strong&gt;&lt;br /&gt;
&lt;a href=&quot;http://tympanus.net/Tutorials/CircleHoverEffects/&quot;&gt;View demo&lt;/a&gt; &lt;a href=&quot;http://tympanus.net/Tutorials/CircleHoverEffects/CircleHoverEffects.zip&quot;&gt;Download source&lt;/a&gt;&lt;br /&gt;
&lt;em&gt;&lt;br /&gt;
&lt;/em&gt; &lt;em&gt;Credits: Featured image illustration from &lt;a href=&quot;http://drbl.in/eQDg&quot;&gt;Arnel Baluyot’s Stay Foxy&lt;/a&gt;.&lt;/em&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3176943100655981551/posts/default/1528775737641494660'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3176943100655981551/posts/default/1528775737641494660'/><link rel='alternate' type='text/html' href='http://luiscameroon.blogspot.com/2012/08/circle-hover-effects-with-css.html' title='Circle Hover Effects with CSS Transitions'/><author><name>Luis Cameroon</name><uri>http://www.blogger.com/profile/02443056704463245314</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author></entry><entry><id>tag:blogger.com,1999:blog-3176943100655981551.post-7501241843870827560</id><published>2012-08-10T10:24:00.001-07:00</published><updated>2012-08-10T10:24:01.704-07:00</updated><title type='text'>CSS Style Guides</title><content type='html'>As we wrap up our recent poll on &lt;a href=&quot;http://css-tricks.com/poll-results-how-do-you-order-your-css-properties/&quot;&gt;ordering CSS properties&lt;/a&gt;, it brings up the larger issue of CSS style guides. Ordering properties is just one choice you have to make that makes up a complete styling strategy. Naming is a part of it. Sectioning is a part of it. Commenting, indentation, overall file structure... it all makes up a complete CSS style guide.&lt;br /&gt;
Let&#39;s round up some existing ones.&lt;br /&gt;
&lt;br /&gt;
&lt;h3&gt;But first... Not Pattern Libraries.&lt;/h3&gt;I &lt;strong&gt;love&lt;/strong&gt; pattern libraries. Think &lt;a href=&quot;http://twitter.github.com/bootstrap/&quot;&gt;Twitter Bootstrap&lt;/a&gt; or &lt;a href=&quot;http://www.bbc.co.uk/gel&quot;&gt;GEL&lt;/a&gt;. I think they are a fantastic way to work particularly in large sites and web apps. This post isn&#39;t about those. We&#39;ll do a roundup of those some time, because I think that would be valuable too. This is about style guides &lt;em&gt;for CSS itself&lt;/em&gt;.&lt;br /&gt;
&lt;h3&gt;The List&lt;/h3&gt;I&#39;ll list some excerpts from each that I like below.&lt;br /&gt;
&lt;h4&gt;GitHub&lt;/h4&gt;&lt;img alt=&quot;&quot; height=&quot;680&quot; src=&quot;http://cdn.css-tricks.com/wp-content/uploads/2012/08/github-css-styleguide.jpg&quot; title=&quot;github-css-styleguide&quot; width=&quot;856&quot; /&gt;&lt;br /&gt;
&lt;a href=&quot;https://github.com/styleguide/css&quot;&gt;GitHub CSS Style Guide →&lt;/a&gt;&lt;br /&gt;
&lt;blockquote&gt;As a rule of thumb, don&#39;t nest further than 3 levels deep. If you find yourself going further, think about reorganizing your rules (either the specificity needed, or the layout of the nesting).&lt;/blockquote&gt;&lt;blockquote&gt;Unit-less line-height is preferred because it does not inherit a percentage value of its parent element, but instead is based on a multiplier of the font-size.&lt;/blockquote&gt;&lt;h4&gt;Google&lt;/h4&gt;&lt;img alt=&quot;&quot; height=&quot;654&quot; src=&quot;http://cdn.css-tricks.com/wp-content/uploads/2012/08/google-style-guide.jpg&quot; title=&quot;google-style-guide&quot; width=&quot;800&quot; /&gt;&lt;br /&gt;
&lt;blockquote&gt;Use ID and class names that are as short as possible but as long as necessary.&lt;/blockquote&gt;E.g. &lt;code&gt;#nav&lt;/code&gt; not &lt;code&gt;#navigation&lt;/code&gt;, &lt;code&gt;.author&lt;/code&gt; not &lt;code&gt;.atr&lt;/code&gt;&lt;br /&gt;
&lt;blockquote&gt;Do not concatenate words and abbreviations in selectors by any characters (including none at all) other than hyphens, in order to improve understanding and scannability.&lt;/blockquote&gt;E.g. &lt;code&gt;.demo-image&lt;/code&gt; not &lt;code&gt;.demoimage&lt;/code&gt; or &lt;code&gt;.demo_image&lt;/code&gt;&lt;br /&gt;
&lt;h4&gt;Idiomatic CSS&lt;/h4&gt;&lt;img alt=&quot;&quot; height=&quot;680&quot; src=&quot;http://cdn.css-tricks.com/wp-content/uploads/2012/08/idiomatic-css.jpg&quot; title=&quot;idiomatic-css&quot; width=&quot;830&quot; /&gt;&lt;br /&gt;
&lt;a href=&quot;https://github.com/necolas/idiomatic-css&quot;&gt;Nicolas Gallagher&#39;s Idiomatic CSS →&lt;/a&gt;&lt;br /&gt;
&lt;blockquote&gt;Configure your editor to &quot;show invisibles&quot;. This will allow you to eliminate end of line whitespace, eliminate unintended blank line whitespace, and avoid polluting commits.&lt;/blockquote&gt;&lt;blockquote&gt;Long, comma-separated property values - such as collections of gradients or shadows - can be arranged across multiple lines in an effort to improve readability and produce more useful diffs.&lt;/blockquote&gt;&lt;blockquote&gt;Use separate files (concatenated by a build step) to help break up code for distinct components.&lt;/blockquote&gt;&lt;h4&gt;CSS Wizardry&lt;/h4&gt;&lt;img alt=&quot;&quot; height=&quot;654&quot; src=&quot;http://cdn.css-tricks.com/wp-content/uploads/2012/08/roberts-css-style.jpg&quot; title=&quot;roberts-css-style&quot; width=&quot;802&quot; /&gt;&lt;br /&gt;
&lt;a href=&quot;http://csswizardry.com/2012/04/my-html-css-coding-style/&quot;&gt;Harry Robert&#39;s CSS Style →&lt;/a&gt;&lt;br /&gt;
&lt;blockquote&gt;I have a blanket-ban on IDs in CSS. There is literally no point in them, and they only ever cause harm.&lt;/blockquote&gt;&lt;blockquote&gt;This section heading is also prepended with a $. This is so that—when I do a find for a section—I actually do a find for &lt;code&gt;$MAIN&lt;/code&gt; and not &lt;code&gt;MAIN&lt;/code&gt;.&lt;/blockquote&gt;&lt;blockquote&gt;In situations where it would be useful for a developer to know exactly how a chunk of CSS applies to some HTML, I often include a snippet of HTML in a CSS comment.&lt;/blockquote&gt;&lt;h4&gt;Smashing Magazine&lt;/h4&gt;&lt;img alt=&quot;&quot; height=&quot;640&quot; src=&quot;http://cdn.css-tricks.com/wp-content/uploads/2012/08/smashingmag-css.jpg&quot; title=&quot;smashingmag-css&quot; width=&quot;784&quot; /&gt;&lt;br /&gt;
&lt;a href=&quot;http://coding.smashingmagazine.com/2008/05/02/improving-code-readability-with-css-styleguides/&quot;&gt;Vitaly Friedman&#39;s &quot;Improving Code Readability With CSS Styleguides&quot; →&lt;/a&gt;&lt;br /&gt;
&lt;blockquote&gt;For large projects or large development team it is also useful to have a brief update log.&lt;/blockquote&gt;&lt;blockquote&gt;For better overview of your code you might consider using one-liners for brief fragments of code. &lt;/blockquote&gt;&lt;h4&gt;ThinkUp&lt;/h4&gt;&lt;img alt=&quot;&quot; height=&quot;652&quot; src=&quot;http://cdn.css-tricks.com/wp-content/uploads/2012/08/thinkup-css-guide.jpg&quot; title=&quot;thinkup-css-guide&quot; width=&quot;798&quot; /&gt;&lt;br /&gt;
&lt;a href=&quot;https://github.com/ginatrapani/ThinkUp/wiki/Code-Style-Guide:-CSS&quot;&gt;ThinkUp CSS Style Guide →&lt;/a&gt;&lt;br /&gt;
&lt;blockquote&gt;If the value of the width or height is 0, do not specify units.&lt;/blockquote&gt;&lt;blockquote&gt;Comments that refer to selector blocks should be on a separate line immediately before the block to which they refer.&lt;/blockquote&gt;&lt;h3&gt;More?&lt;/h3&gt;Does your organization maintain and use a public style guide? Post it!&lt;br /&gt;
&lt;a href=&quot;http://css-tricks.com/css-style-guides/&quot;&gt;CSS Style Guides&lt;/a&gt; is a post from &lt;a href=&quot;http://css-tricks.com/&quot;&gt;CSS-Tricks&lt;/a&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3176943100655981551/posts/default/7501241843870827560'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3176943100655981551/posts/default/7501241843870827560'/><link rel='alternate' type='text/html' href='http://luiscameroon.blogspot.com/2012/08/css-style-guides.html' title='CSS Style Guides'/><author><name>Luis Cameroon</name><uri>http://www.blogger.com/profile/02443056704463245314</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author></entry><entry><id>tag:blogger.com,1999:blog-3176943100655981551.post-348677661277196860</id><published>2012-05-02T09:26:00.001-07:00</published><updated>2012-05-02T09:26:38.537-07:00</updated><title type='text'>Coding guidelines for HTML and CSS</title><content type='html'>&lt;a href=&quot;http://feedproxy.google.com/~r/blogspot/amDG/~3/9R05sp7fkRs/coding-guidelines-for-html-and-css.html&quot;&gt;Coding guidelines for HTML and CSS&lt;/a&gt;: Webmaster level: All&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Great code has many attributes. It’s effective, efficient, maintainable, elegant. When working on code with many developers and teams and maybe even companies, great code needs to also be consistent and easy to understand. For that purpose there are style guides. We use style guides for a lot of languages, and our newest public style guide is the &lt;a href=&quot;http://google-styleguide.googlecode.com/svn/trunk/htmlcssguide.xml&quot;&gt;&lt;strong&gt;Google HTML and CSS Style Guide&lt;/strong&gt;&lt;/a&gt;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Our HTML and CSS Style Guide, just like &lt;a href=&quot;http://code.google.com/p/google-styleguide/&quot;&gt;other Google style guides&lt;/a&gt;, deals with a lot of formatting-related matters. It also hints at best practices so to encourage developers to go beyond indentation. Many style guide authors know the underlying motivation from the question whether to &lt;em&gt;describe&lt;/em&gt; the code they write—or to &lt;em&gt;prescribe&lt;/em&gt; what code they want to write. Not surprisingly then, in our HTML and CSS style guide you’ll find both (as much as you’ll still find a lot of different development styles in our not entirely small code base).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
At this time we only want to introduce you to this new style guide. We hope to share more about its design decisions and future updates with you. In the meantime please share your thoughts and experiences, and as with the other style guides, feel free to use our style guide for your own projects, as you see fit.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Written by &lt;a href=&quot;https://plus.sandbox.google.com/114697646623413794481&quot;&gt;Jens O. Meiert&lt;/a&gt;, Senior Web Architect, Google Webmaster Team</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3176943100655981551/posts/default/348677661277196860'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3176943100655981551/posts/default/348677661277196860'/><link rel='alternate' type='text/html' href='http://luiscameroon.blogspot.com/2012/05/coding-guidelines-for-html-and-css.html' title='Coding guidelines for HTML and CSS'/><author><name>Luis Cameroon</name><uri>http://www.blogger.com/profile/02443056704463245314</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author></entry><entry><id>tag:blogger.com,1999:blog-3176943100655981551.post-3917417004066564536</id><published>2012-04-02T16:44:00.001-07:00</published><updated>2012-04-02T16:44:15.420-07:00</updated><title type='text'>Frontend SPOF in Beijing</title><content type='html'>&lt;a href=&quot;http://www.stevesouders.com/blog/2012/03/28/frontend-spof-in-beijing/&quot;&gt;Frontend SPOF in Beijing&lt;/a&gt;: &lt;br /&gt;
This past December I contributed an article called &lt;a href=&quot;http://calendar.perfplanet.com/2011/frontend-spof-in-beijing/&quot;&gt;Frontend SPOF in Beijing&lt;/a&gt; to PerfPlanet’s Performance Calendar. I hope that everyone who reads my blog also read the &lt;a href=&quot;http://calendar.perfplanet.com/2011/&quot;&gt;Performance Calendar&lt;/a&gt; – it’s an amazing collection of web performance articles and gurus. But in case you don’t I’m cross-posting it here. I saw a great presentation from &lt;a href=&quot;https://twitter.com/#!/patmeenan&quot;&gt;Pat Meenan&lt;/a&gt; about frontend SPOF and want to raise awareness around this issue. This post contains some good insights.&lt;br /&gt;
Make sure to read &lt;a href=&quot;http://www.perfplanet.com/&quot;&gt;PerfPlanet&lt;/a&gt; – it’s a great aggregator of WPO blog posts.&lt;br /&gt;
Now – flash back to December 2011…&lt;br /&gt;
&lt;hr style=&quot;border-width: 2px; margin-bottom: 1em;&quot; /&gt;I’m at &lt;a href=&quot;http://velocity.oreilly.com.cn/2011/&quot;&gt;Velocity China&lt;/a&gt; in Beijing as I write this article for the &lt;a href=&quot;http://calendar.perfplanet.com/2011/&quot;&gt;Performance Calendar&lt;/a&gt;. Since this is my second time to Beijing I was better prepared for the challenges of being behind the &lt;a href=&quot;http://en.wikipedia.org/wiki/Golden_Shield_Project&quot;&gt;Great Firewall&lt;/a&gt;. I knew I couldn’t access popular US websites like &lt;a href=&quot;http://www.google.com/&quot;&gt;Google&lt;/a&gt;, &lt;a href=&quot;http://www.facebook.com/&quot;&gt;Facebook&lt;/a&gt;, and &lt;a href=&quot;http://www.twitter.com/&quot;&gt;Twitter&lt;/a&gt;, but as I did my typical surfing I was surprised at how many other websites seemed to be blocked.&lt;br /&gt;
&lt;h2&gt;Business Insider&lt;/h2&gt;It didn’t take me long to realize the problem was &lt;a href=&quot;http://www.stevesouders.com/blog/2010/06/01/frontend-spof/&quot;&gt;frontend SPOF&lt;/a&gt; – when a frontend resource (script, stylesheet, or font file) causes a page to be unusable. Some pages were completely blank, such as &lt;a href=&quot;http://www.businessinsider.com/&quot;&gt;Business Insider&lt;/a&gt;:&lt;br /&gt;
&lt;div style=&quot;margin-bottom: 1em;&quot;&gt;&lt;a href=&quot;http://stevesouders.com/images/businessinsider-firefox.png&quot;&gt;&lt;img alt=&quot;&quot; src=&quot;http://stevesouders.com/images/businessinsider-firefox.png&quot; width=&quot;480&quot; /&gt;&lt;/a&gt;&lt;br /&gt;
&lt;div style=&quot;font-weight: bold; text-align: center;&quot;&gt;figure 1: The dreaded “blank white screen” due to a blocking Twitter script.&lt;/div&gt;&lt;/div&gt;Firebug’s Net Panel shows that &lt;code&gt;anywhere.js&lt;/code&gt; is taking a long time to download because it’s coming from &lt;code&gt;platform.twitter.com&lt;/code&gt; – which is blocked by the firewall. Knowing that scripts block rendering of all subsequent DOM elements, we form the hypothesis that &lt;code&gt;anywhere.js&lt;/code&gt; is being loaded in blocking mode in the HEAD. Looking at the &lt;a href=&quot;http://stevesouders.com/analysis/greatfirewall/businessinsider-firefox.html&quot;&gt;HTML source&lt;/a&gt; we see that’s exactly what is happening:&lt;br /&gt;
&lt;pre style=&quot;width: 480px;&quot;&gt;&amp;lt;head&amp;gt;
...
&amp;lt;!-- Twitter Anywhere --&amp;gt;
&amp;lt;script src=&quot;https://platform.twitter.com/anywhere.js?id=ZV0...&amp;amp;v=1&quot; type=&quot;text/javascript&quot;&amp;gt;&amp;lt;/script&amp;gt;
&amp;lt;!-- / Twitter Anywhere --&amp;gt;
...
&amp;lt;/head&amp;gt;
...
&amp;lt;body&amp;gt;&lt;/pre&gt;If &lt;code&gt;anywhere.js&lt;/code&gt; had been loaded &lt;a href=&quot;http://www.stevesouders.com/blog/2009/04/27/loading-scripts-without-blocking/&quot;&gt;asynchronously&lt;/a&gt; this wouldn’t happen. Instead, since &lt;code&gt;anywhere.js&lt;/code&gt; is loaded the old way with &lt;code&gt;&amp;lt;SCRIPT SRC=...&lt;/code&gt;, it blocks all the DOM elements that follow which in this case is the entire BODY of the page. If we wait long enough the request for &lt;code&gt;anywhere.js&lt;/code&gt; times out and the page begins to render. How long does it take for the request to timeout? Looking at the “after” screenshot of Business Insider we see it takes &lt;em&gt;1 minute and 15 seconds&lt;/em&gt; for the request to timeout. That’s 1 minute and 15 seconds that the user is left staring at a blank white screen waiting for the Twitter script!&lt;br /&gt;
&lt;div style=&quot;margin-bottom: 1em;&quot;&gt;&lt;a href=&quot;http://stevesouders.com/images/businessinsider-firefox-after.png&quot;&gt;&lt;img alt=&quot;&quot; src=&quot;http://stevesouders.com/images/businessinsider-firefox-after.png&quot; width=&quot;480&quot; /&gt;&lt;/a&gt;&lt;br /&gt;
&lt;div style=&quot;font-weight: bold; text-align: center;&quot;&gt;figure 2: Business Insider finally renders after &lt;em&gt;1 minute 15 seconds&lt;/em&gt;.&lt;/div&gt;&lt;/div&gt;&lt;h2&gt;CNET&lt;/h2&gt;&lt;a href=&quot;http://www.cnet.com/&quot;&gt;CNET&lt;/a&gt; has a slightly different experience; the navigation header is displayed but the rest of the page is blocked from rendering:&lt;br /&gt;
&lt;div style=&quot;margin-bottom: 1em;&quot;&gt;&lt;a href=&quot;http://stevesouders.com/images/cnet-firefox.png&quot;&gt;&lt;img alt=&quot;&quot; src=&quot;http://stevesouders.com/images/cnet-firefox.png&quot; width=&quot;480&quot; /&gt;&lt;/a&gt;&lt;br /&gt;
&lt;div style=&quot;font-weight: bold; padding: 1em 0; text-align: center;&quot;&gt;figure 3: CNET rendering is blocked by ads from &lt;code&gt;eyewonder.com&lt;/code&gt;.&lt;/div&gt;&lt;/div&gt;Looking in Firebug we see that &lt;code&gt;wrapper.js&lt;/code&gt; from &lt;code&gt;cdn.eyewonder.com&lt;/code&gt; is “pending” – this must be another domain that’s blocked by the firewall. Based on where the rendering stops our guess is that the &lt;code&gt;wrapper.js&lt;/code&gt; SCRIPT tag is immediately after the navigation header and is loaded in blocking mode thus preventing the rest of the page from rendering. The &lt;a href=&quot;http://stevesouders.com/analysis/greatfirewall/cnet-firefox.html&quot;&gt;HTML&lt;/a&gt; confirms that this is indeed what’s happening:&lt;br /&gt;
&lt;pre style=&quot;width: 480px;&quot;&gt;&amp;lt;header&amp;gt;
...
&amp;lt;/header&amp;gt;
&amp;lt;script src=&quot;http://cdn.eyewonder.com/100125/771933/1592365/wrapper.js&quot;&amp;gt;&amp;lt;/script&amp;gt;
&amp;lt;div id=&quot;rb_wrap&quot;&amp;gt;
&amp;lt;div id=&quot;rb_content&quot;&amp;gt; &amp;lt;div id=&quot;contentMain&quot;&amp;gt;&lt;/pre&gt;&lt;h2&gt;O’Reilly Radar&lt;/h2&gt;Everyday I visit &lt;a href=&quot;http://radar.oreilly.com/&quot;&gt;O’Reilly Radar&lt;/a&gt; to read &lt;a href=&quot;http://radar.oreilly.com/nat/index.html&quot;&gt;Nat Torkington’s&lt;/a&gt; Four Short Links. Normally Nat’s is one of many stories on the Radar front page, but going there from Beijing shows a page with only one story:&lt;br /&gt;
&lt;div style=&quot;margin-bottom: 1em;&quot;&gt;&lt;a href=&quot;http://stevesouders.com/images/oreilly-radar-firefox.png&quot;&gt;&lt;img alt=&quot;&quot; src=&quot;http://stevesouders.com/images/oreilly-radar-firefox.png&quot; width=&quot;480&quot; /&gt;&lt;/a&gt;&lt;br /&gt;
&lt;div style=&quot;font-weight: bold; padding: 1em 0; text-align: center;&quot;&gt;figure 4: O’Reilly Radar rendering is blocked by Twitter widget.&lt;/div&gt;&lt;/div&gt;At the bottom of this first story there’s supposed to be a Tweet button. This button is added by the &lt;code&gt;widgets.js&lt;/code&gt; script fetched from &lt;code&gt;platform.twitter.com&lt;/code&gt; which is blocked by the Great Firewall. This wouldn’t be an issue if &lt;code&gt;widgets.js&lt;/code&gt; was fetched asynchronously, but sadly a peek at the &lt;a href=&quot;http://stevesouders.com/analysis/greatfirewall/oreilly-radar-firefox.html&quot;&gt;HTML&lt;/a&gt; shows that’s not the case:&lt;br /&gt;
&lt;pre style=&quot;width: 480px;&quot;&gt;&amp;lt;a href=&quot;...&quot;&amp;gt;Comment&amp;lt;/a&amp;gt;
&amp;amp;nbsp;|&amp;amp;nbsp;
&amp;lt;span class=&quot;social-counters&quot;&amp;gt;
&amp;lt;span class=&quot;retweet&quot;&amp;gt;
&amp;lt;a href=&quot;http://twitter.com/share&quot; class=&quot;twitter-share-button&quot;
   data-count=&quot;horizontal&quot;
   data-url=&quot;http://radar.oreilly.com/2011/12/four-short-links-6-december-20-1.html&quot;
   data-text=&quot;Four short links: 6 December 2011&quot; data-via=&quot;radar&quot;
   data-related=&quot;oreillymedia:oreilly.com&quot;&amp;gt;Tweet&amp;lt;/a&amp;gt;
&amp;lt;script src=&quot;http://platform.twitter.com/widgets.js&quot;
   type=&quot;text/javascript&quot;&amp;gt;&amp;lt;/script&amp;gt;
&amp;lt;/span&amp;gt;&lt;/pre&gt;&lt;h2&gt;The cause of frontend SPOF&lt;/h2&gt;One possible takeaway from these examples might be that frontend SPOF is specific to Twitter and eyewonder and a few other 3rd party widgets. Sadly, frontend SPOF can be caused by any 3rd party widget, and even from the main website’s own scripts, stylesheets, or font files.&lt;br /&gt;
Another possible takeaway from these examples might be to avoid 3rd party widgets that are blocked by the Great Firewall. But the Great Firewall isn’t the only cause of frontend SPOF – it just makes it easier to reproduce. Any script, stylesheet, or font file that takes a long time to return has the potential to cause frontend SPOF. This typically happens when there’s an outage or some other type of failure, such as an overloaded server where the HTTP request languishes in the server’s queue for so long the browser times out.&lt;br /&gt;
The true cause of frontend SPOF is loading a script, stylesheet, or font file in a blocking manner. The table in my &lt;a href=&quot;http://www.stevesouders.com/blog/2010/06/01/frontend-spof/&quot;&gt;frontend SPOF&lt;/a&gt; blog post shows when this happens. It’s really the website owner who controls whether or not their site is vulnerable to frontend SPOF. So what’s a website owner to do?&lt;br /&gt;
&lt;h2&gt;Avoiding frontend SPOF&lt;/h2&gt;The best way to avoid frontend SPOF is to load scripts asynchronously. Many popular 3rd party widgets do this by default, such as &lt;a href=&quot;http://code.google.com/apis/analytics/docs/tracking/asyncTracking.html&quot;&gt;Google Analytics&lt;/a&gt;, &lt;a href=&quot;https://developers.facebook.com/docs/reference/plugins/like/&quot;&gt;Facebook&lt;/a&gt;, and &lt;a href=&quot;http://blog.meebo.com/?p=2956&quot;&gt;Meebo&lt;/a&gt;. Twitter also has an &lt;a href=&quot;https://dev.twitter.com/docs/tweet-button&quot;&gt;async snippet&lt;/a&gt; for the Tweet button that O’Reilly Radar should use. If the widgets you use don’t offer an async version you can try Stoyan’s &lt;a href=&quot;http://www.phpied.com/social-button-bffs/&quot;&gt;Social button BFFs&lt;/a&gt; async pattern.&lt;br /&gt;
Another solution is to wrap your widgets in an iframe. This isn’t always possible, but in two of the examples above the widget is eventually served in an iframe. Putting them in an iframe from the start would have avoided the frontend SPOF problems.&lt;br /&gt;
For the sake of brevity I’ve focused on solutions for scripts. Solutions for font files can be found in my &lt;a href=&quot;http://www.stevesouders.com/blog/2009/10/13/font-face-and-performance/&quot;&gt;@font-face and performance&lt;/a&gt; blog post. I’m not aware of much research on loading stylesheets asynchronously. Causing too many reflows and &lt;a href=&quot;http://bluerobot.com/web/css/fouc.asp/&quot;&gt;FOUC&lt;/a&gt; are concerns that need to be addressed.&lt;br /&gt;
&lt;h2&gt;Call to action&lt;/h2&gt;&lt;a href=&quot;http://www.businessinsider.com/&quot;&gt;Business Insider&lt;/a&gt;, &lt;a href=&quot;http://www.cnet.com/&quot;&gt;CNET&lt;/a&gt;, and &lt;a href=&quot;http://radar.oreilly.com/&quot;&gt;O’Reilly Radar&lt;/a&gt; all have visitors from China, and yet the way their pages are constructed delivers a bad user experience where most if not all of the page is blocked for more than a minute. This isn’t a P2 frontend JavaScript issue. &lt;em&gt;This is an outage.&lt;/em&gt; If the backend servers for these websites took 1 minute to send back a response, you can bet the DevOps teams at Business Insider, CNET, and O’Reilly wouldn’t sleep until the problem was fixed. So why is there so little concern about frontend SPOF?&lt;br /&gt;
Frontend SPOF doesn’t get much attention – it definitely doesn’t get the attention it deserves given how easily it can bring down a website. One reason is it’s hard to diagnose. There are a lot of monitors that will start going off if a server response time exceeds 60 seconds. And since all that activity is on the backend it’s easier to isolate the cause. Is it that pagers don’t go off when clientside page load times exceed 60 seconds? That’s hard to believe, but perhaps that’s the case.&lt;br /&gt;
Perhaps it’s the way page load times are tracked. If you’re looking at worldwide medians, or even averages, and China isn’t a major audience your page load time stats might not exceed alert levels when frontend SPOF happens. Or maybe page load times are mostly tracked using synthetic testing, and those user agents aren’t subjected to real world issues like the Great Firewall.&lt;br /&gt;
One thing website owners can do is ignore frontend SPOF until it’s triggered by some future outage. A quick calculation shows this is a scary choice. If a 3rd party widget has a 99.99% uptime and a website has five widgets that aren’t async, the probability of frontend SPOF is 0.05%. If we drop uptime to 99.9% the probability of frontend SPOF climbs to 0.5%. Five widgets might be high, but remember that “third party widget” includes ads and metrics. Also, the website’s own resources can cause frontend SPOF which brings the number even higher. The average website today contains &lt;a href=&quot;http://httparchive.org/trends.php#bytesJS&amp;amp;reqJS&quot;&gt;14 scripts&lt;/a&gt; any of which could cause frontend SPOF if they’re not loaded async.&lt;br /&gt;
Frontend SPOF is a real problem that needs more attention. Website owners should use async snippets and patterns, monitor real user page load times, and look beyond averages to 95th percentiles and standard deviations. Doing these things will mitigate the risk of subjecting users to the dreaded blank white page. A chain is only as strong as its weakest link. What’s your website’s weakest link? There’s a lot of focus on backend resiliency. I’ll wager your weakest link is on the frontend.&lt;br /&gt;
&lt;hr style=&quot;border-width: 2px; margin-bottom: 1em;&quot; /&gt;[Originally posted as part of PerfPlanet&#39;s &lt;a href=&quot;http://calendar.perfplanet.com/2011/frontend-spof-in-beijing/&quot;&gt;Performance Calendar 2011&lt;/a&gt;.]</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3176943100655981551/posts/default/3917417004066564536'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3176943100655981551/posts/default/3917417004066564536'/><link rel='alternate' type='text/html' href='http://luiscameroon.blogspot.com/2012/04/frontend-spof-in-beijing.html' title='Frontend SPOF in Beijing'/><author><name>Luis Cameroon</name><uri>http://www.blogger.com/profile/02443056704463245314</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author></entry></feed>