SlideShare a Scribd company logo
Progressive Advancement
           in Web8
           (btw- web8 == html5 + css3)
                                          Paul Irish
                                             Isobar
                                         JSConf ’10




Friday, April 23, 2010
Friday, April 23, 2010
Native is better
                 html5 form controls vs UI libraries
                 html5 drag ‘n drop vs draggable()
                 css transitions vs animate()
                 border-radius, border-image, background-size
                 vs using large sprites
                 localStorage vs cookies


Friday, April 23, 2010
SHIM. okay? Shim. not shiv.




Friday, April 23, 2010
hx, ly.
           Printing, too.                     t l
                                               rea




                         www.iecss.com/print-protector   by @jon_neal

Friday, April 23, 2010
now
                                               hx, ly.      htm
           Printing, too.                     t l
                                               rea          mo  l5s
                                                                    hiv
                                                                       in
                                                              der        &
                                                                  niz
                                                                      r!




                         www.iecss.com/print-protector   by @jon_neal

Friday, April 23, 2010
How Ready Is HTML5 & CSS3?




Friday, April 23, 2010
Contenteditable




Friday, April 23, 2010
Friday, April 23, 2010
CSS3 Please!




Friday, April 23, 2010
CSS3 Helpers




                         border-radius.com
Friday, April 23, 2010
CSS3 Helpers




                           border-image.com
                         border-radius.com
Friday, April 23, 2010
But what if there’s no support?




Friday, April 23, 2010
Modernizr
    Making use of tomorrow’s technologies, today!

Friday, April 23, 2010
Friday, April 23, 2010
Feature Detection
                              Just Detect It™




Friday, April 23, 2010
sni
                            ffin
                                g us
                                    era
                                        gent
                                            s ==
                                                = sn
                                                    iffin
                                                         g gl
                                                             ue




Friday, April 23, 2010
Friday, April 23, 2010
Native                    No Native
                 Implementation            Implementation
                 . box {                   .no-borderradius .box {
                    // use border-radius      // maybe less padding?
                 }                         }

                                           if (Modernizr.borderradius == false){
                                               // call up DD_roundies, etc.
                                           }


Friday, April 23, 2010
Native                             No Native
  Implementation                     Implementation
  .boxshadow div {                   .no-boxshadow div {
     box-shadow: 1px 1px 1px #666;      border-bottom: 1px solid #666;
  }                                     border-right: 1px solid #777;
                                     }




Friday, April 23, 2010
// geo-location bridge
          function getLocation(callback){
            if (getLocation.cache) return callback(getLocation.cache);

              if (Modernizr.geolocation) {

                  navigator.geolocation.getCurrentPosition(function(position) {
                    callback(getLocation.cache = {
                       "lat": position.coords.latitude,
                       "lon": position.coords.longitude,
                       "obj": position
                    })
                  });

              } else {

                  $.getScript('//www.google.com/jsapi',function(){
                    callback(getLocation.cache = {
                       "lat": google.loader.ClientLocation.latitude,
                       "lon": google.loader.ClientLocation.longitude,
                       "obj": google.loader.ClientLocation
                    })
                  });
              }
          }
          // usage
          getLocation(function(pos){
            console.log("I'm located at ",pos.lat,' and ',pos.lon);
          });


Friday, April 23, 2010
Friday, April 23, 2010
OM
                              G it
                         onl       ’s
                             y7
                                k!




Friday, April 23, 2010
We got you covered, b.
                 Rounded corners         2D Transformations
                 @font-face fonts        CSS Gradients
                 Canvas                  SVG
                 rgba(), hsla() colors   Geolocation
                 border-image            CSS Columns
                 box-shadow              HTML5 Forms
                 HTML5 Audio & Video     Web Workers
                 CSS Animations          Offline Web Apps
                 CSS Transitions         …


Friday, April 23, 2010
We got you covered, b.
                 Rounded corners         2D Transformations   webGL
                 @font-face fonts        CSS Gradients        SMIL
                 Canvas                  SVG                  hashchange event
                 rgba(), hsla() colors   Geolocation          localStorage
                 border-image            CSS Columns          sessionStorage
                 box-shadow              HTML5 Forms          postMessage
                 HTML5 Audio &           Web Workers          html5 drag ‘n drop
                 Video
                                         Offline Web Apps      web sql database
                 CSS Animations
                 CSS Transitions



Friday, April 23, 2010
We got you covered, b.
                 Rounded corners         2D Transformations   webGL
                 @font-face fonts        CSS Gradients        SMIL
                 Canvas                  SVG                  hashchange event
                 rgba(), hsla() colors   Geolocation          localStorage
                 border-image            CSS Columns          sessionStorage
                 box-shadow              HTML5 Forms          postMessage
                 HTML5 Audio &
                 Video
                                         Steal me!
                                         Web Workers          html5 drag ‘n drop
                                         Offline Web Apps      web sql database
                 CSS Animations
                 CSS Transitions



Friday, April 23, 2010
Modernizr
                 http://modernizr.com
                         @modernizr




                                        Yah, it’s open source. Fork it, baby.


Friday, April 23, 2010
dowebsitesneedtolookexactlythesameineverybrowser.com


Friday, April 23, 2010
dowebsitesneedtobeexperiencedexactlythesameineverybrowser.com


Friday, April 23, 2010
ishtml5readyyet.com


Friday, April 23, 2010
UP !
                           HU T wrong.
                         S   y   ou ’re



                         ishtml5readyyet.com


Friday, April 23, 2010
Your mother does
                          NOT find a website
                         she likes the look of,
                          and then opens it
                           another browser.

                                   ~Andy Clarke (@malarkey)




Friday, April 23, 2010
A Performance Policy

                           2 truths
           1. Both you and the client want the most
              responsive experience possible.
           2. Everything added to the page slows it
              down.



Friday, April 23, 2010
A Performance Policy
                 During IA, IxD and visual design
                         communicate impact of design decisions


                 Tell the client all browsers will not have the same
                 experience
                         It’s not worthwhile to have feature parity
                         Stop in the name of love
                         Drop in the name of performance

Friday, April 23, 2010
What would you prefer me to do?

                    Spend my time hacking around issues in
                   older technologies like Internet Explorer 6
                                       or
                  would you like that time spent making the
                     site look the best that it can on better
                     desktop browsers, as well as on the
                   iPhone, iPod Touch, iPad, Blackberry and a
                     whole host of other mobile devices?
                                            ~Andy Clarke (@malarkey)


Friday, April 23, 2010
When performance is poor
            There are three options:


            1. Redevelop the code

            2. Drop the feature

            3. Redesign approach of the UI


Friday, April 23, 2010
Friday, April 23, 2010
Me:
                         http://paulirish.com
                               @paul_irish




Friday, April 23, 2010

More Related Content

PDF
Progressive Advancement, by way of progressive enhancement
PDF
Hello Web Fonts
PDF
Short intro to JQuery and Modernizr
PDF
Modernizr - Detecting HTML5 and CSS3 support
PDF
Planning for the Horizontal: Scaling Node.js Applications
PDF
Horizontally Scaling Node.js and WebSockets
PDF
An Overview of HTML5 Storage
PPTX
Introduction to Node.js
Progressive Advancement, by way of progressive enhancement
Hello Web Fonts
Short intro to JQuery and Modernizr
Modernizr - Detecting HTML5 and CSS3 support
Planning for the Horizontal: Scaling Node.js Applications
Horizontally Scaling Node.js and WebSockets
An Overview of HTML5 Storage
Introduction to Node.js

Similar to Progressive Advancement in Web8 (20)

PDF
Getting rid of images with CSS
PDF
Introduction to Canvas and Native Web Vector Graphics
PDF
Introduction to Raphaël
PDF
Designing With Type :: FontConf 2010
PDF
CSS3: The Future is Now at Drupal Design Camp Boston
PDF
Stephanie Rewis - css-startech
PPTX
HTML5 - A Whirlwind tour
PDF
Utahjs D3
PDF
xfiles sharing
PDF
Creating Lifelike Designs with CSS3
PDF
Web Standards @ Opera Talk Oslo
PDF
Implementing Groovy Domain-Specific Languages - S2G Forum - Munich 2010
PDF
Mobile, Media & Touch
PDF
GWT Plus HTML 5
PDF
10 simulation
PDF
10 simulation
PPTX
Html5 more than just html5 v final
PDF
Geo Package and OWS Context at FOSS4G PDX
PDF
Node.js and Ruby
PPT
OWC 2012 (Open Web Camp)
Getting rid of images with CSS
Introduction to Canvas and Native Web Vector Graphics
Introduction to Raphaël
Designing With Type :: FontConf 2010
CSS3: The Future is Now at Drupal Design Camp Boston
Stephanie Rewis - css-startech
HTML5 - A Whirlwind tour
Utahjs D3
xfiles sharing
Creating Lifelike Designs with CSS3
Web Standards @ Opera Talk Oslo
Implementing Groovy Domain-Specific Languages - S2G Forum - Munich 2010
Mobile, Media & Touch
GWT Plus HTML 5
10 simulation
10 simulation
Html5 more than just html5 v final
Geo Package and OWS Context at FOSS4G PDX
Node.js and Ruby
OWC 2012 (Open Web Camp)
Ad

More from Paul Irish (6)

PDF
webfonts & @font-face :: in brief
PDF
Squeezing The Best Out Of Webfonts
KEY
Employing Custom Fonts
KEY
jQuery Anti-Patterns for Performance & Compression
PDF
Practical Design Solutions from Japan
KEY
Rich Typography Options For The Web - or - Why sIFR is Dead in 2009
webfonts & @font-face :: in brief
Squeezing The Best Out Of Webfonts
Employing Custom Fonts
jQuery Anti-Patterns for Performance & Compression
Practical Design Solutions from Japan
Rich Typography Options For The Web - or - Why sIFR is Dead in 2009
Ad

Recently uploaded (20)

PDF
DASA ADMISSION 2024_FirstRound_FirstRank_LastRank.pdf
PDF
Univ-Connecticut-ChatGPT-Presentaion.pdf
PDF
Web App vs Mobile App What Should You Build First.pdf
PDF
From MVP to Full-Scale Product A Startup’s Software Journey.pdf
PDF
Developing a website for English-speaking practice to English as a foreign la...
PPTX
TechTalks-8-2019-Service-Management-ITIL-Refresh-ITIL-4-Framework-Supports-Ou...
PDF
Video forgery: An extensive analysis of inter-and intra-frame manipulation al...
PPTX
MicrosoftCybserSecurityReferenceArchitecture-April-2025.pptx
PPTX
observCloud-Native Containerability and monitoring.pptx
PPTX
Chapter 5: Probability Theory and Statistics
PDF
STKI Israel Market Study 2025 version august
PDF
Enhancing emotion recognition model for a student engagement use case through...
PPTX
Modernising the Digital Integration Hub
PPTX
Programs and apps: productivity, graphics, security and other tools
PDF
Getting started with AI Agents and Multi-Agent Systems
PPTX
cloud_computing_Infrastucture_as_cloud_p
PDF
Profit Center Accounting in SAP S/4HANA, S4F28 Col11
PDF
How ambidextrous entrepreneurial leaders react to the artificial intelligence...
PDF
Hindi spoken digit analysis for native and non-native speakers
PPTX
TLE Review Electricity (Electricity).pptx
DASA ADMISSION 2024_FirstRound_FirstRank_LastRank.pdf
Univ-Connecticut-ChatGPT-Presentaion.pdf
Web App vs Mobile App What Should You Build First.pdf
From MVP to Full-Scale Product A Startup’s Software Journey.pdf
Developing a website for English-speaking practice to English as a foreign la...
TechTalks-8-2019-Service-Management-ITIL-Refresh-ITIL-4-Framework-Supports-Ou...
Video forgery: An extensive analysis of inter-and intra-frame manipulation al...
MicrosoftCybserSecurityReferenceArchitecture-April-2025.pptx
observCloud-Native Containerability and monitoring.pptx
Chapter 5: Probability Theory and Statistics
STKI Israel Market Study 2025 version august
Enhancing emotion recognition model for a student engagement use case through...
Modernising the Digital Integration Hub
Programs and apps: productivity, graphics, security and other tools
Getting started with AI Agents and Multi-Agent Systems
cloud_computing_Infrastucture_as_cloud_p
Profit Center Accounting in SAP S/4HANA, S4F28 Col11
How ambidextrous entrepreneurial leaders react to the artificial intelligence...
Hindi spoken digit analysis for native and non-native speakers
TLE Review Electricity (Electricity).pptx

Progressive Advancement in Web8

  • 1. Progressive Advancement in Web8 (btw- web8 == html5 + css3) Paul Irish Isobar JSConf ’10 Friday, April 23, 2010
  • 3. Native is better html5 form controls vs UI libraries html5 drag ‘n drop vs draggable() css transitions vs animate() border-radius, border-image, background-size vs using large sprites localStorage vs cookies Friday, April 23, 2010
  • 4. SHIM. okay? Shim. not shiv. Friday, April 23, 2010
  • 5. hx, ly. Printing, too. t l rea www.iecss.com/print-protector by @jon_neal Friday, April 23, 2010
  • 6. now hx, ly. htm Printing, too. t l rea mo l5s hiv in der & niz r! www.iecss.com/print-protector by @jon_neal Friday, April 23, 2010
  • 7. How Ready Is HTML5 & CSS3? Friday, April 23, 2010
  • 11. CSS3 Helpers border-radius.com Friday, April 23, 2010
  • 12. CSS3 Helpers border-image.com border-radius.com Friday, April 23, 2010
  • 13. But what if there’s no support? Friday, April 23, 2010
  • 14. Modernizr Making use of tomorrow’s technologies, today! Friday, April 23, 2010
  • 16. Feature Detection Just Detect It™ Friday, April 23, 2010
  • 17. sni ffin g us era gent s == = sn iffin g gl ue Friday, April 23, 2010
  • 19. Native No Native Implementation Implementation . box { .no-borderradius .box { // use border-radius // maybe less padding? } } if (Modernizr.borderradius == false){ // call up DD_roundies, etc. } Friday, April 23, 2010
  • 20. Native No Native Implementation Implementation .boxshadow div { .no-boxshadow div { box-shadow: 1px 1px 1px #666; border-bottom: 1px solid #666; } border-right: 1px solid #777; } Friday, April 23, 2010
  • 21. // geo-location bridge function getLocation(callback){ if (getLocation.cache) return callback(getLocation.cache); if (Modernizr.geolocation) { navigator.geolocation.getCurrentPosition(function(position) { callback(getLocation.cache = { "lat": position.coords.latitude, "lon": position.coords.longitude, "obj": position }) }); } else { $.getScript('//www.google.com/jsapi',function(){ callback(getLocation.cache = { "lat": google.loader.ClientLocation.latitude, "lon": google.loader.ClientLocation.longitude, "obj": google.loader.ClientLocation }) }); } } // usage getLocation(function(pos){ console.log("I'm located at ",pos.lat,' and ',pos.lon); }); Friday, April 23, 2010
  • 23. OM G it onl ’s y7 k! Friday, April 23, 2010
  • 24. We got you covered, b. Rounded corners 2D Transformations @font-face fonts CSS Gradients Canvas SVG rgba(), hsla() colors Geolocation border-image CSS Columns box-shadow HTML5 Forms HTML5 Audio & Video Web Workers CSS Animations Offline Web Apps CSS Transitions … Friday, April 23, 2010
  • 25. We got you covered, b. Rounded corners 2D Transformations webGL @font-face fonts CSS Gradients SMIL Canvas SVG hashchange event rgba(), hsla() colors Geolocation localStorage border-image CSS Columns sessionStorage box-shadow HTML5 Forms postMessage HTML5 Audio & Web Workers html5 drag ‘n drop Video Offline Web Apps web sql database CSS Animations CSS Transitions Friday, April 23, 2010
  • 26. We got you covered, b. Rounded corners 2D Transformations webGL @font-face fonts CSS Gradients SMIL Canvas SVG hashchange event rgba(), hsla() colors Geolocation localStorage border-image CSS Columns sessionStorage box-shadow HTML5 Forms postMessage HTML5 Audio & Video Steal me! Web Workers html5 drag ‘n drop Offline Web Apps web sql database CSS Animations CSS Transitions Friday, April 23, 2010
  • 27. Modernizr http://modernizr.com @modernizr Yah, it’s open source. Fork it, baby. Friday, April 23, 2010
  • 31. UP ! HU T wrong. S y ou ’re ishtml5readyyet.com Friday, April 23, 2010
  • 32. Your mother does NOT find a website she likes the look of, and then opens it another browser. ~Andy Clarke (@malarkey) Friday, April 23, 2010
  • 33. A Performance Policy 2 truths 1. Both you and the client want the most responsive experience possible. 2. Everything added to the page slows it down. Friday, April 23, 2010
  • 34. A Performance Policy During IA, IxD and visual design communicate impact of design decisions Tell the client all browsers will not have the same experience It’s not worthwhile to have feature parity Stop in the name of love Drop in the name of performance Friday, April 23, 2010
  • 35. What would you prefer me to do? Spend my time hacking around issues in older technologies like Internet Explorer 6 or would you like that time spent making the site look the best that it can on better desktop browsers, as well as on the iPhone, iPod Touch, iPad, Blackberry and a whole host of other mobile devices? ~Andy Clarke (@malarkey) Friday, April 23, 2010
  • 36. When performance is poor There are three options: 1. Redevelop the code 2. Drop the feature 3. Redesign approach of the UI Friday, April 23, 2010
  • 38. Me: http://paulirish.com @paul_irish Friday, April 23, 2010