SlideShare ist ein Scribd-Unternehmen logo
1 von 151
Downloaden Sie, um offline zu lesen
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

Weitere ähnliche Inhalte

Ähnlich wie 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
 

Ähnlich wie 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
 

Mehr von 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
 

Mehr von 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]
 

Kürzlich hochgeladen

Take control of your SAP testing with UiPath Test Suite
Take control of your SAP testing with UiPath Test SuiteTake control of your SAP testing with UiPath Test Suite
Take control of your SAP testing with UiPath Test SuiteDianaGray10
 
Connecting the Dots for Information Discovery.pdf
Connecting the Dots for Information Discovery.pdfConnecting the Dots for Information Discovery.pdf
Connecting the Dots for Information Discovery.pdfNeo4j
 
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptx
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptxPasskey Providers and Enabling Portability: FIDO Paris Seminar.pptx
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptxLoriGlavin3
 
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptx
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptxThe Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptx
The Fit for Passkeys for Employee and Consumer Sign-ins: 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
 
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
 
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
 
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
 
Why device, WIFI, and ISP insights are crucial to supporting remote Microsoft...
Why device, WIFI, and ISP insights are crucial to supporting remote Microsoft...Why device, WIFI, and ISP insights are crucial to supporting remote Microsoft...
Why device, WIFI, and ISP insights are crucial to supporting remote Microsoft...panagenda
 
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptx
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptxThe Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptx
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptxLoriGlavin3
 
(How to Program) Paul Deitel, Harvey Deitel-Java How to Program, Early Object...
(How to Program) Paul Deitel, Harvey Deitel-Java How to Program, Early Object...(How to Program) Paul Deitel, Harvey Deitel-Java How to Program, Early Object...
(How to Program) Paul Deitel, Harvey Deitel-Java How to Program, Early Object...AliaaTarek5
 
Potential of AI (Generative AI) in Business: Learnings and Insights
Potential of AI (Generative AI) in Business: Learnings and InsightsPotential of AI (Generative AI) in Business: Learnings and Insights
Potential of AI (Generative AI) in Business: Learnings and InsightsRavi Sanghani
 
[Webinar] SpiraTest - Setting New Standards in Quality Assurance
[Webinar] SpiraTest - Setting New Standards in Quality Assurance[Webinar] SpiraTest - Setting New Standards in Quality Assurance
[Webinar] SpiraTest - Setting New Standards in Quality AssuranceInflectra
 
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
 
Decarbonising Buildings: Making a net-zero built environment a reality
Decarbonising Buildings: Making a net-zero built environment a realityDecarbonising Buildings: Making a net-zero built environment a reality
Decarbonising Buildings: Making a net-zero built environment a realityIES VE
 
Long journey of Ruby standard library at RubyConf AU 2024
Long journey of Ruby standard library at RubyConf AU 2024Long journey of Ruby standard library at RubyConf AU 2024
Long journey of Ruby standard library at RubyConf AU 2024Hiroshi SHIBATA
 
The State of Passkeys with FIDO Alliance.pptx
The State of Passkeys with FIDO Alliance.pptxThe State of Passkeys with FIDO Alliance.pptx
The State of Passkeys with FIDO Alliance.pptxLoriGlavin3
 
Unleashing Real-time Insights with ClickHouse_ Navigating the Landscape in 20...
Unleashing Real-time Insights with ClickHouse_ Navigating the Landscape in 20...Unleashing Real-time Insights with ClickHouse_ Navigating the Landscape in 20...
Unleashing Real-time Insights with ClickHouse_ Navigating the Landscape in 20...Alkin Tezuysal
 
A Journey Into the Emotions of Software Developers
A Journey Into the Emotions of Software DevelopersA Journey Into the Emotions of Software Developers
A Journey Into the Emotions of Software DevelopersNicole Novielli
 
2024 April Patch Tuesday
2024 April Patch Tuesday2024 April Patch Tuesday
2024 April Patch TuesdayIvanti
 

Kürzlich hochgeladen (20)

Take control of your SAP testing with UiPath Test Suite
Take control of your SAP testing with UiPath Test SuiteTake control of your SAP testing with UiPath Test Suite
Take control of your SAP testing with UiPath Test Suite
 
Connecting the Dots for Information Discovery.pdf
Connecting the Dots for Information Discovery.pdfConnecting the Dots for Information Discovery.pdf
Connecting the Dots for Information Discovery.pdf
 
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptx
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptxPasskey Providers and Enabling Portability: FIDO Paris Seminar.pptx
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptx
 
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptx
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptxThe Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptx
The Fit for Passkeys for Employee and Consumer Sign-ins: 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
 
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
 
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
 
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
 
Why device, WIFI, and ISP insights are crucial to supporting remote Microsoft...
Why device, WIFI, and ISP insights are crucial to supporting remote Microsoft...Why device, WIFI, and ISP insights are crucial to supporting remote Microsoft...
Why device, WIFI, and ISP insights are crucial to supporting remote Microsoft...
 
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptx
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptxThe Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptx
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptx
 
(How to Program) Paul Deitel, Harvey Deitel-Java How to Program, Early Object...
(How to Program) Paul Deitel, Harvey Deitel-Java How to Program, Early Object...(How to Program) Paul Deitel, Harvey Deitel-Java How to Program, Early Object...
(How to Program) Paul Deitel, Harvey Deitel-Java How to Program, Early Object...
 
Potential of AI (Generative AI) in Business: Learnings and Insights
Potential of AI (Generative AI) in Business: Learnings and InsightsPotential of AI (Generative AI) in Business: Learnings and Insights
Potential of AI (Generative AI) in Business: Learnings and Insights
 
[Webinar] SpiraTest - Setting New Standards in Quality Assurance
[Webinar] SpiraTest - Setting New Standards in Quality Assurance[Webinar] SpiraTest - Setting New Standards in Quality Assurance
[Webinar] SpiraTest - Setting New Standards in Quality Assurance
 
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
 
Decarbonising Buildings: Making a net-zero built environment a reality
Decarbonising Buildings: Making a net-zero built environment a realityDecarbonising Buildings: Making a net-zero built environment a reality
Decarbonising Buildings: Making a net-zero built environment a reality
 
Long journey of Ruby standard library at RubyConf AU 2024
Long journey of Ruby standard library at RubyConf AU 2024Long journey of Ruby standard library at RubyConf AU 2024
Long journey of Ruby standard library at RubyConf AU 2024
 
The State of Passkeys with FIDO Alliance.pptx
The State of Passkeys with FIDO Alliance.pptxThe State of Passkeys with FIDO Alliance.pptx
The State of Passkeys with FIDO Alliance.pptx
 
Unleashing Real-time Insights with ClickHouse_ Navigating the Landscape in 20...
Unleashing Real-time Insights with ClickHouse_ Navigating the Landscape in 20...Unleashing Real-time Insights with ClickHouse_ Navigating the Landscape in 20...
Unleashing Real-time Insights with ClickHouse_ Navigating the Landscape in 20...
 
A Journey Into the Emotions of Software Developers
A Journey Into the Emotions of Software DevelopersA Journey Into the Emotions of Software Developers
A Journey Into the Emotions of Software Developers
 
2024 April Patch Tuesday
2024 April Patch Tuesday2024 April Patch Tuesday
2024 April Patch Tuesday
 

Progressive Enhancement Explained