SlideShare una empresa de Scribd logo
1 de 151
Descargar para leer sin conexión
Progressive
   nhancement

by Aaron Gustafson
@aarongustafson
http://slideshare.net/AaronGustafson
?
TECHNOLOGICAL
 RESTRICTIONS
MCMLXXVII
  (that’s 1977)
HTML   CSS
fault tolerance
n. a system’s ability to continue to
operate when it encounters and
unexpected error.
BROWSERS
IGNORE WHAT
 THEY DON’T
UNDERSTAND
GRACEFUL
DEGRADATION
MODERN
BROWSERS
   OLDER BROWSERS
MODERN
BROWSERS
   OLDER BROWSERS
PROGRESSIVE
ENHANCEMENT
CONTENT
ACCESSIBILITY
“SPECIAL NEEDS”
“SPECIAL NEEDS”
    CAN BE
  CONTEXTUAL
PROGRESSIVE
GRACEFUL DEGRADATION   ENHANCEMENT
OOOH, SHINY!
PROGRESSIVE
ENHANCEMENT
 ISN’T ABOUT
  BROWSERS
BROWSERS AND
TECHNOLOGIES
 COME AND GO
DON’T LOSE
 SIGHT OF
YOUR USERS
User Experience




             BASIC                          ADVANCED

                     Browser Capabilities
User Experience




             BASIC                          ADVANCED

                     Browser Capabilities


                        Content
User Experience




                      Semantics
             BASIC                          ADVANCED

                     Browser Capabilities


                        Content
User Experience




                         Design

                      Semantics
             BASIC                          ADVANCED

                     Browser Capabilities


                        Content
User Experience




                     Interactivity

                         Design

                      Semantics
             BASIC                          ADVANCED

                     Browser Capabilities


                        Content
User Experience



                     Accessibility

                     Interactivity

                         Design

                      Semantics
             BASIC                          ADVANCED

                     Browser Capabilities


                        Content
User Experience



                          ARIA

                      JavaScript

                           CSS

                         HTML
             BASIC                          ADVANCED

                     Browser Capabilities


                     Text & HTTP
Content
Content
 is WHY
we build
websites
Clear,
well-written
prose is key.
Don’t put up
roadblocks.
Semantics
Progressive EEnhancement




Fault tolerance
  <p>HTML5 introduces several <em>really</em>
  useful elements and a ton of new APIs.</p>


  <p>Please fill out the form below.
  <strong>Note: all fields are required.</strong></p>


  <p>I like to work with markup languages because
  <strong>they are simple and easy to read</strong>.
  They also have that certain <i lang="fr" title="I
  don&#8217;t know what">je ne sais quoi</i>.</p>




EECI - October 2011                                     46
Progressive EEnhancement




Fault tolerance
  HTML5 introduces several really
  useful elements and a ton of new APIs.


  Please fill out the form below.
  Note: all fields are required.


  I like to work with markup languages because
  they are simple and easy to read.
  They also have that certain je ne sais quoi.




EECI - October 2011                              47
Progressive EEnhancement




Fault tolerance
  <video poster=”poster.png”>
   <source src=”video.m4v”/>
   <source src=”video.webm”/>
   <source src=”video.ogv”/>
   <img src=”poster.png” alt=””/>
   <ul>
     <li><a href="video.m4v">Download MP4</a></li>
     <li><a href="video.webm">Download WebM</a></li>
     <li><a href="video ogv">Download Ogg</a></li>
   </ul>
  </video>




EECI - October 2011                                    48
Progressive EEnhancement




Fault tolerance
  <video poster=”poster.png”>
   <source src=”video.m4v”/>
   <source src=”video.webm”/>
   <source src=”video.ogv”/>
   <img src=”poster.png” alt=””/>
   <ul>
     <li><a href="video.m4v">Download MP4</a></li>
     <li><a href="video.webm">Download WebM</a></li>
     <li><a href="video ogv">Download Ogg</a></li>
   </ul>
  </video>




EECI - October 2011                                    49
Progressive EEnhancement




Fault tolerance
  <input type="date" name="dob"/>


                      I get it!     I don’t get it :-(




EECI - October 2011                                      50
Ad-hoc
Semantics
Progressive EEnhancement




Classi cation
Progressive EEnhancement




Identi cation
Progressive EEnhancement




Microformats
  <section class="vcard">
   <figure>
     <img class="photo" src="aaron-gustafson.jpg" alt=""/>
   </figure>
   <h1 class="fn">Aaron Gustafson</h1>
   …
   <p>Aaron … is <b class="role">Group Manager</b> of the
     <a class="org" href="http://webstandards.org">Web
     Standards Project (WaSP)</a> ….</p>
  </section>




EECI - October 2011                                          56
Progressive EEnhancement




Microformats
  <body class="hentry">
   <h1 class="entry-title">
    {exp:typogrify}{title}{/exp:typogrify}
   </h1>
   <h3 class="author vcard">Posted by
     <a class="fn" href="/archives/by-author/{username}/">
    {author}</a> on
     <time class="updated"
           datetime="{entry_date format='%Y-%m-%dT%H:%i:%s'}"
           pubdate="pudate">{entry_date format='%d %F %Y'}
    </time>
     <a rel="bookmark" href="{the_permalink}">Permalink</a></h3>
   </h3>
   <div class=”entry-content”>
    {exp:typogrify}{entry_body}{/exp:typogrify}
   </div>
  </body>


EECI - October 2011                                                59
Readability
Progressive EEnhancement




EE/CI helpers
CI Microformats (helper)
hcard, rel-license
http://codeigniter.com/wiki/microformats


VZ Address ( eldtype)
hcard
https://github.com/elivz/vz_address.ee_addon


Easy Figures (plug-in)
 gure
https://github.com/easy-designs/easy_figures.eeaddon




EECI - October 2011                                    61
Design
Progressive EEnhancement




Parsing errors


                           p{
                             color: red;
                           }




EECI - October 2011                        65
Progressive EEnhancement




Parsing errors


                           p{
                             color: red;
                           }




EECI - October 2011                        65
Progressive EEnhancement




Parsing errors


                           p{
                             color: red;
                             font-weight: bold;
                           }



EECI - October 2011                               66
Progressive EEnhancement




Parsing errors


                           p{
                             color: red;
                             font-weight: bold;
                           }



EECI - October 2011                               66
Progressive EEnhancement




Parsing errors
  p {
    color: #ccc;
    color: rgba( 0, 0, 0, .5 );
  }




EECI - October 2011               67
Progressive EEnhancement




Parsing errors
  html[lang] p {
    color: #ccc;
    color: rgba( 0, 0, 0, .5 );
  }




EECI - October 2011               68
Progressive EEnhancement




Parsing errors
  @-moz-document url-prefix() {
    html[lang] p {
      color: #ccc;
      color: rgba( 0, 0, 0, .5 );
    }
  }




EECI - October 2011                 69
#intro {
  /* Basic Layout */
}

/* ... */

body[id=css-zen-garden] #intro {
 /* Advanced Layout */
}
#intro {
  /* Basic Layout */
}

/* ... */

[foo], #intro {
  /* Advanced Layout */
}
Progressive EEnhancement




Parsing errors
  @import 'not-for-IE7-or-below.css' screen;

  @media screen, print, refrigerator {
    /* IE will get these rules */
  }




EECI - October 2011                            72
Progressive EEnhancement




Organization



                           design




EECI - October 2011                 73
Progressive EEnhancement




Organization


                           type        color


                              layout


EECI - October 2011                            74
Progressive EEnhancement




Organization
  /* =Typography */
  img {
    display: block;
  }

  /* =Layout */
  @media screen {
    .frame .inner {
      border: 10px solid;
    }
  }

  /* =Color */
  .frame .inner {
    background-color: rgb(227, 222, 215);
    border-color: rgb(227, 222, 215);
  }


EECI - October 2011                         75
Progressive EEnhancement




Organization

                      type.css




                      layout.css




                      color.css




EECI - October 2011                76
Progressive EEnhancement




Organization

                      type.css




                      layout.css   main.css




                      color.css




EECI - October 2011                           76
Progressive EEnhancement




Organization
  # Setup
  RewriteEngine on
  RewriteBase /

  # rewrite css, img & js
  RewriteRule ^css/(.*).css$ /styles/$1 [L]




EECI - October 2011                             77
Progressive EEnhancement




Organization
  {embed="styles/typography"}

  @media screen {
    {embed="styles/layout-screen"}
  }

  {embed="styles/color"}




EECI - October 2011                  78
Progressive EEnhancement




Organization
  {embed="styles/reset"}
  {embed="styles/typography"}

  @media screen {
    {embed="styles/layout-screen"}
  }

  @media print {
    {embed="styles/layout-print"}
  }

  {embed="styles/color"}
  {embed="styles/effects"}




EECI - October 2011                  79
Progressive EEnhancement




Mobile- rst
  {embed="styles/reset"}
  {embed="styles/typography"}

  @media screen {
    {embed="styles/layout-mobile"}
  }

  {embed="styles/layout-tablet"}

  @media screen and (min-width:860px) {
    {embed="styles/layout-screen"}
  }

  @media print {
    {embed="styles/layout-print"}
  }

  {embed="styles/color"}
  {embed="styles/effects"}
EECI - October 2011                       80
Progressive EEnhancement




Mobile- rst
  {embed="styles/reset"}
  {embed="styles/typography"}

  @media screen {
    {embed="styles/layout-mobile"}
  }

  {embed="styles/layout-tablet"}

  @media screen and (min-width:860px) {
    {embed="styles/layout-screen"}
  }

  @media print {
    {embed="styles/layout-print"}
  }

  {embed="styles/color"}
  {embed="styles/effects"}
EECI - October 2011                       81
Progressive EEnhancement




Mobile- rst
  @media screen and (min-width:481px) {
    /* … */
  }

  @media screen and (min-width:570px) {
    /* … */
  }

  @media screen and (min-width:650px) {
    /* … */
  }

  @media screen and (min-width:700px) {
    /* … */
  }




EECI - October 2011                       82
Progressive EEnhancement




Monkey-patching
  <link rel="stylesheet" href="main.css"/>
  <!--[if IE 9]><link rel="stylesheet" href="ie9.css"/><![endif]-->
  <!--[if lte IE 8]><link rel="stylesheet" href="ie8.css"/><![endif]-->
  <!--[if lte IE 7]><link rel="stylesheet" href="ie7.css"/><![endif]-->
  <!--[if lte IE 6]><link rel="stylesheet" href="ie6.css"/><![endif]-->




EECI - October 2011                                                       87
Progressive EEnhancement




Monkey-patching
  @-moz-document url-prefix() {

        /* GENERATED CONTENT - FF3 doesn't allow positioning */
        #extra-mile:before {
           content: '';
        }
        #extra-mile:first-of-type:before {
           content: url(extra-mile-sign.png);
        }

  }




EECI - October 2011                                               88
Interactivity
Photo credit: spike55151
Progressive EEnhancement




Sins of our past
  <a href="javascript:someFunction();">some text</a>


  <a href="javascript:void(null);"
     onclick="someFunction();">some text</a>


  <a href="#" onclick="someFunction();">some text</a>




EECI - October 2011                                     93
Progressive EEnhancement




A minor improvement
  <a href="http://offsite.com"
     onclick="newWin( this.href ); return false;">
     some text</a>




EECI - October 2011                                  94
Photo credit: Giando
Progressive EEnhancement




Event listeners
  window.onload = handleExternalLinks;

  function handleExternalLinks()
  {
    var server = document.location.hostname;
    var anchors = document.getElementsByTagName("a");
    var i, href;
    for( i=0; i < anchors.length; i++ )
    {
      href = anchors[i].href;
      if ( href.indexOf("http://" + server) == -1 &&
            href.indexOf("https://" + server) == -1 )
      {
         // HREF is not a file on my server
         anchors[i].onclick = function()
         {
            newWin( this.href );
         };
      }
    }
  }
EECI - October 2011                                     96
Photo credit: hebedesign
Progressive EEnhancement




Listen and delegate
  document
    .getElementsByTagName( 'body' )[0]
      .onclick = clickDelegator;

  function clickDelegator( e )
  {
    e = ( e ) ? e : event;
    var el = e.target || e.srcElement;
    // external links
    if ( el.nodeName.toLowerCase() == 'a' &&
         el.getAttribute( 'rel' ) == 'external' )
    {
       newWin( el.href );
    }
  }




EECI - October 2011                                 98
Photo credit: ambery
Progressive EEnhancement




Anchor-include pattern
  <a data-replace="/comments/{url_title}/"
     href="/archives/{entry_date format='%Y/%m/%d'}/{url_title}/
     comments/#comments">View comments on this entry and add your
     own</a>


  {if segment_4=="comments"}
      <section id="comments" class="focal">
      {embed="inc/.comments" url_title="{url_title}"}
      </section>
  {if:else}
      {comment_loader}
  {/if}




EECI - October 2011                                             104
Progressive EEnhancement




Anchor-include pattern
  {embed="inc/.comments" url_title="{segment_3}"}




EECI - October 2011                                 105
Progressive EEnhancement




Anchor-include pattern
                                                                   https://gist.github.com/b976b67e88ffbfc9f125


  $.fn.ajaxInclude = function(){
       return this.each(function() {
            var $el               = $( this ),
                  target          = $el.data( 'target' ),
                  $targetEl       = target && $( target ) || $el,
                  methods         = [ 'append', 'replace', 'before', 'after' ],
                  ml              = methods.length,
                  method,
                  url;
            while ( ml-- ) {
                  method = methods[ ml ];
                  if ( $el.is( '[data-' + method + ']' ) ) {
                        url       = $el.data( method );
                        break;
                  }
            }
            if ( method == 'replace' ) { method += 'With'; }
            if ( url && method ) {
                  $.get( url, function( data ){
                        $el.trigger( 'ajaxInclude', [$targetEl, data] );
                        $targetEl[ method ]( data );
                  });
            }
       });
  };
EECI - October 2011                                                                                        106
Progressive EEnhancement




Anchor-include pattern
Replace:
  <a data-replace="articles/latest/fragment"
     href="...">Latest Articles</a>


Before:
  <a data-before="articles/latest/fragment"
     href="...">Latest Articles</a>


After:
  <a data-after="articles/latest/fragment"
     href="...">Latest Articles</a>



EECI - October 2011                            107
Progressive EEnhancement




Anchor-include pattern
  $("[data-append],[data-replace],”+
    “[data-after],[data-before]").ajaxInclude();




EECI - October 2011                                108
Progressive EEnhancement




Media Queries
Progressive EEnhancement




Mobile interfaces




EECI - October 2011        110
Progressive EEnhancement




Swapping content
  var trigger = 659;

  // …

  function toggleDisplay()
  {
      var width = $window.width();
      if ( showing == 'old' &&
            width <= trigger )
      {
           $old_nav.replaceWith($new_nav);
           showing = 'new';
      }
      else if ( showing == 'new' &&
                 width > trigger )
      {
           $new_nav.replaceWith($old_nav);
           showing = 'old';
      }
  }
EECI - October 2011                          111
Accessibility
Progressive EEnhancement




What is it?




EECI - October 2011        116
Progressive EEnhancement




What is it?




 <button>Tweet</button>

 <a class=”button”>Tweet</a>




EECI - October 2011            116
Progressive EEnhancement




What is it?




 <button>Tweet</button>

 <a class=”button”>Tweet</a>




EECI - October 2011            116
Progressive EEnhancement




What is it?




EECI - October 2011        117
Progressive EEnhancement




What is it?




 <button>Search Mail</button>

 <div>Search Mail</div>




EECI - October 2011             117
Progressive EEnhancement




What is it?




 <button>Search Mail</button>

 <div>Search Mail</div>




EECI - October 2011             117
Progressive EEnhancement




ARIA maps the OS to the web




EECI - October 2011           118
Semantics+
Progressive EEnhancement




All the web’s a play…
  <section id="main" role="main">
   <!-- The primary content for the page would go here -->
  </section>




EECI - October 2011                                          120
<header role="banner">
<nav role="navigation">
<form role="search">
<section role="main">
<footer role="contentinfo">
<nav role="navigation">
Progressive EEnhancement




Semantic comparison
                Ad-hoc            ARIA Role               HTML5

  #header, #top            banner                header (kind of)


  #main, #content          main                  none


  #extra, .sidebar         complementary, note   aside


  #footer, #bottom         contentinfo           footer


  #nav                     navigation            nav


  .hentry                  article               article


EECI - October 2011                                                 128
Progressive EEnhancement




These are the droids you seek
  <span role="button">OK</span>


  <div role="alert">
   <p>Something went wrong.</p>
  </div>


  <div role="alertdialog">
   <p>Something went wrong.</p>
   <img src="x.png" alt="dismiss" role="button" />
  </div>




EECI - October 2011                                  130
Progressive EEnhancement




What is it?




 <a role=”button”>Tweet</a>
    class=”button”>Tweet</a>




EECI - October 2011            131
Progressive EEnhancement




What is it?




 <a role=”button”>Tweet</a>




EECI - October 2011           131
Progressive EEnhancement




EECI - October 2011        132
Progressive EEnhancement




What’s happening?

                            B         B
                           (off)      (on)




  <span>
   <img src="bold-off.png" alt="bold" />
  </span>
  <span>
   <img src="bold-on.png" alt="bold" />
  </span>




EECI - October 2011                          134
Progressive EEnhancement




What’s happening?

                            B         B
                            (off)     (on)




  <span>
   <img src="bold-off.png" alt="not bold" />
  </span>
  <span>
   <img src="bold-on.png" alt="bold" />
  </span>




EECI - October 2011                            135
Progressive EEnhancement




What’s happening?

                            B         B
                            (off)     (on)




  <span role="button" aria-pressed="false">
   <img src="bold-off.png" alt="not bold" />
  </span>
  <span role="button" aria-pressed="true">
   <img src="bold-on.png" alt="bold" />
  </span>




EECI - October 2011                            136
Progressive EEnhancement




Hey! Over here!




EECI - October 2011        138
Progressive EEnhancement




Hey! Over here!




  <input class="tweet-counter" value="140" disabled="disabled">




EECI - October 2011                                               139
Progressive EEnhancement




Hey! Over here!




  <span id="chars_left_notice" class="numeric">
   <strong id="status-field-char-counter"
         class="char-counter">140</strong>
  </span>




EECI - October 2011                               140
Progressive EEnhancement




Hey! Over here!




  <span class="tweet-counter">140
   <b class="hidden"> characters remaining</b></span>


  .hidden {
    position: absolute;
    left: −999em;
  }



EECI - October 2011                                     141
Progressive EEnhancement




Hey! Over here!




  <span class="tweet-counter">maximum of 140 characters</span>



  <span class="tweet-counter">140
   <b class="hidden"> characters remaining</b></span>




EECI - October 2011                                              142
Progressive EEnhancement




Hey! Over here!




  <span aria-live="polite" aria-atomic="true"
        class="tweet-counter">140<b class="hidden">
        characters remaining</b></span>




EECI - October 2011                                   143
Progressive EEnhancement




Hey! Over here!




EECI - October 2011        144
ARIA

JavaScript

   CSS

  HTML

Text & HTTP
AdaptiveWebDesign.info
Progressive                          nhancement
                    by Aaron Gustafson
                    More of the same:
             http://adaptivewebdesign.info
                 http://easy-designs.net
                  http://easy-reader.net
              http://aaron-gustafson.com
                    Slides available at
         http://slideshare.net/AaronGustafson
           This presentation is licensed under
                   Creative Commons
      Attribution-Noncommercial-Share Alike 3.0

                flickr Photo Credits
  flickr.com/photos/aarongustafson/galleries/72157627891060114/

                  “Usability Fail” by soopahgrover
              “ferris wheel? not yet…” by drcorneilus
            “Compost 06/08/2007” by suavehouse113
               “CORNERSTONE” by spike55151
                     “Headphone” by Giando
                “Shout, shout..” by hebedesign

Más contenido relacionado

Similar a Progressive Enhancement Explained

Adaptive Web Design Workshop [WebVisions NYC 2012]
Adaptive Web Design Workshop [WebVisions NYC 2012]Adaptive Web Design Workshop [WebVisions NYC 2012]
Adaptive Web Design Workshop [WebVisions NYC 2012]Aaron Gustafson
 
Adaptive Web Design Workshop [inspire 2011]
Adaptive Web Design Workshop [inspire 2011]Adaptive Web Design Workshop [inspire 2011]
Adaptive Web Design Workshop [inspire 2011]Aaron Gustafson
 
Adaptive Web Design Workshop [Iceweb 2011]
Adaptive Web Design Workshop [Iceweb 2011]Adaptive Web Design Workshop [Iceweb 2011]
Adaptive Web Design Workshop [Iceweb 2011]Aaron Gustafson
 
Adaptive Web Design [WebVisions Portland 2012]
Adaptive Web Design [WebVisions Portland 2012]Adaptive Web Design [WebVisions Portland 2012]
Adaptive Web Design [WebVisions Portland 2012]Aaron Gustafson
 
WordCamp Thessaloniki2011 The NextWeb
WordCamp Thessaloniki2011 The NextWebWordCamp Thessaloniki2011 The NextWeb
WordCamp Thessaloniki2011 The NextWebGeorge Kanellopoulos
 
WHAT IS HTML5? (at CSS Nite Osaka)
WHAT IS HTML5? (at CSS Nite Osaka)WHAT IS HTML5? (at CSS Nite Osaka)
WHAT IS HTML5? (at CSS Nite Osaka)Shumpei Shiraishi
 
Progressive Enhancement & Mobile [Funka 2012]
Progressive Enhancement & Mobile [Funka 2012]Progressive Enhancement & Mobile [Funka 2012]
Progressive Enhancement & Mobile [Funka 2012]Aaron Gustafson
 
Crafting Rich Experiences with Progressive Enhancement [WebVisions 2011]
Crafting Rich Experiences with Progressive Enhancement [WebVisions 2011]Crafting Rich Experiences with Progressive Enhancement [WebVisions 2011]
Crafting Rich Experiences with Progressive Enhancement [WebVisions 2011]Aaron Gustafson
 
Familiar HTML5 - 事例とサンプルコードから学ぶ 身近で普通に使わているHTML5
Familiar HTML5 - 事例とサンプルコードから学ぶ 身近で普通に使わているHTML5Familiar HTML5 - 事例とサンプルコードから学ぶ 身近で普通に使わているHTML5
Familiar HTML5 - 事例とサンプルコードから学ぶ 身近で普通に使わているHTML5Sadaaki HIRAI
 
HiUED 前端/web 發展和體驗
HiUED 前端/web 發展和體驗HiUED 前端/web 發展和體驗
HiUED 前端/web 發展和體驗Bobby Chen
 
The Rich Standard: Getting Familiar with HTML5
The Rich Standard: Getting Familiar with HTML5The Rich Standard: Getting Familiar with HTML5
The Rich Standard: Getting Familiar with HTML5Todd Anglin
 
Web Development for UX Designers
Web Development for UX DesignersWeb Development for UX Designers
Web Development for UX DesignersAshlimarie
 
Wordcamp Thessaloniki 2011 The Nextweb
Wordcamp Thessaloniki 2011 The NextwebWordcamp Thessaloniki 2011 The Nextweb
Wordcamp Thessaloniki 2011 The NextwebGeorge Kanellopoulos
 
내꺼내꺼
내꺼내꺼내꺼내꺼
내꺼내꺼misty915
 
HTML5 Intoduction for Web Developers
HTML5 Intoduction for Web DevelopersHTML5 Intoduction for Web Developers
HTML5 Intoduction for Web DevelopersSascha Corti
 

Similar a Progressive Enhancement Explained (20)

Adaptive Web Design Workshop [WebVisions NYC 2012]
Adaptive Web Design Workshop [WebVisions NYC 2012]Adaptive Web Design Workshop [WebVisions NYC 2012]
Adaptive Web Design Workshop [WebVisions NYC 2012]
 
Adaptive Web Design Workshop [inspire 2011]
Adaptive Web Design Workshop [inspire 2011]Adaptive Web Design Workshop [inspire 2011]
Adaptive Web Design Workshop [inspire 2011]
 
Adaptive Web Design Workshop [Iceweb 2011]
Adaptive Web Design Workshop [Iceweb 2011]Adaptive Web Design Workshop [Iceweb 2011]
Adaptive Web Design Workshop [Iceweb 2011]
 
Word camp nextweb
Word camp nextwebWord camp nextweb
Word camp nextweb
 
Word camp nextweb
Word camp nextwebWord camp nextweb
Word camp nextweb
 
Adaptive Web Design [WebVisions Portland 2012]
Adaptive Web Design [WebVisions Portland 2012]Adaptive Web Design [WebVisions Portland 2012]
Adaptive Web Design [WebVisions Portland 2012]
 
WordCamp Thessaloniki2011 The NextWeb
WordCamp Thessaloniki2011 The NextWebWordCamp Thessaloniki2011 The NextWeb
WordCamp Thessaloniki2011 The NextWeb
 
WHAT IS HTML5? (at CSS Nite Osaka)
WHAT IS HTML5? (at CSS Nite Osaka)WHAT IS HTML5? (at CSS Nite Osaka)
WHAT IS HTML5? (at CSS Nite Osaka)
 
WHAT IS HTML5?(20100510)
WHAT IS HTML5?(20100510)WHAT IS HTML5?(20100510)
WHAT IS HTML5?(20100510)
 
Progressive Enhancement & Mobile [Funka 2012]
Progressive Enhancement & Mobile [Funka 2012]Progressive Enhancement & Mobile [Funka 2012]
Progressive Enhancement & Mobile [Funka 2012]
 
Crafting Rich Experiences with Progressive Enhancement [WebVisions 2011]
Crafting Rich Experiences with Progressive Enhancement [WebVisions 2011]Crafting Rich Experiences with Progressive Enhancement [WebVisions 2011]
Crafting Rich Experiences with Progressive Enhancement [WebVisions 2011]
 
Familiar HTML5 - 事例とサンプルコードから学ぶ 身近で普通に使わているHTML5
Familiar HTML5 - 事例とサンプルコードから学ぶ 身近で普通に使わているHTML5Familiar HTML5 - 事例とサンプルコードから学ぶ 身近で普通に使わているHTML5
Familiar HTML5 - 事例とサンプルコードから学ぶ 身近で普通に使わているHTML5
 
HiUED 前端/web 發展和體驗
HiUED 前端/web 發展和體驗HiUED 前端/web 發展和體驗
HiUED 前端/web 發展和體驗
 
HTML5와 모바일
HTML5와 모바일HTML5와 모바일
HTML5와 모바일
 
The Rich Standard: Getting Familiar with HTML5
The Rich Standard: Getting Familiar with HTML5The Rich Standard: Getting Familiar with HTML5
The Rich Standard: Getting Familiar with HTML5
 
Web Development for UX Designers
Web Development for UX DesignersWeb Development for UX Designers
Web Development for UX Designers
 
Wordcamp Thessaloniki 2011 The Nextweb
Wordcamp Thessaloniki 2011 The NextwebWordcamp Thessaloniki 2011 The Nextweb
Wordcamp Thessaloniki 2011 The Nextweb
 
Html5
Html5Html5
Html5
 
내꺼내꺼
내꺼내꺼내꺼내꺼
내꺼내꺼
 
HTML5 Intoduction for Web Developers
HTML5 Intoduction for Web DevelopersHTML5 Intoduction for Web Developers
HTML5 Intoduction for Web Developers
 

Más de Aaron Gustafson

Delivering Critical Information and Services [JavaScript & Friends 2021]
Delivering Critical Information and Services [JavaScript & Friends 2021]Delivering Critical Information and Services [JavaScript & Friends 2021]
Delivering Critical Information and Services [JavaScript & Friends 2021]Aaron Gustafson
 
Adapting to Reality [Guest Lecture, March 2021]
Adapting to Reality [Guest Lecture, March 2021]Adapting to Reality [Guest Lecture, March 2021]
Adapting to Reality [Guest Lecture, March 2021]Aaron Gustafson
 
Designing the Conversation [Beyond Tellerrand 2019]
Designing the Conversation [Beyond Tellerrand 2019]Designing the Conversation [Beyond Tellerrand 2019]
Designing the Conversation [Beyond Tellerrand 2019]Aaron Gustafson
 
Getting Started with Progressive Web Apps [Beyond Tellerrand 2019]
Getting Started with Progressive Web Apps [Beyond Tellerrand 2019]Getting Started with Progressive Web Apps [Beyond Tellerrand 2019]
Getting Started with Progressive Web Apps [Beyond Tellerrand 2019]Aaron Gustafson
 
Progressive Web Apps: Where Do I Begin?
Progressive Web Apps: Where Do I Begin?Progressive Web Apps: Where Do I Begin?
Progressive Web Apps: Where Do I Begin?Aaron Gustafson
 
Media in the Age of PWAs [ImageCon 2019]
Media in the Age of PWAs [ImageCon 2019]Media in the Age of PWAs [ImageCon 2019]
Media in the Age of PWAs [ImageCon 2019]Aaron Gustafson
 
Adapting to Reality [Starbucks Lunch & Learn]
Adapting to Reality [Starbucks Lunch & Learn]Adapting to Reality [Starbucks Lunch & Learn]
Adapting to Reality [Starbucks Lunch & Learn]Aaron Gustafson
 
Conversational Semantics for the Web [CascadiaJS 2018]
Conversational Semantics for the Web [CascadiaJS 2018]Conversational Semantics for the Web [CascadiaJS 2018]
Conversational Semantics for the Web [CascadiaJS 2018]Aaron Gustafson
 
Better Performance === Greater Accessibility [Inclusive Design 24 2018]
Better Performance === Greater Accessibility [Inclusive Design 24 2018]Better Performance === Greater Accessibility [Inclusive Design 24 2018]
Better Performance === Greater Accessibility [Inclusive Design 24 2018]Aaron Gustafson
 
PWA: Where Do I Begin? [Microsoft Ignite 2018]
PWA: Where Do I Begin? [Microsoft Ignite 2018]PWA: Where Do I Begin? [Microsoft Ignite 2018]
PWA: Where Do I Begin? [Microsoft Ignite 2018]Aaron Gustafson
 
Designing the Conversation [Concatenate 2018]
Designing the Conversation [Concatenate 2018]Designing the Conversation [Concatenate 2018]
Designing the Conversation [Concatenate 2018]Aaron Gustafson
 
Designing the Conversation [Accessibility DC 2018]
Designing the Conversation [Accessibility DC 2018]Designing the Conversation [Accessibility DC 2018]
Designing the Conversation [Accessibility DC 2018]Aaron Gustafson
 
Performance as User Experience [AEADC 2018]
Performance as User Experience [AEADC 2018]Performance as User Experience [AEADC 2018]
Performance as User Experience [AEADC 2018]Aaron Gustafson
 
The Web Should Just Work for Everyone
The Web Should Just Work for EveryoneThe Web Should Just Work for Everyone
The Web Should Just Work for EveryoneAaron Gustafson
 
Performance as User Experience [AEA SEA 2018]
Performance as User Experience [AEA SEA 2018]Performance as User Experience [AEA SEA 2018]
Performance as User Experience [AEA SEA 2018]Aaron Gustafson
 
Performance as User Experience [An Event Apart Denver 2017]
Performance as User Experience [An Event Apart Denver 2017]Performance as User Experience [An Event Apart Denver 2017]
Performance as User Experience [An Event Apart Denver 2017]Aaron Gustafson
 
Advanced Design Methods 1, Day 2
Advanced Design Methods 1, Day 2Advanced Design Methods 1, Day 2
Advanced Design Methods 1, Day 2Aaron Gustafson
 
Advanced Design Methods 1, Day 1
Advanced Design Methods 1, Day 1Advanced Design Methods 1, Day 1
Advanced Design Methods 1, Day 1Aaron Gustafson
 
Designing the Conversation [Paris Web 2017]
Designing the Conversation [Paris Web 2017]Designing the Conversation [Paris Web 2017]
Designing the Conversation [Paris Web 2017]Aaron Gustafson
 
Exploring Adaptive Interfaces [Generate 2017]
Exploring Adaptive Interfaces [Generate 2017]Exploring Adaptive Interfaces [Generate 2017]
Exploring Adaptive Interfaces [Generate 2017]Aaron Gustafson
 

Más de Aaron Gustafson (20)

Delivering Critical Information and Services [JavaScript & Friends 2021]
Delivering Critical Information and Services [JavaScript & Friends 2021]Delivering Critical Information and Services [JavaScript & Friends 2021]
Delivering Critical Information and Services [JavaScript & Friends 2021]
 
Adapting to Reality [Guest Lecture, March 2021]
Adapting to Reality [Guest Lecture, March 2021]Adapting to Reality [Guest Lecture, March 2021]
Adapting to Reality [Guest Lecture, March 2021]
 
Designing the Conversation [Beyond Tellerrand 2019]
Designing the Conversation [Beyond Tellerrand 2019]Designing the Conversation [Beyond Tellerrand 2019]
Designing the Conversation [Beyond Tellerrand 2019]
 
Getting Started with Progressive Web Apps [Beyond Tellerrand 2019]
Getting Started with Progressive Web Apps [Beyond Tellerrand 2019]Getting Started with Progressive Web Apps [Beyond Tellerrand 2019]
Getting Started with Progressive Web Apps [Beyond Tellerrand 2019]
 
Progressive Web Apps: Where Do I Begin?
Progressive Web Apps: Where Do I Begin?Progressive Web Apps: Where Do I Begin?
Progressive Web Apps: Where Do I Begin?
 
Media in the Age of PWAs [ImageCon 2019]
Media in the Age of PWAs [ImageCon 2019]Media in the Age of PWAs [ImageCon 2019]
Media in the Age of PWAs [ImageCon 2019]
 
Adapting to Reality [Starbucks Lunch & Learn]
Adapting to Reality [Starbucks Lunch & Learn]Adapting to Reality [Starbucks Lunch & Learn]
Adapting to Reality [Starbucks Lunch & Learn]
 
Conversational Semantics for the Web [CascadiaJS 2018]
Conversational Semantics for the Web [CascadiaJS 2018]Conversational Semantics for the Web [CascadiaJS 2018]
Conversational Semantics for the Web [CascadiaJS 2018]
 
Better Performance === Greater Accessibility [Inclusive Design 24 2018]
Better Performance === Greater Accessibility [Inclusive Design 24 2018]Better Performance === Greater Accessibility [Inclusive Design 24 2018]
Better Performance === Greater Accessibility [Inclusive Design 24 2018]
 
PWA: Where Do I Begin? [Microsoft Ignite 2018]
PWA: Where Do I Begin? [Microsoft Ignite 2018]PWA: Where Do I Begin? [Microsoft Ignite 2018]
PWA: Where Do I Begin? [Microsoft Ignite 2018]
 
Designing the Conversation [Concatenate 2018]
Designing the Conversation [Concatenate 2018]Designing the Conversation [Concatenate 2018]
Designing the Conversation [Concatenate 2018]
 
Designing the Conversation [Accessibility DC 2018]
Designing the Conversation [Accessibility DC 2018]Designing the Conversation [Accessibility DC 2018]
Designing the Conversation [Accessibility DC 2018]
 
Performance as User Experience [AEADC 2018]
Performance as User Experience [AEADC 2018]Performance as User Experience [AEADC 2018]
Performance as User Experience [AEADC 2018]
 
The Web Should Just Work for Everyone
The Web Should Just Work for EveryoneThe Web Should Just Work for Everyone
The Web Should Just Work for Everyone
 
Performance as User Experience [AEA SEA 2018]
Performance as User Experience [AEA SEA 2018]Performance as User Experience [AEA SEA 2018]
Performance as User Experience [AEA SEA 2018]
 
Performance as User Experience [An Event Apart Denver 2017]
Performance as User Experience [An Event Apart Denver 2017]Performance as User Experience [An Event Apart Denver 2017]
Performance as User Experience [An Event Apart Denver 2017]
 
Advanced Design Methods 1, Day 2
Advanced Design Methods 1, Day 2Advanced Design Methods 1, Day 2
Advanced Design Methods 1, Day 2
 
Advanced Design Methods 1, Day 1
Advanced Design Methods 1, Day 1Advanced Design Methods 1, Day 1
Advanced Design Methods 1, Day 1
 
Designing the Conversation [Paris Web 2017]
Designing the Conversation [Paris Web 2017]Designing the Conversation [Paris Web 2017]
Designing the Conversation [Paris Web 2017]
 
Exploring Adaptive Interfaces [Generate 2017]
Exploring Adaptive Interfaces [Generate 2017]Exploring Adaptive Interfaces [Generate 2017]
Exploring Adaptive Interfaces [Generate 2017]
 

Último

Time Series Foundation Models - current state and future directions
Time Series Foundation Models - current state and future directionsTime Series Foundation Models - current state and future directions
Time Series Foundation Models - current state and future directionsNathaniel Shimoni
 
Sample pptx for embedding into website for demo
Sample pptx for embedding into website for demoSample pptx for embedding into website for demo
Sample pptx for embedding into website for demoHarshalMandlekar2
 
A Deep Dive on Passkeys: FIDO Paris Seminar.pptx
A Deep Dive on Passkeys: FIDO Paris Seminar.pptxA Deep Dive on Passkeys: FIDO Paris Seminar.pptx
A Deep Dive on Passkeys: FIDO Paris Seminar.pptxLoriGlavin3
 
What's New in Teams Calling, Meetings and Devices March 2024
What's New in Teams Calling, Meetings and Devices March 2024What's New in Teams Calling, Meetings and Devices March 2024
What's New in Teams Calling, Meetings and Devices March 2024Stephanie Beckett
 
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)Mark Simos
 
"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr Bagan"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr BaganFwdays
 
DevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache MavenDevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache MavenHervé Boutemy
 
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024BookNet Canada
 
Moving Beyond Passwords: FIDO Paris Seminar.pdf
Moving Beyond Passwords: FIDO Paris Seminar.pdfMoving Beyond Passwords: FIDO Paris Seminar.pdf
Moving Beyond Passwords: FIDO Paris Seminar.pdfLoriGlavin3
 
"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii SoldatenkoFwdays
 
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek SchlawackFwdays
 
DSPy a system for AI to Write Prompts and Do Fine Tuning
DSPy a system for AI to Write Prompts and Do Fine TuningDSPy a system for AI to Write Prompts and Do Fine Tuning
DSPy a system for AI to Write Prompts and Do Fine TuningLars Bell
 
Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptx
Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptxUse of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptx
Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptxLoriGlavin3
 
Generative AI for Technical Writer or Information Developers
Generative AI for Technical Writer or Information DevelopersGenerative AI for Technical Writer or Information Developers
Generative AI for Technical Writer or Information DevelopersRaghuram Pandurangan
 
DevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsDevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsSergiu Bodiu
 
How to write a Business Continuity Plan
How to write a Business Continuity PlanHow to write a Business Continuity Plan
How to write a Business Continuity PlanDatabarracks
 
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024BookNet Canada
 
Unraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdfUnraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdfAlex Barbosa Coqueiro
 
The Ultimate Guide to Choosing WordPress Pros and Cons
The Ultimate Guide to Choosing WordPress Pros and ConsThe Ultimate Guide to Choosing WordPress Pros and Cons
The Ultimate Guide to Choosing WordPress Pros and ConsPixlogix Infotech
 
Rise of the Machines: Known As Drones...
Rise of the Machines: Known As Drones...Rise of the Machines: Known As Drones...
Rise of the Machines: Known As Drones...Rick Flair
 

Último (20)

Time Series Foundation Models - current state and future directions
Time Series Foundation Models - current state and future directionsTime Series Foundation Models - current state and future directions
Time Series Foundation Models - current state and future directions
 
Sample pptx for embedding into website for demo
Sample pptx for embedding into website for demoSample pptx for embedding into website for demo
Sample pptx for embedding into website for demo
 
A Deep Dive on Passkeys: FIDO Paris Seminar.pptx
A Deep Dive on Passkeys: FIDO Paris Seminar.pptxA Deep Dive on Passkeys: FIDO Paris Seminar.pptx
A Deep Dive on Passkeys: FIDO Paris Seminar.pptx
 
What's New in Teams Calling, Meetings and Devices March 2024
What's New in Teams Calling, Meetings and Devices March 2024What's New in Teams Calling, Meetings and Devices March 2024
What's New in Teams Calling, Meetings and Devices March 2024
 
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
 
"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr Bagan"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr Bagan
 
DevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache MavenDevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache Maven
 
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
 
Moving Beyond Passwords: FIDO Paris Seminar.pdf
Moving Beyond Passwords: FIDO Paris Seminar.pdfMoving Beyond Passwords: FIDO Paris Seminar.pdf
Moving Beyond Passwords: FIDO Paris Seminar.pdf
 
"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko
 
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
 
DSPy a system for AI to Write Prompts and Do Fine Tuning
DSPy a system for AI to Write Prompts and Do Fine TuningDSPy a system for AI to Write Prompts and Do Fine Tuning
DSPy a system for AI to Write Prompts and Do Fine Tuning
 
Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptx
Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptxUse of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptx
Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptx
 
Generative AI for Technical Writer or Information Developers
Generative AI for Technical Writer or Information DevelopersGenerative AI for Technical Writer or Information Developers
Generative AI for Technical Writer or Information Developers
 
DevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsDevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platforms
 
How to write a Business Continuity Plan
How to write a Business Continuity PlanHow to write a Business Continuity Plan
How to write a Business Continuity Plan
 
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
 
Unraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdfUnraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdf
 
The Ultimate Guide to Choosing WordPress Pros and Cons
The Ultimate Guide to Choosing WordPress Pros and ConsThe Ultimate Guide to Choosing WordPress Pros and Cons
The Ultimate Guide to Choosing WordPress Pros and Cons
 
Rise of the Machines: Known As Drones...
Rise of the Machines: Known As Drones...Rise of the Machines: Known As Drones...
Rise of the Machines: Known As Drones...
 

Progressive Enhancement Explained