Download - Crafting Rich Experiences with Progressive Enhancement [Beyond Tellerrand 2011]

Transcript
Page 2: Crafting Rich Experiences with Progressive Enhancement [Beyond Tellerrand 2011]

progressive enhancement

?

Page 3: Crafting Rich Experiences with Progressive Enhancement [Beyond Tellerrand 2011]

I like an escalator because an escalator can never break,it can only become stairs.

— Mitch Hedberg

Page 4: Crafting Rich Experiences with Progressive Enhancement [Beyond Tellerrand 2011]

an electric toothbrush can never break, it can only become a toothbrush.

Page 5: Crafting Rich Experiences with Progressive Enhancement [Beyond Tellerrand 2011]

a dynamic web page can never break, it can only become a web page.

Page 6: Crafting Rich Experiences with Progressive Enhancement [Beyond Tellerrand 2011]
Page 7: Crafting Rich Experiences with Progressive Enhancement [Beyond Tellerrand 2011]

DIES IST UMSTÄNDLICH

Page 8: Crafting Rich Experiences with Progressive Enhancement [Beyond Tellerrand 2011]
Page 9: Crafting Rich Experiences with Progressive Enhancement [Beyond Tellerrand 2011]
Page 10: Crafting Rich Experiences with Progressive Enhancement [Beyond Tellerrand 2011]
Page 11: Crafting Rich Experiences with Progressive Enhancement [Beyond Tellerrand 2011]
Page 12: Crafting Rich Experiences with Progressive Enhancement [Beyond Tellerrand 2011]
Page 13: Crafting Rich Experiences with Progressive Enhancement [Beyond Tellerrand 2011]

TECHNOLOGICALRESTRICTIONS

Page 14: Crafting Rich Experiences with Progressive Enhancement [Beyond Tellerrand 2011]
Page 15: Crafting Rich Experiences with Progressive Enhancement [Beyond Tellerrand 2011]

MCMLXXVII

Page 16: Crafting Rich Experiences with Progressive Enhancement [Beyond Tellerrand 2011]

MCMLXXVII(that’s 1977)

Page 17: Crafting Rich Experiences with Progressive Enhancement [Beyond Tellerrand 2011]
Page 18: Crafting Rich Experiences with Progressive Enhancement [Beyond Tellerrand 2011]
Page 19: Crafting Rich Experiences with Progressive Enhancement [Beyond Tellerrand 2011]
Page 20: Crafting Rich Experiences with Progressive Enhancement [Beyond Tellerrand 2011]
Page 21: Crafting Rich Experiences with Progressive Enhancement [Beyond Tellerrand 2011]
Page 22: Crafting Rich Experiences with Progressive Enhancement [Beyond Tellerrand 2011]
Page 23: Crafting Rich Experiences with Progressive Enhancement [Beyond Tellerrand 2011]

HTML CSS

Page 24: Crafting Rich Experiences with Progressive Enhancement [Beyond Tellerrand 2011]

fault tolerancen. a system’s ability to continue to operate when it encounters an unexpected error.

Page 25: Crafting Rich Experiences with Progressive Enhancement [Beyond Tellerrand 2011]
Page 26: Crafting Rich Experiences with Progressive Enhancement [Beyond Tellerrand 2011]
Page 27: Crafting Rich Experiences with Progressive Enhancement [Beyond Tellerrand 2011]
Page 28: Crafting Rich Experiences with Progressive Enhancement [Beyond Tellerrand 2011]

BROWSERS IGNORE WHAT

THEY DON’T UNDERSTAND

Page 29: Crafting Rich Experiences with Progressive Enhancement [Beyond Tellerrand 2011]

GRACEFULDEGRADATION

Page 30: Crafting Rich Experiences with Progressive Enhancement [Beyond Tellerrand 2011]

MODERN BROWSERS

OLDER BROWSERS

Page 31: Crafting Rich Experiences with Progressive Enhancement [Beyond Tellerrand 2011]

MODERN BROWSERS

OLDER BROWSERS

Page 32: Crafting Rich Experiences with Progressive Enhancement [Beyond Tellerrand 2011]

PROGRESSIVE ENHANCEMENT

Page 33: Crafting Rich Experiences with Progressive Enhancement [Beyond Tellerrand 2011]

CONTENT

Page 34: Crafting Rich Experiences with Progressive Enhancement [Beyond Tellerrand 2011]
Page 35: Crafting Rich Experiences with Progressive Enhancement [Beyond Tellerrand 2011]

ACCESSIBILITY

Page 36: Crafting Rich Experiences with Progressive Enhancement [Beyond Tellerrand 2011]

“SPECIAL NEEDS”

Page 37: Crafting Rich Experiences with Progressive Enhancement [Beyond Tellerrand 2011]

CAN BECONTEXTUAL

“SPECIAL NEEDS”

Page 38: Crafting Rich Experiences with Progressive Enhancement [Beyond Tellerrand 2011]
Page 39: Crafting Rich Experiences with Progressive Enhancement [Beyond Tellerrand 2011]

GRACEFUL DEGRADATION PROGRESSIVEENHANCEMENT

Page 40: Crafting Rich Experiences with Progressive Enhancement [Beyond Tellerrand 2011]

OOOH SHINY!,

Page 41: Crafting Rich Experiences with Progressive Enhancement [Beyond Tellerrand 2011]

PROGRESSIVE ENHANCEMENT

ISN’T ABOUT BROWSERS

Page 42: Crafting Rich Experiences with Progressive Enhancement [Beyond Tellerrand 2011]

BROWSERS AND TECHNOLOGIES COME AND GO

Page 43: Crafting Rich Experiences with Progressive Enhancement [Beyond Tellerrand 2011]

DON’T LOSE SIGHT OF

YOUR USERS

Page 44: Crafting Rich Experiences with Progressive Enhancement [Beyond Tellerrand 2011]

NEWER OLDER

Use

r Exp

erie

nce

Browser Age

Graceful Degradation

Page 45: Crafting Rich Experiences with Progressive Enhancement [Beyond Tellerrand 2011]

BASIC ADVANCED

Use

r Exp

erie

nce

Browser & Device Capabilities

Progressive Enhancement

Page 46: Crafting Rich Experiences with Progressive Enhancement [Beyond Tellerrand 2011]

BASIC ADVANCED

Use

r Exp

erie

nce

Browser & Device Capabilities

Content

Page 47: Crafting Rich Experiences with Progressive Enhancement [Beyond Tellerrand 2011]

BASIC ADVANCED

Use

r Exp

erie

nce

Browser & Device Capabilities

Content

Semantics

Page 48: Crafting Rich Experiences with Progressive Enhancement [Beyond Tellerrand 2011]

BASIC ADVANCED

Use

r Exp

erie

nce

Browser & Device Capabilities

Content

Semantics

Design

Page 49: Crafting Rich Experiences with Progressive Enhancement [Beyond Tellerrand 2011]

BASIC ADVANCED

Use

r Exp

erie

nce

Browser & Device Capabilities

Content

Semantics

Design

Interactivity

Page 50: Crafting Rich Experiences with Progressive Enhancement [Beyond Tellerrand 2011]

BASIC ADVANCED

Use

r Exp

erie

nce

Browser & Device Capabilities

Content

Semantics

Design

Interactivity

Accessibility

Page 51: Crafting Rich Experiences with Progressive Enhancement [Beyond Tellerrand 2011]

BASIC ADVANCED

Use

r Exp

erie

nce

Browser & Device Capabilities

Text & HTTP

HTML

CSS

JavaScript

ARIA

Page 52: Crafting Rich Experiences with Progressive Enhancement [Beyond Tellerrand 2011]

HTML

Page 53: Crafting Rich Experiences with Progressive Enhancement [Beyond Tellerrand 2011]

HTMLHTML5

Microformats

HTML4

Page 54: Crafting Rich Experiences with Progressive Enhancement [Beyond Tellerrand 2011]

EXAMPLES

Page 55: Crafting Rich Experiences with Progressive Enhancement [Beyond Tellerrand 2011]

BEYOND TELLERRAND 2011

PE with HTML<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>

Page 56: Crafting Rich Experiences with Progressive Enhancement [Beyond Tellerrand 2011]

BEYOND TELLERRAND 2011

PE with HTML

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

Page 57: Crafting Rich Experiences with Progressive Enhancement [Beyond Tellerrand 2011]

BEYOND TELLERRAND 2011

PE with HTML<input type="date" name="dob"/>

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

Page 58: Crafting Rich Experiences with Progressive Enhancement [Beyond Tellerrand 2011]

BEYOND TELLERRAND 2011

PE with CSSp {

color: #ccc;

color: rgba( 0, 0, 0, .5 );

}

Page 59: Crafting Rich Experiences with Progressive Enhancement [Beyond Tellerrand 2011]

BEYOND TELLERRAND 2011

PE with CSShtml[lang] p {

color: #ccc;

color: rgba( 0, 0, 0, .5 );

}

Page 60: Crafting Rich Experiences with Progressive Enhancement [Beyond Tellerrand 2011]

IE6 & underMOSe

Page 61: Crafting Rich Experiences with Progressive Enhancement [Beyond Tellerrand 2011]

BEYOND TELLERRAND 2011

Fault tolerance#intro {

/* Basic Layout */

}

/* ... */

body[id=css-zen-garden] #intro {

/* Advanced Layout */

}

Page 62: Crafting Rich Experiences with Progressive Enhancement [Beyond Tellerrand 2011]

BEYOND TELLERRAND 2011

Fault tolerance#intro {

/* Basic Layout */

}

/* ... */

[foo],

#intro {

/* Advanced Layout */

}

Page 63: Crafting Rich Experiences with Progressive Enhancement [Beyond Tellerrand 2011]

BEYOND TELLERRAND 2011

PE with CSS@import 'not-for-IE7-or-below.css'

screen;

@media screen, print, refrigerator {

/* IE will get these rules */

}

Page 64: Crafting Rich Experiences with Progressive Enhancement [Beyond Tellerrand 2011]

BEYOND TELLERRAND 2011

PE with CSS@media

screen and (min-device-width:1024px)

and (max-width:989px),

screen and (max-device-width:480px),

screen and (max-device-width:480px)

and (orientation:landscape),

screen and (min-device-width:481px)

and (orientation:portrait) {

/* Layout for narrower desktop (below 990px)

or

iPhone running iOS 3 (or equivalent)

or

iPhone running iOS 4 (or equivalent) in “landscape” view

or

iPad (or equivalent) in “portrait” view */

}

Page 65: Crafting Rich Experiences with Progressive Enhancement [Beyond Tellerrand 2011]

BEYOND TELLERRAND 2011

PE with HTML & ARIA<header role=”banner”>

<h1><img src="i/logo.png"/></h1>

<nav role=”navigation”>

<ol>

<li><a href="#details">Details</a></li>

<li><a href="#schedule">Schedule</a></li>

<li><a href="#instructors">Instructors</a></li>

<li><a href="#lodging">Lodging</a></li>

<li><a href="#location">Location</a></li>

</ol>

</nav>

</header>

Page 66: Crafting Rich Experiences with Progressive Enhancement [Beyond Tellerrand 2011]

BEYOND TELLERRAND 2011

PE with JavaScript

Page 67: Crafting Rich Experiences with Progressive Enhancement [Beyond Tellerrand 2011]

BEYOND TELLERRAND 2011

PE with JavaScript

Page 68: Crafting Rich Experiences with Progressive Enhancement [Beyond Tellerrand 2011]

BEYOND TELLERRAND 2011

PE with JavaScript

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

Page 69: Crafting Rich Experiences with Progressive Enhancement [Beyond Tellerrand 2011]

BEYOND TELLERRAND 2011

PE with JavaScript

<span id="chars_left_notice" class="numeric">

<strong id="status-field-char-counter"

class="char-counter">140</strong>

</span>

Page 70: Crafting Rich Experiences with Progressive Enhancement [Beyond Tellerrand 2011]

BEYOND TELLERRAND 2011

PE with JavaScript

<span class="tweet-counter">140

<b class="hidden"> characters remaining</b></span>

.hidden {

position: absolute;

left: −999em;

}

Page 71: Crafting Rich Experiences with Progressive Enhancement [Beyond Tellerrand 2011]

BEYOND TELLERRAND 2011

PE with JavaScript

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

<span class="tweet-counter">140

<b class="hidden"> characters remaining</b></span>

Page 72: Crafting Rich Experiences with Progressive Enhancement [Beyond Tellerrand 2011]

BEYOND TELLERRAND 2011

PE with JavaScript & ARIA

<span aria-live="polite" aria-atomic="true"

class="tweet-counter">140<b class="hidden">

characters remaining</b></span>

Page 73: Crafting Rich Experiences with Progressive Enhancement [Beyond Tellerrand 2011]

BEYOND TELLERRAND 2011

PE with JavaScript & ARIA

Page 74: Crafting Rich Experiences with Progressive Enhancement [Beyond Tellerrand 2011]

BEYOND TELLERRAND 2011

PE with JavaScript & ARIA

Page 75: Crafting Rich Experiences with Progressive Enhancement [Beyond Tellerrand 2011]

BEYOND TELLERRAND 2011

PE with JavaScript & ARIA

role="application"aria-activedescendant="folder-1"

Page 76: Crafting Rich Experiences with Progressive Enhancement [Beyond Tellerrand 2011]

BEYOND TELLERRAND 2011

PE with JavaScript & ARIArole="tablist"

Page 77: Crafting Rich Experiences with Progressive Enhancement [Beyond Tellerrand 2011]

BEYOND TELLERRAND 2011

PE with JavaScript & ARIArole="tab"aria-selected="true"aria-controls="folder-1"

Page 78: Crafting Rich Experiences with Progressive Enhancement [Beyond Tellerrand 2011]

BEYOND TELLERRAND 2011

PE with JavaScript & ARIArole="tab"aria-selected="false"aria-controls="folder-4"

Page 79: Crafting Rich Experiences with Progressive Enhancement [Beyond Tellerrand 2011]

BEYOND TELLERRAND 2011

PE with JavaScript & ARIA

role="tabpanel"aria-hidden="false"aria-labelledby="folder-1-tab"

Page 80: Crafting Rich Experiences with Progressive Enhancement [Beyond Tellerrand 2011]

BEYOND TELLERRAND 2011

PE with JavaScript & ARIA

Page 81: Crafting Rich Experiences with Progressive Enhancement [Beyond Tellerrand 2011]

Text & HTTP

HTML

CSS

JavaScript

ARIA

Page 82: Crafting Rich Experiences with Progressive Enhancement [Beyond Tellerrand 2011]

Available now from

easy-readers.net

or Kelly

Page 83: Crafting Rich Experiences with Progressive Enhancement [Beyond Tellerrand 2011]

Crafting Rich Experiences withProgressive Enhancement

by Aaron Gustafson

More of the same:http://adaptivewebdesign.info

http://easy-designs.nethttp://easy-reader.net

http://aaron-gustafson.com

Slides available athttp://slideshare.net/AaronGustafson

This presentation is licensed underCreative Commons

Attribution-Noncommercial-Share Alike 3.0

flickr Photo Creditshttp://www.!ickr.com/photos/aarongustafson/galleries/72157628049759763/