progressive eenhancement [eeci 2011]

151
Progressive nhancement by Aaron Gustafson @aarongustafson http://slideshare.net/AaronGustafson

Upload: aaron-gustafson

Post on 27-Jan-2015

110 views

Category:

Technology


3 download

Tags:

DESCRIPTION

If you’ve been working on the web for any amount of time, you’ve likely heard (or even used) the term “progressive enhancement” before. As you probably know, it is the gold standard of how to approach web design. But what is progressive enhancement really? What does it mean? How does it work? And how does it fit into our workflow in a time of rapidly evolving languages and browsers? In this session, Aaron Gustafson will answer all of these questions and provide concrete takeaways that will help you improve your web design skills and your mastery of progressive enhancement in ExpressionEngine.

TRANSCRIPT

Page 1: Progressive EEnhancement [EECI 2011]

Progressive nhancement

by Aaron Gustafson@aarongustafsonhttp://slideshare.net/AaronGustafson

Page 2: Progressive EEnhancement [EECI 2011]

?

Page 3: Progressive EEnhancement [EECI 2011]

TECHNOLOGICALRESTRICTIONS

Page 4: Progressive EEnhancement [EECI 2011]
Page 5: Progressive EEnhancement [EECI 2011]

MCMLXXVII(that’s 1977)

Page 6: Progressive EEnhancement [EECI 2011]
Page 7: Progressive EEnhancement [EECI 2011]
Page 8: Progressive EEnhancement [EECI 2011]
Page 9: Progressive EEnhancement [EECI 2011]
Page 10: Progressive EEnhancement [EECI 2011]
Page 11: Progressive EEnhancement [EECI 2011]
Page 12: Progressive EEnhancement [EECI 2011]
Page 13: Progressive EEnhancement [EECI 2011]

HTML CSS

Page 14: Progressive EEnhancement [EECI 2011]

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

Page 15: Progressive EEnhancement [EECI 2011]
Page 16: Progressive EEnhancement [EECI 2011]
Page 17: Progressive EEnhancement [EECI 2011]
Page 18: Progressive EEnhancement [EECI 2011]

BROWSERS IGNORE WHAT

THEY DON’T UNDERSTAND

Page 19: Progressive EEnhancement [EECI 2011]

GRACEFULDEGRADATION

Page 20: Progressive EEnhancement [EECI 2011]

MODERN BROWSERS

OLDER BROWSERS

Page 21: Progressive EEnhancement [EECI 2011]

MODERN BROWSERS

OLDER BROWSERS

Page 22: Progressive EEnhancement [EECI 2011]

PROGRESSIVE ENHANCEMENT

Page 23: Progressive EEnhancement [EECI 2011]

CONTENT

Page 24: Progressive EEnhancement [EECI 2011]
Page 25: Progressive EEnhancement [EECI 2011]

ACCESSIBILITY

Page 26: Progressive EEnhancement [EECI 2011]

“SPECIAL NEEDS”

Page 27: Progressive EEnhancement [EECI 2011]

CAN BECONTEXTUAL

“SPECIAL NEEDS”

Page 28: Progressive EEnhancement [EECI 2011]
Page 29: Progressive EEnhancement [EECI 2011]

GRACEFUL DEGRADATION PROGRESSIVEENHANCEMENT

Page 30: Progressive EEnhancement [EECI 2011]

OOOH SHINY!,

Page 31: Progressive EEnhancement [EECI 2011]

PROGRESSIVE ENHANCEMENT

ISN’T ABOUT BROWSERS

Page 32: Progressive EEnhancement [EECI 2011]

BROWSERS AND TECHNOLOGIES COME AND GO

Page 33: Progressive EEnhancement [EECI 2011]

DON’T LOSE SIGHT OF

YOUR USERS

Page 34: Progressive EEnhancement [EECI 2011]

BASIC ADVANCED

Use

r Exp

erie

nce

Browser Capabilities

Page 35: Progressive EEnhancement [EECI 2011]

BASIC ADVANCED

Use

r Exp

erie

nce

Browser Capabilities

Content

Page 36: Progressive EEnhancement [EECI 2011]

BASIC ADVANCED

Use

r Exp

erie

nce

Browser Capabilities

Content

Semantics

Page 37: Progressive EEnhancement [EECI 2011]

BASIC ADVANCED

Use

r Exp

erie

nce

Browser Capabilities

Content

Semantics

Design

Page 38: Progressive EEnhancement [EECI 2011]

BASIC ADVANCED

Use

r Exp

erie

nce

Browser Capabilities

Content

Semantics

Design

Interactivity

Page 39: Progressive EEnhancement [EECI 2011]

BASIC ADVANCED

Use

r Exp

erie

nce

Browser Capabilities

Content

Semantics

Design

Interactivity

Accessibility

Page 40: Progressive EEnhancement [EECI 2011]

BASIC ADVANCED

Use

r Exp

erie

nce

Browser Capabilities

Text & HTTP

HTML

CSS

JavaScript

ARIA

Page 41: Progressive EEnhancement [EECI 2011]

Content

Page 42: Progressive EEnhancement [EECI 2011]

Contentis WHY

we build websites

Page 43: Progressive EEnhancement [EECI 2011]

Clear, well-written prose is key.

Page 44: Progressive EEnhancement [EECI 2011]

Don’t put up roadblocks.

Page 45: Progressive EEnhancement [EECI 2011]

Semantics

Page 46: Progressive EEnhancement [EECI 2011]
Page 47: Progressive EEnhancement [EECI 2011]

Progressive EEnhancement

EECI - October 2011

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>

46

Page 48: Progressive EEnhancement [EECI 2011]

Progressive EEnhancement

EECI - October 2011

Fault toleranceHTML5 introduces several reallyuseful 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.

47

Page 49: Progressive EEnhancement [EECI 2011]

Progressive EEnhancement

EECI - October 2011

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>

48

Page 50: Progressive EEnhancement [EECI 2011]

Progressive EEnhancement

EECI - October 2011

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>

49

Page 51: Progressive EEnhancement [EECI 2011]

Progressive EEnhancement

EECI - October 2011

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

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

50

Fault tolerance

Page 52: Progressive EEnhancement [EECI 2011]

Ad-hocSemantics

Page 53: Progressive EEnhancement [EECI 2011]

Progressive EEnhancement

Classi!cation

Page 54: Progressive EEnhancement [EECI 2011]

Progressive EEnhancement

Identi!cation

Page 55: Progressive EEnhancement [EECI 2011]
Page 56: Progressive EEnhancement [EECI 2011]
Page 57: Progressive EEnhancement [EECI 2011]

Progressive EEnhancement

EECI - October 2011

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>

56

Page 58: Progressive EEnhancement [EECI 2011]
Page 59: Progressive EEnhancement [EECI 2011]
Page 60: Progressive EEnhancement [EECI 2011]

Progressive EEnhancement

EECI - October 2011

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>

59

Page 61: Progressive EEnhancement [EECI 2011]

Readability

Page 62: Progressive EEnhancement [EECI 2011]

Progressive EEnhancement

EECI - October 2011

EE/CI helpersCI Microformats (helper)hcard, rel-licensehttp://codeigniter.com/wiki/microformats

VZ Address (!eldtype)hcardhttps://github.com/elivz/vz_address.ee_addon

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

61

Page 63: Progressive EEnhancement [EECI 2011]

Design

Page 64: Progressive EEnhancement [EECI 2011]

Progressive EEnhancement

EECI - October 2011

p { color: red;}

Parsing errors

65

Page 65: Progressive EEnhancement [EECI 2011]

Progressive EEnhancement

EECI - October 2011

p { color: red;}

Parsing errors

65

Page 66: Progressive EEnhancement [EECI 2011]

Progressive EEnhancement

EECI - October 2011

Parsing errors

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

66

Page 67: Progressive EEnhancement [EECI 2011]

Progressive EEnhancement

EECI - October 2011

Parsing errors

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

66

Page 68: Progressive EEnhancement [EECI 2011]

Progressive EEnhancement

EECI - October 2011

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

67

Page 69: Progressive EEnhancement [EECI 2011]

Progressive EEnhancement

EECI - October 2011

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

68

Page 70: Progressive EEnhancement [EECI 2011]

Progressive EEnhancement

EECI - October 2011

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

69

Page 71: Progressive EEnhancement [EECI 2011]

#intro { /* Basic Layout */}

/* ... */

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

Page 72: Progressive EEnhancement [EECI 2011]

#intro { /* Basic Layout */}

/* ... */

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

Page 73: Progressive EEnhancement [EECI 2011]

Progressive EEnhancement

EECI - October 2011

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

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

72

Page 74: Progressive EEnhancement [EECI 2011]

Progressive EEnhancement

EECI - October 2011

Organization

design

73

Page 75: Progressive EEnhancement [EECI 2011]

Progressive EEnhancement

EECI - October 2011

Organization

layout

type color

74

Page 76: Progressive EEnhancement [EECI 2011]

Progressive EEnhancement

EECI - October 2011

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);}

75

Page 77: Progressive EEnhancement [EECI 2011]

Progressive EEnhancement

EECI - October 2011

Organization

type.css

layout.css

color.css

76

Page 78: Progressive EEnhancement [EECI 2011]

Progressive EEnhancement

EECI - October 2011

Organization

main.css

type.css

layout.css

color.css

76

Page 79: Progressive EEnhancement [EECI 2011]

Progressive EEnhancement

EECI - October 2011

Organization# SetupRewriteEngine onRewriteBase /

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

77

Page 80: Progressive EEnhancement [EECI 2011]

Progressive EEnhancement

EECI - October 2011

Organization

{embed="styles/typography"}

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

{embed="styles/color"}

78

Page 81: Progressive EEnhancement [EECI 2011]

Progressive EEnhancement

EECI - October 2011

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

79

Page 82: Progressive EEnhancement [EECI 2011]

Progressive EEnhancement

EECI - October 2011

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

80

Page 83: Progressive EEnhancement [EECI 2011]

Progressive EEnhancement

EECI - October 2011

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

81

Page 84: Progressive EEnhancement [EECI 2011]

Progressive EEnhancement

EECI - October 2011

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) { /* … */}

82

Page 85: Progressive EEnhancement [EECI 2011]
Page 86: Progressive EEnhancement [EECI 2011]
Page 87: Progressive EEnhancement [EECI 2011]
Page 88: Progressive EEnhancement [EECI 2011]
Page 89: Progressive EEnhancement [EECI 2011]

Progressive EEnhancement

EECI - October 2011

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

87

Page 90: Progressive EEnhancement [EECI 2011]

Progressive EEnhancement

EECI - October 2011

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); }

}

88

Page 91: Progressive EEnhancement [EECI 2011]

Interactivity

Page 92: Progressive EEnhancement [EECI 2011]

Photo credit: spike55151

Page 93: Progressive EEnhancement [EECI 2011]

Progressive EEnhancement

EECI - October 2011

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>

93

Page 94: Progressive EEnhancement [EECI 2011]

Progressive EEnhancement

EECI - October 2011

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

94

Page 95: Progressive EEnhancement [EECI 2011]

Photo credit: Giando

Page 96: Progressive EEnhancement [EECI 2011]

Progressive EEnhancement

EECI - October 2011

Event listenerswindow.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 serveranchors[i].onclick = function(){

newWin( this.href );};

}}

}96

Page 97: Progressive EEnhancement [EECI 2011]

Photo credit: hebedesign

Page 98: Progressive EEnhancement [EECI 2011]

Progressive EEnhancement

EECI - October 2011

Listen and delegatedocument

.getElementsByTagName( 'body' )[0].onclick = clickDelegator;

function clickDelegator( e ){

e = ( e ) ? e : event;var el = e.target || e.srcElement;// external linksif ( el.nodeName.toLowerCase() == 'a' &&

el.getAttribute( 'rel' ) == 'external' ){

newWin( el.href );}

}

98

Page 99: Progressive EEnhancement [EECI 2011]

Photo credit: ambery

Page 100: Progressive EEnhancement [EECI 2011]
Page 101: Progressive EEnhancement [EECI 2011]
Page 102: Progressive EEnhancement [EECI 2011]
Page 103: Progressive EEnhancement [EECI 2011]
Page 104: Progressive EEnhancement [EECI 2011]
Page 105: Progressive EEnhancement [EECI 2011]

Progressive EEnhancement

EECI - October 2011

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}

104

Page 106: Progressive EEnhancement [EECI 2011]

Progressive EEnhancement

EECI - October 2011

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

105

Page 107: Progressive EEnhancement [EECI 2011]

Progressive EEnhancement

EECI - October 2011

Anchor-include pattern$.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 ); }); } });};

https://gist.github.com/b976b67e88ffbfc9f125

106

Page 108: Progressive EEnhancement [EECI 2011]

Progressive EEnhancement

EECI - October 2011

Replace:

Before:

After:

Anchor-include pattern

<a data-replace="articles/latest/fragment" href="...">Latest Articles</a>

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

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

107

Page 109: Progressive EEnhancement [EECI 2011]

Progressive EEnhancement

EECI - October 2011

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

108

Page 110: Progressive EEnhancement [EECI 2011]

Progressive EEnhancement

Media Queries

Page 111: Progressive EEnhancement [EECI 2011]

Progressive EEnhancement

EECI - October 2011

Mobile interfaces

110

Page 112: Progressive EEnhancement [EECI 2011]

Progressive EEnhancement

EECI - October 2011

Swapping contentvar 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'; }}

111

Page 113: Progressive EEnhancement [EECI 2011]

Accessibility

Page 114: Progressive EEnhancement [EECI 2011]
Page 115: Progressive EEnhancement [EECI 2011]

Progressive EEnhancement

EECI - October 2011

What is it?

116

Page 116: Progressive EEnhancement [EECI 2011]

Progressive EEnhancement

EECI - October 2011

What is it?

<button>Tweet</button>

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

<button>Tweet</button>

116

Page 117: Progressive EEnhancement [EECI 2011]

Progressive EEnhancement

EECI - October 2011

What is it?

<button>Tweet</button>

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

116

Page 118: Progressive EEnhancement [EECI 2011]

Progressive EEnhancement

EECI - October 2011

What is it?

117

Page 119: Progressive EEnhancement [EECI 2011]

Progressive EEnhancement

EECI - October 2011

What is it?

<button>Search Mail</button>

<div>Search Mail</div>

<button>Search Mail</button>

117

Page 120: Progressive EEnhancement [EECI 2011]

Progressive EEnhancement

EECI - October 2011

What is it?

<button>Search Mail</button>

<div>Search Mail</div>

117

Page 121: Progressive EEnhancement [EECI 2011]

Progressive EEnhancement

EECI - October 2011

ARIA maps the OS to the web

118

Page 122: Progressive EEnhancement [EECI 2011]

Semantics+

Page 123: Progressive EEnhancement [EECI 2011]

Progressive EEnhancement

EECI - October 2011

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

120

Page 124: Progressive EEnhancement [EECI 2011]
Page 125: Progressive EEnhancement [EECI 2011]

<header role="banner">

Page 126: Progressive EEnhancement [EECI 2011]

<nav role="navigation">

Page 127: Progressive EEnhancement [EECI 2011]

<form role="search">

Page 128: Progressive EEnhancement [EECI 2011]

<section role="main">

Page 129: Progressive EEnhancement [EECI 2011]

<footer role="contentinfo">

Page 130: Progressive EEnhancement [EECI 2011]

<nav role="navigation">

Page 131: Progressive EEnhancement [EECI 2011]

Progressive EEnhancement

EECI - October 2011

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

128

Page 132: Progressive EEnhancement [EECI 2011]
Page 133: Progressive EEnhancement [EECI 2011]

Progressive EEnhancement

EECI - October 2011

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>

130

Page 134: Progressive EEnhancement [EECI 2011]

Progressive EEnhancement

EECI - October 2011

What is it?

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

131

Page 135: Progressive EEnhancement [EECI 2011]

Progressive EEnhancement

EECI - October 2011

What is it?

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

131

Page 136: Progressive EEnhancement [EECI 2011]

Progressive EEnhancement

EECI - October 2011 132

Page 137: Progressive EEnhancement [EECI 2011]
Page 138: Progressive EEnhancement [EECI 2011]

Progressive EEnhancement

EECI - October 2011

What’s happening?

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

B(off)

B(on)

134

Page 139: Progressive EEnhancement [EECI 2011]

Progressive EEnhancement

EECI - October 2011

What’s happening?

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

B(off)

B(on)

135

Page 140: Progressive EEnhancement [EECI 2011]

Progressive EEnhancement

EECI - October 2011

What’s happening?

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

B(off)

B(on)

136

Page 141: Progressive EEnhancement [EECI 2011]
Page 142: Progressive EEnhancement [EECI 2011]

Progressive EEnhancement

EECI - October 2011

Hey! Over here!

138

Page 143: Progressive EEnhancement [EECI 2011]

Progressive EEnhancement

EECI - October 2011

Hey! Over here!

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

139

Page 144: Progressive EEnhancement [EECI 2011]

Progressive EEnhancement

EECI - October 2011

Hey! Over here!

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

140

Page 145: Progressive EEnhancement [EECI 2011]

Progressive EEnhancement

EECI - October 2011

Hey! Over here!

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

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

141

Page 146: Progressive EEnhancement [EECI 2011]

Progressive EEnhancement

EECI - October 2011

Hey! Over here!

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

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

142

Page 147: Progressive EEnhancement [EECI 2011]

Progressive EEnhancement

EECI - October 2011

Hey! Over here!

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

143

Page 148: Progressive EEnhancement [EECI 2011]

Progressive EEnhancement

EECI - October 2011

Hey! Over here!

144

Page 149: Progressive EEnhancement [EECI 2011]

Text & HTTP

HTML

CSS

JavaScript

ARIA

Page 151: Progressive EEnhancement [EECI 2011]

Progressive nhancementby 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 Creditsflickr.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