exploring adaptive interfaces [generate 2017]

122
EXPLORING ADAPTIVE INTERFACES Aaron Gustafson @AaronGustafson slideshare.net/AaronGustafson

Upload: aaron-gustafson

Post on 22-Jan-2018

557 views

Category:

Technology


3 download

TRANSCRIPT

Page 1: Exploring Adaptive Interfaces [Generate 2017]

EXPLORING ADAPTIVE

INTERFACESAaron Gustafson @AaronGustafson slideshare.net/AaronGustafson

Page 2: Exploring Adaptive Interfaces [Generate 2017]

Building for the Web is hard.

© Brad Frost

Page 3: Exploring Adaptive Interfaces [Generate 2017]

Created by Vectors Marketfrom the Noun Project

640 × 480

In the beginning…

Page 4: Exploring Adaptive Interfaces [Generate 2017]

800 × 600Created by Vectors Marketfrom the Noun Project

Ok, we can go a little larger.

Page 5: Exploring Adaptive Interfaces [Generate 2017]

Created by Vectors Marketfrom the Noun Project

1024 × 768

Ok, a bit larger, but that’s it.

Page 6: Exploring Adaptive Interfaces [Generate 2017]

Created by Vectors Marketfrom the Noun Project1366 × 7681024 × 600

Created by Vectors Marketfrom the Noun Project

1280 × 800Created by Vectors Marketfrom the Noun Project800 × 600

Created by Vectors Marketfrom the Noun Project

Of course laptops…

Page 7: Exploring Adaptive Interfaces [Generate 2017]

1024 × 768Created by Vectors Marketfrom the Noun Project

The web’s “happy place”.

Page 8: Exploring Adaptive Interfaces [Generate 2017]

640 × 200

Created by Douglas Santosfrom the Noun ProjectCreated by creative outlet

from the Noun Project

240 × 240

We were ignoring mobile…

Page 9: Exploring Adaptive Interfaces [Generate 2017]

3840 × 2160320 × 480Created by Vectors Marketfrom the Noun Project

Created by Vectors Marketfrom the Noun Project

Until this happened.

Page 10: Exploring Adaptive Interfaces [Generate 2017]

Don’t even get me started on tablets.

© Brad Frost

Page 11: Exploring Adaptive Interfaces [Generate 2017]

1920 × 1080Created by Vectors Marketfrom the Noun Project

7680 × 4320Created by Vectors Marketfrom the Noun Project

But desktop is simple, right?

Page 12: Exploring Adaptive Interfaces [Generate 2017]

Chasing screensizes is clearly a

fool’s errand.

© Brad Frost

Page 13: Exploring Adaptive Interfaces [Generate 2017]

In the second quarter of 2008 we detected 71 different screen resolutions among our visitors. In the first quarter of 2014 we detected

— Jason Samuels IT Manager, National Council on Family Relations Source

“1062

One year after the iPhone

3 years ago!

Page 14: Exploring Adaptive Interfaces [Generate 2017]

“ 200In 2008, 27 screen resolutions showed up with more than 10 visits, in 2014 that number was

— Jason Samuels IT Manager, National Council on Family Relations Source

Page 15: Exploring Adaptive Interfaces [Generate 2017]

Chasing screensizes is clearly a

fool’s errand.

© Brad Frost

Page 16: Exploring Adaptive Interfaces [Generate 2017]

Designingfor screens

is hard.

© Brad Frost

Page 17: Exploring Adaptive Interfaces [Generate 2017]

And then there’s everything else.

© Brad Frost

Page 18: Exploring Adaptive Interfaces [Generate 2017]

Your content can and will go anywhere that’s connected

Created by Vectors Marketfrom the Noun Project

Created by Vectors Marketfrom the Noun Project

Created by Vectors Marketfrom the Noun Project

Created by Vectors Marketfrom the Noun Project

wearables smart tvs IoT assistants

Page 19: Exploring Adaptive Interfaces [Generate 2017]

Meaning users will need to interact in different ways

Created by Vectors Marketfrom the Noun Project

touch Created by Vectors Marketfrom the Noun Project

mouseCreated by bezier masterfrom the Noun Project

T9Created by Christopher Holm-Hansenfrom the Noun Project

eye trackingCreated by Vectors Marketfrom the Noun Project

remote

Created by Setyo Ari Wibowo

from the Noun Projectpen

Created by Vectors Marketfrom the Noun Project

keyboardCreated by Vectors Marketfrom the Noun Project

audioCreated by Vectors Marketfrom the Noun Project

gamepadCreated by Vectors Marketfrom the Noun Project

printCreated by Adriano Emerickfrom the Noun Projectbraille

Page 20: Exploring Adaptive Interfaces [Generate 2017]

Over varied networks andin changing conditions

Created by Vectors Marketfrom the Noun Project

hardlineCreated by Vectors Marketfrom the Noun Project

wifiCreated by Vectors Marketfrom the Noun Project

mobile

Created by Vectors Marketfrom the Noun Project

homesCreated by Vectors Marketfrom the Noun Project

buildingsCreated by Vectors Marketfrom the Noun Project

cars

Created by Vectors Marketfrom the Noun Project

buses Created by Vectors Marketfrom the Noun Project

trainsCreated by Vectors Marketfrom the Noun Project

airplanes

Page 21: Exploring Adaptive Interfaces [Generate 2017]

And, ultimately, our users all have different needs too.

Page 22: Exploring Adaptive Interfaces [Generate 2017]

Anyone notice I haven’t even mentionedbrowsers?

;-)

© Brad Frost

Page 23: Exploring Adaptive Interfaces [Generate 2017]

So...?!

© Brad Frost

Page 24: Exploring Adaptive Interfaces [Generate 2017]

Reality check: Nothing about our users’ experiences of the web

has ever been as homogenous

as we imagine.© Brad Frost

Page 25: Exploring Adaptive Interfaces [Generate 2017]

The challenges ofweb design today

are the same asthey were yesterday.

© Brad Frost

Page 26: Exploring Adaptive Interfaces [Generate 2017]

The web can go anywhere there’s even a temporary

network connection.

© Brad Frost

Page 27: Exploring Adaptive Interfaces [Generate 2017]

© Brad FrostPhotoCredit:romanboed

Page 28: Exploring Adaptive Interfaces [Generate 2017]

© Brad FrostPhotoCredit:Evgeni Zotov

Page 29: Exploring Adaptive Interfaces [Generate 2017]

© Brad FrostPhotoCredit:Climate Change, Agriculture and Food Security

Page 30: Exploring Adaptive Interfaces [Generate 2017]

© Brad Frost

Page 31: Exploring Adaptive Interfaces [Generate 2017]

© Brad Frost

Page 32: Exploring Adaptive Interfaces [Generate 2017]

Inclusive design creates giant ripples.

© Brad Frost

Page 34: Exploring Adaptive Interfaces [Generate 2017]

wheelchairs strollers bicycles skateboards

Page 35: Exploring Adaptive Interfaces [Generate 2017]

one arm arm injury new parent

permanent situational

Page 36: Exploring Adaptive Interfaces [Generate 2017]

one arm arm injury new parent

permanent situational

26K

Page 37: Exploring Adaptive Interfaces [Generate 2017]

one arm arm injury new parent

permanent situational

26K 13M 8M+ +

21 Million People

Page 38: Exploring Adaptive Interfaces [Generate 2017]

So how can we makeour interfaces

more adaptive?

© Brad Frost

Page 39: Exploring Adaptive Interfaces [Generate 2017]

Let’s dissectan example.

© Brad Frost

Page 40: Exploring Adaptive Interfaces [Generate 2017]

EXPLORING ADAPTIVE INTERFACES

Content Teasers

Page 41: Exploring Adaptive Interfaces [Generate 2017]

EXPLORING ADAPTIVE INTERFACES

Content Teasers

Page 42: Exploring Adaptive Interfaces [Generate 2017]

EXPLORING ADAPTIVE INTERFACES

Content Teasers

Superfluous & expensive

Nice to have

The essential nugget

Page 43: Exploring Adaptive Interfaces [Generate 2017]

EXPLORING ADAPTIVE INTERFACES

Content Teasers

ideal

minimum viable interface

Page 44: Exploring Adaptive Interfaces [Generate 2017]

EXPLORING ADAPTIVE INTERFACES

Content Teasers

ideal

minimum viable interface

Page 45: Exploring Adaptive Interfaces [Generate 2017]

EXPLORING ADAPTIVE INTERFACES

Content Teasers

ideal

minimum viable interface

Page 46: Exploring Adaptive Interfaces [Generate 2017]

EXPLORING ADAPTIVE INTERFACES

Content Teasers

ideal

minimum viable interface

Lazy load

Page 47: Exploring Adaptive Interfaces [Generate 2017]

EXPLORING ADAPTIVE INTERFACES

Content Teasers

ideal

minimum viable interface

Do we really need it?

Lazy load

Page 48: Exploring Adaptive Interfaces [Generate 2017]

EXPLORING ADAPTIVE INTERFACES

Content Teasers

new ideal

Page 49: Exploring Adaptive Interfaces [Generate 2017]

How do we planadaptive designs?

© Brad Frost

Page 50: Exploring Adaptive Interfaces [Generate 2017]

EXPLORING ADAPTIVE INTERFACES

Step by step1. Focus on what matters.

51

The essential nugget

Page 51: Exploring Adaptive Interfaces [Generate 2017]

EXPLORING ADAPTIVE INTERFACES

Step by step2. Write it out, then read it back.

53

How does this photo make you feel? Embarrassing Upsetting Saddening Bad Photo Other it’s embarrassing•

Page 52: Exploring Adaptive Interfaces [Generate 2017]

EXPLORING ADAPTIVE INTERFACES

Step by step2. Write it out, then read it back.

54

Please describe the photo It’s embarrassing It’s a bad photo of me It makes me sad

Page 53: Exploring Adaptive Interfaces [Generate 2017]

EXPLORING ADAPTIVE INTERFACES

Step by step3. Look for semantics that support 1 & 2.

55

heading a

paragraph img time

Page 54: Exploring Adaptive Interfaces [Generate 2017]

EXPLORING ADAPTIVE INTERFACES

Step by step3. Look for semantics that support 1 & 2.

56

heading (also .p-name) a (also .u-url)

paragraph(also .p-summary)

.p-author.h-card (person)

.h-entry (feed)

img (also .u-photo) time(also .dt-published)

Page 55: Exploring Adaptive Interfaces [Generate 2017]

EXPLORING ADAPTIVE INTERFACES

Step by step3. Look for semantics that support 1 & 2.

57

<scripttype="application/ld+json">{"@context":"http://schema.org","@type":"NewsArticle","headline":"MartinexcitedaboutVols’summerprogress","dateline":"Chattanooga,TN","image":["https://www.example.com/image1.jpg",],"datePublished":"2015-09-05","description":"SomeVolsareworkingoutinKnoxville…","articleBody":"THEWHOLEARTICLE"}</script>

Page 56: Exploring Adaptive Interfaces [Generate 2017]

EXPLORING ADAPTIVE INTERFACES

Step by step4. Think about how design can improve comprehension.

58

Visually the most important text

Visually tied to the headline & carries some visual weight

distinct from the content & diminished in importance

Less important & distinct from content

Page 57: Exploring Adaptive Interfaces [Generate 2017]

EXPLORING ADAPTIVE INTERFACES

Step by step5. Consider how your design choices impact the reading experience.

59

Can’t tell what the episode is called

Page 58: Exploring Adaptive Interfaces [Generate 2017]

EXPLORING ADAPTIVE INTERFACES

Step by step5. Consider how your design choices impact the reading experience.

60

Floated images crush the

text on small screens

Ouch

Page 59: Exploring Adaptive Interfaces [Generate 2017]

EXPLORING ADAPTIVE INTERFACES

6. Think about the many different ways folks might interact.

Step by step

61

Created by Vectors Marketfrom the Noun Project

touch Created by Vectors Marketfrom the Noun Project

mouseCreated by bezier masterfrom the Noun Project

T9Created by Christopher Holm-Hansenfrom the Noun Project

eye tracking Created by Vectors Marketfrom the Noun Project

remoteCreated by Setyo Ari Wibowo

from the Noun Projectpen

Created by Vectors Marketfrom the Noun Project

keyboardCreated by Vectors Marketfrom the Noun Project

gamepadCreated by Vectors Marketfrom the Noun Project

printCreated by Adriano Emerickfrom the Noun Projectbraille

Created by Vectors Marketfrom the Noun Project

audio

Page 60: Exploring Adaptive Interfaces [Generate 2017]

EXPLORING ADAPTIVE INTERFACES

6. Think about the many different ways folks might interact.

Step by step

62

touch Created by Vectors Marketfrom the Noun Project

mouseCreated by Christopher Holm-Hansenfrom the Noun Project

eye tracking

Hover?

Page 61: Exploring Adaptive Interfaces [Generate 2017]

EXPLORING ADAPTIVE INTERFACES

6. Think about the many different ways folks might interact.

Step by step

63

Created by Vectors Marketfrom the Noun Project

touch Created by Vectors Marketfrom the Noun Project

mouseCreated by bezier masterfrom the Noun Project

T9Created by Christopher Holm-Hansenfrom the Noun Project

eye tracking Created by Vectors Marketfrom the Noun Project

remoteCreated by Setyo Ari Wibowo

from the Noun Projectpen

Created by Vectors Marketfrom the Noun Project

keyboardCreated by Vectors Marketfrom the Noun Project

gamepad

Focus & target?

Created by Vectors Marketfrom the Noun Project

audio

Page 62: Exploring Adaptive Interfaces [Generate 2017]

EXPLORING ADAPTIVE INTERFACES

6. Think about the many different ways folks might interact.

Step by step

64

Created by Vectors Marketfrom the Noun Project

touch Created by Vectors Marketfrom the Noun Project

mouseCreated by Setyo Ari Wibowo

from the Noun Projectpen

Gestures?

Page 63: Exploring Adaptive Interfaces [Generate 2017]

EXPLORING ADAPTIVE INTERFACES

6. Think about the many different ways folks might interact.

Step by step

65

Created by Vectors Marketfrom the Noun Project

printCreated by Adriano Emerickfrom the Noun Projectbraille

Text expansions?

Created by Vectors Marketfrom the Noun Project

audio

Page 64: Exploring Adaptive Interfaces [Generate 2017]

EXPLORING ADAPTIVE INTERFACES

7. Map the potential experiences.

Step by step

66

Path AExperience 1Start

Path B

Experience 2

Notes

Decision point Change

Page 65: Exploring Adaptive Interfaces [Generate 2017]

EXPLORING ADAPTIVE INTERFACES

1. Focus on what matters.

2. Write it out, then read it back.

3. Look for semantics that support 1 & 2.

4. Think about how design can improve comprehension.

5. Consider how your design choices impact the reading experience.

6. Think about the many different ways folks might interact.

7. Map the potential experiences.

8. Iterate.

Step by step

68

Page 66: Exploring Adaptive Interfaces [Generate 2017]

Progressive Enhancement

Page 67: Exploring Adaptive Interfaces [Generate 2017]

Use

r Exp

erie

nce

Browser CapabilitiesBASIC ADVANCED

Page 68: Exploring Adaptive Interfaces [Generate 2017]

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

— Mitch Hedberg

Page 69: Exploring Adaptive Interfaces [Generate 2017]

Technologicalrestrictions

Page 70: Exploring Adaptive Interfaces [Generate 2017]
Page 71: Exploring Adaptive Interfaces [Generate 2017]
Page 72: Exploring Adaptive Interfaces [Generate 2017]
Page 73: Exploring Adaptive Interfaces [Generate 2017]

What matters

Page 74: Exploring Adaptive Interfaces [Generate 2017]

Let’s get adaptive.

© Brad Frost

Page 75: Exploring Adaptive Interfaces [Generate 2017]

EXPLORING ADAPTIVE INTERFACES

Content Teasers

Page 76: Exploring Adaptive Interfaces [Generate 2017]

EXPLORING ADAPTIVE INTERFACES

Content Teasers

Lazy load

Page 77: Exploring Adaptive Interfaces [Generate 2017]

EXPLORING ADAPTIVE INTERFACES

IxMap

JS?No

No imageLoad

Page 78: Exploring Adaptive Interfaces [Generate 2017]

EXPLORING ADAPTIVE INTERFACES

IxMap

JS?No

No imageLoad

Page 79: Exploring Adaptive Interfaces [Generate 2017]

EXPLORING ADAPTIVE INTERFACES

IxMap

JS?No

No imageLoad

NoYes

Verify browser width condition

Page 80: Exploring Adaptive Interfaces [Generate 2017]

EXPLORING ADAPTIVE INTERFACES

IxMap

JS?No

No imageLoad

NoYes

Verify browser width condition

Page 81: Exploring Adaptive Interfaces [Generate 2017]

EXPLORING ADAPTIVE INTERFACES

IxMap

JS?No

No imageLoad

NoYes

Verify browser width condition

Yes

Image

Adjust markup Add custom CSS

Page 82: Exploring Adaptive Interfaces [Generate 2017]

EXPLORING ADAPTIVE INTERFACES

IxMap

JS?No

No imageLoad

NoYes

Verify browser width condition

Yes

Image

Adjust markup Add custom CSS

Page 83: Exploring Adaptive Interfaces [Generate 2017]

EXPLORING ADAPTIVE INTERFACES

There is no image…<divclass="entry-image"data-image-src="/i/sample.jpg"></div>

87

Page 84: Exploring Adaptive Interfaces [Generate 2017]

EXPLORING ADAPTIVE INTERFACES

Until there is<divclass="entry-image"data-image-src="/i/sample.jpg"></div>

<divclass="entry-image"data-image-src="/i/sample.jpg"data-has-image="true"><imgalt=""src="/i/sample.jpg"/></div>

88

Page 85: Exploring Adaptive Interfaces [Generate 2017]

EXPLORING ADAPTIVE INTERFACES

CSS at rest[data-image-src]{ display:none;}

89

Page 86: Exploring Adaptive Interfaces [Generate 2017]

EXPLORING ADAPTIVE INTERFACES

CSS at play[data-image-src][data-image-loaded]{ display:block;}

90

Page 87: Exploring Adaptive Interfaces [Generate 2017]

EXPLORING ADAPTIVE INTERFACES

JS Watcherwindow.watchResize=function(callback){ varresizing; functiondone(){ clearTimeout(resizing); resizing=null; callback(); } window.onresize=function(){ if(resizing){ clearTimeout(resizing); resizing=null; } resizing=setTimeout(done,50); }; callback();};

91

Page 88: Exploring Adaptive Interfaces [Generate 2017]

EXPLORING ADAPTIVE INTERFACES

JS Watchervarbrowser_width=0;window.watchResize(function(){ browser_width= window.innerWidth|| document.body.offsetWidth;});

92

Page 89: Exploring Adaptive Interfaces [Generate 2017]

EXPLORING ADAPTIVE INTERFACES

JS Watcherwindow.watchResize(function(){ varthreshold=400, image=document.createElement('img'), paragraphs=document.getElementsByTagName('p'), i=paragraphs.length, p,loaded,src,img; if(browser_width>=threshold){ image.setAttribute('alt',''); while(i--){ p=paragraphs[i]; src=p.getAttribute('data-image-src'); loaded=p.getAttribute('data-image-loaded'); if(src!=null&&loaded==null){ img=image.cloneNode(true); img.setAttribute('src',src); p.appendChild(img); p.setAttribute('data-image-loaded',''); } } image=paragraphs=p=img=null; }});

Page 90: Exploring Adaptive Interfaces [Generate 2017]

EXPLORING ADAPTIVE INTERFACES

IxMap

JS?No

No imageLoad

NoYes

Verify browser width condition

Yes

Image

Adjust markup Add custom CSS

LIVE

Page 91: Exploring Adaptive Interfaces [Generate 2017]

EXPLORING ADAPTIVE INTERFACES

Smart CSS[data-image-src][data-image-loaded]{ display:block;}

Page 92: Exploring Adaptive Interfaces [Generate 2017]

EXPLORING ADAPTIVE INTERFACES

Smart CSS[data-image-src][data-image-loaded]{ display:block;}

@mediaonlyscreenand(min-width:400px){ [data-img-src][data-image-loaded]{ display:block; }}

Assuming that’s your threshold

Page 93: Exploring Adaptive Interfaces [Generate 2017]

EXPLORING ADAPTIVE INTERFACES

Content Teasers

Page 94: Exploring Adaptive Interfaces [Generate 2017]

EXPLORING ADAPTIVE INTERFACES

Content Teasers

Page 95: Exploring Adaptive Interfaces [Generate 2017]

EXPLORING ADAPTIVE INTERFACES

Content Teasers

Page 96: Exploring Adaptive Interfaces [Generate 2017]

EXPLORING ADAPTIVE INTERFACES

Content Teasers

Page 97: Exploring Adaptive Interfaces [Generate 2017]

EXPLORING ADAPTIVE INTERFACES

Content Teasers

Page 98: Exploring Adaptive Interfaces [Generate 2017]

EXPLORING ADAPTIVE INTERFACES

Tabbed Interface

Page 99: Exploring Adaptive Interfaces [Generate 2017]

EXPLORING ADAPTIVE INTERFACES

Traditional approach<h1>PumpkinPie</h1><divclass="container"><ulclass="tabs"><li><ahref="#">Overview</a></li><li><ahref="#">Ingredients</a></li><li><ahref="#">Directions</a></li><li><ahref="#">Nutrition</a></li></ul><divclass="section"><h2>Overview</h2><imgsrc="pie.jpg"alt=""><p>Whetheryou'rehostingafestivepartyoracasual get-togetherwithfriends,ourPumpkinPiewillmake entertainingeasy!</p><!--...--></div><!--...--></div>

Page 100: Exploring Adaptive Interfaces [Generate 2017]

EXPLORING ADAPTIVE INTERFACES

Cleaner approach<h1>PumpkinPie</h1><divclass="tabbed-interface"><h2>Overview</h2><imgsrc="pie.jpg"alt=""/><p>Whetheryou'rehostingafestivepartyoracasual get-togetherwithfriends,ourPumpkinPiewillmake entertainingeasy!</p><!--...--><h2>Ingredients</h2><ul><li>1(9<abbrtitle="inch">in</abbr>)unbakeddeep dishpiecrust</li><li>½cupwhitesugar</li><!--...--></ul><h2>Directions</h2><!--...--></div>

Page 101: Exploring Adaptive Interfaces [Generate 2017]

EXPLORING ADAPTIVE INTERFACES

Cleaner approach<h1>PumpkinPie</h1><divclass="tabbed-interface"><h2>Overview</h2><imgsrc="pie.jpg"alt=""/><p>Whetheryou'rehostingafestivepartyoracasual get-togetherwithfriends,ourPumpkinPiewillmake entertainingeasy!</p><!--...--><h2>Ingredients</h2><ul><li>1(9<abbrtitle="inch">in</abbr>)unbakeddeep dishpiecrust</li><li>½cupwhitesugar</li><!--...--></ul><h2>Directions</h2><!--...--></div>

Page 102: Exploring Adaptive Interfaces [Generate 2017]

EXPLORING ADAPTIVE INTERFACES

No JS, basic CSS

Page 103: Exploring Adaptive Interfaces [Generate 2017]

EXPLORING ADAPTIVE INTERFACES

IxMap

JS?No

LinearLoad

Page 104: Exploring Adaptive Interfaces [Generate 2017]

EXPLORING ADAPTIVE INTERFACES

IxMap

JS?No

LinearLoad

Page 105: Exploring Adaptive Interfaces [Generate 2017]

EXPLORING ADAPTIVE INTERFACES

IxMap

Yes

Tabs

Split content into sections Make tabs Assign event handlers (mouse & keyboard)

JS?No

LinearLoad

Page 106: Exploring Adaptive Interfaces [Generate 2017]

EXPLORING ADAPTIVE INTERFACES

Yes

Tabs

Split content into sections Make tabs Assign event handlers (mouse & keyboard)

JS?No

LinearLoad

IxMap

Page 107: Exploring Adaptive Interfaces [Generate 2017]

EXPLORING ADAPTIVE INTERFACES

Linear HTML<h1>PumpkinPie</h1><divclass="tabbed-interface"><h2>Overview</h2><imgsrc="pie.jpg"alt=""/><p>Whetheryou'rehostingafestivepartyoracasual get-togetherwithfriends,ourPumpkinPiewillmake entertainingeasy!</p><!--...--><h2>Ingredients</h2><ul><li>1(9<abbrtitle="inch">in</abbr>)unbakeddeep dishpiecrust</li><li>½cupwhitesugar</li><!--...--></ul><h2>Directions</h2><!--...--></div>

Page 108: Exploring Adaptive Interfaces [Generate 2017]

EXPLORING ADAPTIVE INTERFACES

Tabbed<h1>PumpkinPie</h1><divclass="tabbed-interfaceTabInterface-enabled"> <ulclass="tabs"><li><ahref="#folder-1">Overview</a></li><li><ahref="#folder-2">Ingredients</a></li><li><ahref="#folder-3">Directions</a></li><li><ahref="#folder-4">Nutrition</a></li></ul><sectionid="folder-1"><h2>Overview</h2><imgsrc="pie.jpg"alt=""><p>Whetheryou'rehostingafestivepartyoracasual get-togetherwithfriends,ourPumpkinPiewillmake entertainingeasy!</p><!--...--></section><!--...--></div>

Page 109: Exploring Adaptive Interfaces [Generate 2017]

EXPLORING ADAPTIVE INTERFACES

Tabbed<h1>PumpkinPie</h1><divclass="tabbed-interfaceTabInterface-enabled"> <ulclass="tabs"><li><ahref="#folder-1">Overview</a></li><li><ahref="#folder-2">Ingredients</a></li><li><ahref="#folder-3">Directions</a></li><li><ahref="#folder-4">Nutrition</a></li></ul><sectionid="folder-1"><h2>Overview</h2><imgsrc="pie.jpg"alt=""><p>Whetheryou'rehostingafestivepartyoracasual get-togetherwithfriends,ourPumpkinPiewillmake entertainingeasy!</p><!--...--></section><!--...--></div>

Page 110: Exploring Adaptive Interfaces [Generate 2017]

EXPLORING ADAPTIVE INTERFACES

Yes

Tabs

Split content into sections Make tabs Assign event handlers (mouse & keyboard)

IxMap

Yes

Verify space for tabs

NoAccordion

Build accordion

JS?No

LinearLoad

Page 111: Exploring Adaptive Interfaces [Generate 2017]

EXPLORING ADAPTIVE INTERFACES

Yes

Tabs

Split content into sections Make tabs Assign event handlers (mouse & keyboard)

IxMap

Yes

Verify space for tabs

NoAccordion

Build accordion

JS?No

LinearLoad

LIVE

Page 112: Exploring Adaptive Interfaces [Generate 2017]

EXPLORING ADAPTIVE INTERFACES

JS?Load

IxMap

Yes

Tabs

Yes

Verify space for tabsLIVE

NoLinear

No

Accordion

Build accordion

<?>

Yes

Native

Insert details & summary

Support details & summary?

Page 113: Exploring Adaptive Interfaces [Generate 2017]

EXPLORING ADAPTIVE INTERFACESJS?Load

IxMap Yes

Verify space for tabsLIVE No

Accordion

Build accordion

<?>

Yes

Native

& summary

Support details & summary?

Yes

Tabs

Split content into sections Make tabs Assign event handlers

!

Screenreader & ARIA?

No

Audio Cues

Yes

Add ARIA

Page 114: Exploring Adaptive Interfaces [Generate 2017]

EXPLORING ADAPTIVE INTERFACES

role="tablist"

116

Adding ARIA

Page 115: Exploring Adaptive Interfaces [Generate 2017]

EXPLORING ADAPTIVE INTERFACES

role="tab"aria-selected="true"aria-controls="folder-1"

Adding ARIA

Page 116: Exploring Adaptive Interfaces [Generate 2017]

EXPLORING ADAPTIVE INTERFACES

role="tab"aria-selected="false"aria-controls="folder-4"

Adding ARIA

Page 117: Exploring Adaptive Interfaces [Generate 2017]

EXPLORING ADAPTIVE INTERFACES

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

Adding ARIA

Page 118: Exploring Adaptive Interfaces [Generate 2017]

EXPLORING ADAPTIVE INTERFACES

Result!

Page 119: Exploring Adaptive Interfaces [Generate 2017]

That’s pretty adaptive!

© Brad Frost

Page 120: Exploring Adaptive Interfaces [Generate 2017]

Together we canmake the weba little better

every day.

© Brad Frost

Page 121: Exploring Adaptive Interfaces [Generate 2017]

Questions?

Tweet me at@AaronGustafson

Page 122: Exploring Adaptive Interfaces [Generate 2017]

Thank you!

@AaronGustafson aaron-gustafson.com

slideshare.net/AaronGustafson