SlideShare a Scribd company logo
1 of 93
Download to read offline
Adaptive
Web Design
LAYER BY LAYER
Aaron Gustafson
@AaronGustafson
slideshare.net/AaronGustafson
Slides

http://is.gd/edui_awd_workshop
Password: edui2013

Further Reading

http://is.gd/readlist_awd
ADAPTIVE WEB DESIGN: LAYER BY LAYER

Thumbnails
ADAPTIVE WEB DESIGN: LAYER BY LAYER

Thumbnails
ADAPTIVE WEB DESIGN: LAYER BY LAYER

UI Construction Flow
Load

JS?

No

No image

Yes
No
Verify browser
width condition
Yes

Image
Adjust markup
Add custom CSS
ADAPTIVE WEB DESIGN: LAYER BY LAYER

UI Construction Flow
Load

JS?

No

No image

Yes
No
Verify browser
width condition
Yes

Image
Adjust markup
Add custom CSS
ADAPTIVE WEB DESIGN: LAYER BY LAYER

UI Construction Flow
Load

JS?

No

No image

Yes
No
Verify browser
width condition
Yes

Image
Adjust markup
Add custom CSS
ADAPTIVE WEB DESIGN: LAYER BY LAYER

UI Construction Flow
Load

JS?

No

No image

Yes
No
Verify browser
width condition
Yes

Image
Adjust markup
Add custom CSS
ADAPTIVE WEB DESIGN: LAYER BY LAYER

UI Construction Flow
Load

JS?

No

No image

Yes
No
Verify browser
width condition
Yes

Image
Adjust markup
Add custom CSS
ADAPTIVE WEB DESIGN: LAYER BY LAYER

UI Construction Flow
Load

JS?

No

No image

Yes
No
Verify browser
width condition
Yes

Image
Adjust markup
Add custom CSS
ADAPTIVE WEB DESIGN: LAYER BY LAYER

UI Construction Flow
Load

JS?

No

No image

Yes
No
Verify browser
width condition
Yes

Image
Adjust markup
Add custom CSS
ADAPTIVE WEB DESIGN: LAYER BY LAYER

UI Construction Flow
Load

JS?

No

No image

Yes
No
Verify browser
width condition
Yes

Image
Adjust markup
Add custom CSS
ADAPTIVE WEB DESIGN: LAYER BY LAYER

UI Construction Flow
Load

JS?

No

No image

Yes
No
Verify browser
width condition
Yes

Image
Adjust markup
Add custom CSS
ADAPTIVE WEB DESIGN: LAYER BY LAYER

UI Construction Flow
Load

JS?

No

No image

Yes
No
Verify browser
width condition
Yes

Image
Adjust markup
Add custom CSS
ADAPTIVE WEB DESIGN: LAYER BY LAYER

UI Construction Flow
Load

JS?

No

No image

Yes
No
Verify browser
width condition
Yes

Image
Adjust markup
Add custom CSS
ADAPTIVE WEB DESIGN: LAYER BY LAYER

There is no image…
<p class="entry-image"
data-image-src="/i/sample.jpg"></p>
ADAPTIVE WEB DESIGN: LAYER BY LAYER

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

<p class="entry-image"
data-image-src="/i/sample.jpg"
data-has-image="true">
<img alt="" src="/i/sample.jpg" alt=””/>
</p>
ADAPTIVE WEB DESIGN: LAYER BY LAYER

CSS at rest
[data-image-src] {
display: none;
}
ADAPTIVE WEB DESIGN: LAYER BY LAYER

CSS at play
[data-image-src][data-image-loaded] {
display: block;
}
ADAPTIVE WEB DESIGN: LAYER BY LAYER

JS Watcher
window.watchResize = function(callback)
{
var resizing;
function done() {
clearTimeout( resizing );
resizing = null;
callback();
}
window.onresize = function(){
if ( resizing ) {
clearTimeout( resizing );
resizing = null;
}
resizing = setTimeout( done, 50 );
};
callback();
};
ADAPTIVE WEB DESIGN: LAYER BY LAYER

JS Watcher
var browser_width = 0;
window.watchResize(function(){
browser_width = window.innerWidth ||
document.body.offsetWidth;
});
ADAPTIVE WEB DESIGN: LAYER BY LAYER

JS Watcher
window.watchResize(function(){
var threshold = 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;
}
});
ADAPTIVE WEB DESIGN: LAYER BY LAYER

UI Construction Flow
Load

JS?

No

No image

Yes
No
Verify browser
width condition

LIVE

Yes

Image
Adjust markup
Add custom CSS
ADAPTIVE WEB DESIGN: LAYER BY LAYER

Smart CSS
[data-image-src][data-image-loaded] {
display: block;
}
ADAPTIVE WEB DESIGN: LAYER BY LAYER

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

@media only screen and (min-width:400px) {
[data-img-src][data-image-loaded] {
display: block;
}
}
ADAPTIVE WEB DESIGN: LAYER BY LAYER

Lightboxes
ADAPTIVE WEB DESIGN: LAYER BY LAYER

UI Construction Flow
Load

JS?

No

No lightbox

Yes
No
Verify browser
width condition

LIVE

Yes

Lightbox
Create link
Make image clickable
ADAPTIVE WEB DESIGN: LAYER BY LAYER

UI Construction Flow
Load

JS?

No

No lightbox

Yes
No
Verify browser
width condition

LIVE

Yes

Lightbox
Create link
Make image clickable
ADAPTIVE WEB DESIGN: LAYER BY LAYER

UI Construction Flow
Load

JS?

No

No lightbox

Yes
No
Verify browser
width condition

LIVE

Yes

Lightbox
Create link
Make image clickable
ADAPTIVE WEB DESIGN: LAYER BY LAYER

UI Construction Flow
Load

JS?

No

No lightbox

Yes
No
Verify browser
width condition

LIVE

Yes

Lightbox
Create link
Make image clickable
ADAPTIVE WEB DESIGN: LAYER BY LAYER

UI Construction Flow
Load

JS?

No

No lightbox

Yes
No
Verify browser
width condition

LIVE

Yes

Lightbox
Create link
Make image clickable
ADAPTIVE WEB DESIGN: LAYER BY LAYER

UI Construction Flow
Load

JS?

No

No lightbox

Yes
No
Verify browser
width condition

LIVE

Yes

Lightbox
Create link
Make image clickable
ADAPTIVE WEB DESIGN: LAYER BY LAYER

UI Construction Flow
Load

JS?

No

No lightbox

Yes
No
Verify browser
width condition

LIVE

Yes

Lightbox
Create link
Make image clickable
ADAPTIVE WEB DESIGN: LAYER BY LAYER

UI Construction Flow
Load

JS?

No

No lightbox

Yes
No
Verify browser
width condition

LIVE

Yes

Lightbox
Create link
Make image clickable
ADAPTIVE WEB DESIGN: LAYER BY LAYER

UI Construction Flow
Load

JS?

No

No lightbox

Yes
No
Verify browser
width condition

LIVE

Yes

Lightbox
Create link
Make image clickable
ADAPTIVE WEB DESIGN: LAYER BY LAYER

No need to link
<figure id="fig-1">
<img src="/path/small.png"
data-enlarged="/path/large.png"
alt="">
<figcaption>
<h6>Retreats 4 Geeks</h6>
<p>We built this site for our intimate retreat series.</p>
</figcaption>
</figure>
ADAPTIVE WEB DESIGN: LAYER BY LAYER

Make the connection
<figure id="fig-1">
<img src="/path/small.png"
data-enlarged="/path/large.png"
alt=""
class="enlargable">
<p class="enlarge"><a href="#enlarge">Click to Enlarge</a></p>
<figcaption>
<h6>Retreats 4 Geeks</h6>
<p>We built this site for our intimate retreat series.</p>
</figcaption>
</figure>
ADAPTIVE WEB DESIGN: LAYER BY LAYER

Tabbed Interface
ADAPTIVE WEB DESIGN: LAYER BY LAYER

Traditional approach
<h1>Pumpkin Pie</h1>
<div class="container">
<ul class="tabs">
<li><a href="#">Overview</a></li>
<li><a href="#">Ingredients</a></li>
<li><a href="#">Directions</a></li>
<li><a href="#">Nutrition</a></li>
</ul>
<div class="section">
<h2>Overview</h2>
<img src="pie.jpg" alt="">
<p>Whether you're hosting a festive party or a casual
get-together with friends, our Pumpkin Pie will make
entertaining easy!</p>
<!-- ... -->
</div>
<!-- ... -->
</div>
ADAPTIVE WEB DESIGN: LAYER BY LAYER

Cleaner approach
<h1>Pumpkin Pie</h1>
<div class="tabbed-interface">
<h2>Overview</h2>
<img src="pie.jpg" alt="" />
<p>Whether you're hosting a festive party or a casual
get-together with friends, our Pumpkin Pie will make
entertaining easy!</p>
<!-- ... -->
<h2>Ingredients</h2>
<ul>
<li>1 (9<abbr title="inch">in</abbr>) unbaked deep
dish pie crust</li>
<li> cup white sugar</li>
<!-- ... -->
</ul>
<h2>Directions</h2>
<!-- ... -->
</div>
ADAPTIVE WEB DESIGN: LAYER BY LAYER

Cleaner approach
<h1>Pumpkin Pie</h1>
<div class="tabbed-interface">
<h2>Overview</h2>
<img src="pie.jpg" alt="" />
<p>Whether you're hosting a festive party or a casual
get-together with friends, our Pumpkin Pie will make
entertaining easy!</p>
<!-- ... -->
<h2>Ingredients</h2>
<ul>
<li>1 (9<abbr title="inch">in</abbr>) unbaked deep
dish pie crust</li>
<li> cup white sugar</li>
<!-- ... -->
</ul>
<h2>Directions</h2>
<!-- ... -->
</div>
ADAPTIVE WEB DESIGN: LAYER BY LAYER

No JS, basic CSS
ADAPTIVE WEB DESIGN: LAYER BY LAYER

UI Construction Flow
Load

JS?

No

Linear

Yes

Tabs
Split content into sections
Make tabs
Assign event handlers (mouse & keyboard)
ADAPTIVE WEB DESIGN: LAYER BY LAYER

UI Construction Flow
Load

JS?

No

Linear

Yes

Tabs
Split content into sections
Make tabs
Assign event handlers (mouse & keyboard)
ADAPTIVE WEB DESIGN: LAYER BY LAYER

UI Construction Flow
Load

JS?

No

Linear

Yes

Tabs
Split content into sections
Make tabs
Assign event handlers (mouse & keyboard)
ADAPTIVE WEB DESIGN: LAYER BY LAYER

UI Construction Flow
Load

JS?

No

Linear

Yes

Tabs
Split content into sections
Make tabs
Assign event handlers (mouse & keyboard)
ADAPTIVE WEB DESIGN: LAYER BY LAYER

UI Construction Flow
Load

JS?

No

Linear

Yes

Tabs
Split content into sections
Make tabs
Assign event handlers (mouse & keyboard)
ADAPTIVE WEB DESIGN: LAYER BY LAYER

UI Construction Flow
Load

JS?

No

Linear

Yes

Tabs
Split content into sections
Make tabs
Assign event handlers (mouse & keyboard)
ADAPTIVE WEB DESIGN: LAYER BY LAYER

UI Construction Flow
Load

JS?

No

Linear

Yes

Tabs
Split content into sections
Make tabs
Assign event handlers (mouse & keyboard)
ADAPTIVE WEB DESIGN: LAYER BY LAYER

Linear HTML
<h1>Pumpkin Pie</h1>
<div class="tabbed-interface">
<h2>Overview</h2>
<img src="pie.jpg" alt="" />
<p>Whether you're hosting a festive party or a casual
get-together with friends, our Pumpkin Pie will make
entertaining easy!</p>
<!-- ... -->
<h2>Ingredients</h2>
<ul>
<li>1 (9<abbr title="inch">in</abbr>) unbaked deep
dish pie crust</li>
<li> cup white sugar</li>
<!-- ... -->
</ul>
<h2>Directions</h2>
<!-- ... -->
</div>
ADAPTIVE WEB DESIGN: LAYER BY LAYER

Tabbed
<h1>Pumpkin Pie</h1>
<div class="tabbed-interface TabInterface-enabled">
<ul class="tabs">
<li><a href="#folder-1">Overview</a></li>
<li><a href="#folder-2">Ingredients</a></li>
<li><a href="#folder-3">Directions</a></li>
<li><a href="#folder-4">Nutrition</a></li>
</ul>
<section id=”folder-1”>
<h2>Overview</h2>
<img src="pie.jpg" alt="">
<p>Whether you're hosting a festive party or a casual
get-together with friends, our Pumpkin Pie will make
entertaining easy!</p>
<!-- ... -->
</section>
<!-- ... -->
</div>
ADAPTIVE WEB DESIGN: LAYER BY LAYER

Tabbed
<h1>Pumpkin Pie</h1>
<div class="tabbed-interface TabInterface-enabled">
<ul class="tabs">
<li><a href="#folder-1">Overview</a></li>
<li><a href="#folder-2">Ingredients</a></li>
<li><a href="#folder-3">Directions</a></li>
<li><a href="#folder-4">Nutrition</a></li>
</ul>
<section id=”folder-1”>
<h2>Overview</h2>
<img src="pie.jpg" alt="">
<p>Whether you're hosting a festive party or a casual
get-together with friends, our Pumpkin Pie will make
entertaining easy!</p>
<!-- ... -->
</section>
<!-- ... -->
</div>
ADAPTIVE WEB DESIGN: LAYER BY LAYER

UI Construction Flow
Load
ADAPTIVE WEB DESIGN: LAYER BY LAYER

UI Construction Flow
Load

JS?

No

Linear

Yes
No

Accordion

Verify space
for tabs

LIVE

Yes

Build accordion

Tabs
Split content into sections
Make tabs
Assign event handlers (mouse & keyboard)
ADAPTIVE WEB DESIGN: LAYER BY LAYER

No

UI Construction Flow
Load

Insert details
& summary

JS?
Yes

Native
Yes

<?>

Verify space
for tabs

LIVE

Linear

Yes

Support details & summary?

No

Accordion
Build accordion

Tabs
ADAPTIVE WEB DESIGN: LAYER BY LAYER

Adding ARIA

role="tablist"

44
ADAPTIVE WEB DESIGN: LAYER BY LAYER

Adding ARIA

role="tab"
aria-selected="true"
aria-controls="folder-1"
ADAPTIVE WEB DESIGN: LAYER BY LAYER

Adding ARIA

role="tab"
aria-selected="false"
aria-controls="folder-4"
ADAPTIVE WEB DESIGN: LAYER BY LAYER

Adding ARIA

role="tabpanel"
aria-hidden="false"
aria-labelledby="folder-1-tab"
ADAPTIVE WEB DESIGN: LAYER BY LAYER

Adding ARIA

role="application"
aria-activedescendant="folder-1"
ADAPTIVE WEB DESIGN: LAYER BY LAYER

Result!
http://is.gd/lazyloading_demo
http://is.gd/lazyloading_demo
http://is.gd/lazyloading_demo
http://is.gd/lazyloading_demo
ADAPTIVE WEB DESIGN: LAYER BY LAYER

NO!!!!
#reviews {
display: none;
}
@media only screen and (min-width:50em) {
#reviews {
display: block;
}
}
ADAPTIVE WEB DESIGN: LAYER BY LAYER

UI Construction Flow
Load

JS?

No

Links

Yes

No
Verify browser
width condition

LIVE

Hold for user action
Click

Yes

Reviews
Lazy Load the reviews
ADAPTIVE WEB DESIGN: LAYER BY LAYER

UI Construction Flow
Load

JS?

No

Links

Yes

No
Verify browser
width condition

LIVE

Hold for user action
Click

Yes

Reviews
Lazy Load the reviews
ADAPTIVE WEB DESIGN: LAYER BY LAYER

UI Construction Flow
Load

JS?

No

Links

Yes

No
Verify browser
width condition

LIVE

Hold for user action
Click

Yes

Reviews
Lazy Load the reviews
ADAPTIVE WEB DESIGN: LAYER BY LAYER

UI Construction Flow
Load

JS?

No

Links

Yes

No
Verify browser
width condition

LIVE

Hold for user action
Click

Yes

Reviews
Lazy Load the reviews
ADAPTIVE WEB DESIGN: LAYER BY LAYER

UI Construction Flow
Load

JS?

No

Links

Yes

No
Verify browser
width condition

LIVE

Hold for user action
Click

Yes

Reviews
Lazy Load the reviews
ADAPTIVE WEB DESIGN: LAYER BY LAYER

UI Construction Flow
Load

JS?

No

Links

Yes

No
Verify browser
width condition

LIVE

Hold for user action
Click

Yes

Reviews
Lazy Load the reviews
ADAPTIVE WEB DESIGN: LAYER BY LAYER

UI Construction Flow
Load

JS?

No

Links

Yes

No
Verify browser
width condition

LIVE

Hold for user action
Click

Yes

Reviews
Lazy Load the reviews
ADAPTIVE WEB DESIGN: LAYER BY LAYER

UI Construction Flow
Load

JS?

No

Links

Yes

No
Verify browser
width condition

LIVE

Hold for user action
Click

Yes

Reviews
Lazy Load the reviews
ADAPTIVE WEB DESIGN: LAYER BY LAYER

UI Construction Flow
Load

JS?

No

Links

Yes

No
Verify browser
width condition

LIVE

Hold for user action
Click

Yes

Reviews
Lazy Load the reviews
ADAPTIVE WEB DESIGN: LAYER BY LAYER

UI Construction Flow
Load

JS?

No

Links

Yes

No
Verify browser
width condition

LIVE

Hold for user action
Click

Yes

Reviews
Lazy Load the reviews
ADAPTIVE WEB DESIGN: LAYER BY LAYER

UI Construction Flow
Load

JS?

No

Links

Yes

No
Verify browser
width condition

LIVE

Hold for user action
Click

Yes

Reviews
Lazy Load the reviews
ADAPTIVE WEB DESIGN: LAYER BY LAYER

Lazy Loading
<section class="aux reviews" id="reviews">
<header id="tab-reviews">
<a href="reviews.html" class="disabled">…</a>
</header>
</section>
ADAPTIVE WEB DESIGN: LAYER BY LAYER

Lazy Loading
<section class="aux reviews loaded" id="reviews">
<header id="tab-reviews">
<a href="reviews.html" class="disabled open">…</a>
</header>
<div role="tabpanel">
<div id="p-reviews" aria-labeledby="tab-reviews">
<ol class="reviews-list">
<li>
<img src="images/avatar.png" alt="Commenter Name">
<div class="review-meta">
<h3>Awesome shirt!</h3>
<a href="#"><time datetime="2010-01-20" pubdate="">11/12/2011</time></a>
By Bruce Bosco
</div>
<div class="review-content">
<p>This shirt looks awesome and is really comfortable to wear. It did shrink
quite a lot when washed, but that could have just been how I ran it. All in all, it's my
favourite shirt, and I love wearing it.</p>
</div>
</li>
<!-- … -->
</ol>
</div>
</div>
</section>
Now it’s time
for YOU
to do
some work
ADAPTIVE WEB DESIGN: LAYER BY LAYER

Carousel
ADAPTIVE WEB DESIGN: LAYER BY LAYER

Video Gallery
ADAPTIVE WEB DESIGN: LAYER BY LAYER

Tabbed Interface
ADAPTIVE WEB DESIGN: LAYER BY LAYER

Data Tables
ADAPTIVE WEB DESIGN: LAYER BY LAYER

Scorecard
ADAPTIVE WEB DESIGN: LAYER BY LAYER

Complex Navigation
ADAPTIVE WEB DESIGN: LAYER BY LAYER

Timeline
ADAPTIVE WEB DESIGN: LAYER BY LAYER

Modal Dialogs
ADAPTIVE WEB DESIGN: LAYER BY LAYER

Accordion
ADAPTIVE WEB DESIGN: LAYER BY LAYER

Shopping Cart
ADAPTIVE WEB DESIGN: LAYER BY LAYER

Interfaces
๏

Carousel

๏

Complex Navigation

๏

Video Gallery

๏

Timeline

๏

Tab Interface v2

๏

Modal Dialogs

๏

Data Tables

๏

Accordion

๏

Scorecard

๏

Shopping Cart

74
Slides

http://is.gd/edui_awd_workshop
Password: edui2013

Further Reading

http://is.gd/readlist_awd
Thank you!!!

More Related Content

More from 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
 
Progressive Web Apps and the Windows Ecosystem [Build 2017]
Progressive Web Apps and the Windows Ecosystem [Build 2017]Progressive Web Apps and the Windows Ecosystem [Build 2017]
Progressive Web Apps and the Windows Ecosystem [Build 2017]Aaron Gustafson
 
Writing for Engagement [TechReady 22]
Writing for Engagement [TechReady 22]Writing for Engagement [TechReady 22]
Writing for Engagement [TechReady 22]Aaron Gustafson
 
Designing the Conversation [SmashingConf 2016]
Designing the Conversation [SmashingConf 2016]Designing the Conversation [SmashingConf 2016]
Designing the Conversation [SmashingConf 2016]Aaron Gustafson
 
The Features of Highly Effective Forms [SmashingConf NYC 2016]
The Features of Highly Effective Forms [SmashingConf NYC 2016]The Features of Highly Effective Forms [SmashingConf NYC 2016]
The Features of Highly Effective Forms [SmashingConf NYC 2016]Aaron Gustafson
 
Designing the Conversation [SpeechTek 2016]
Designing the Conversation [SpeechTek 2016]Designing the Conversation [SpeechTek 2016]
Designing the Conversation [SpeechTek 2016]Aaron Gustafson
 
Planning Adaptive Interfaces [RWD Summit 2016]
Planning Adaptive Interfaces [RWD Summit 2016]Planning Adaptive Interfaces [RWD Summit 2016]
Planning Adaptive Interfaces [RWD Summit 2016]Aaron Gustafson
 
The Features of Highly Effective Forms [An Event Apart Nashville 2016]
The Features of Highly Effective Forms [An Event Apart Nashville 2016]The Features of Highly Effective Forms [An Event Apart Nashville 2016]
The Features of Highly Effective Forms [An Event Apart Nashville 2016]Aaron Gustafson
 
Planning Adaptive Interfaces [EnhanceConf 2016]
Planning Adaptive Interfaces [EnhanceConf 2016]Planning Adaptive Interfaces [EnhanceConf 2016]
Planning Adaptive Interfaces [EnhanceConf 2016]Aaron Gustafson
 

More from Aaron Gustafson (20)

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]
 
Progressive Web Apps and the Windows Ecosystem [Build 2017]
Progressive Web Apps and the Windows Ecosystem [Build 2017]Progressive Web Apps and the Windows Ecosystem [Build 2017]
Progressive Web Apps and the Windows Ecosystem [Build 2017]
 
Writing for Engagement [TechReady 22]
Writing for Engagement [TechReady 22]Writing for Engagement [TechReady 22]
Writing for Engagement [TechReady 22]
 
Designing the Conversation [SmashingConf 2016]
Designing the Conversation [SmashingConf 2016]Designing the Conversation [SmashingConf 2016]
Designing the Conversation [SmashingConf 2016]
 
The Features of Highly Effective Forms [SmashingConf NYC 2016]
The Features of Highly Effective Forms [SmashingConf NYC 2016]The Features of Highly Effective Forms [SmashingConf NYC 2016]
The Features of Highly Effective Forms [SmashingConf NYC 2016]
 
Designing the Conversation [SpeechTek 2016]
Designing the Conversation [SpeechTek 2016]Designing the Conversation [SpeechTek 2016]
Designing the Conversation [SpeechTek 2016]
 
Planning Adaptive Interfaces [RWD Summit 2016]
Planning Adaptive Interfaces [RWD Summit 2016]Planning Adaptive Interfaces [RWD Summit 2016]
Planning Adaptive Interfaces [RWD Summit 2016]
 
The Features of Highly Effective Forms [An Event Apart Nashville 2016]
The Features of Highly Effective Forms [An Event Apart Nashville 2016]The Features of Highly Effective Forms [An Event Apart Nashville 2016]
The Features of Highly Effective Forms [An Event Apart Nashville 2016]
 
Planning Adaptive Interfaces [EnhanceConf 2016]
Planning Adaptive Interfaces [EnhanceConf 2016]Planning Adaptive Interfaces [EnhanceConf 2016]
Planning Adaptive Interfaces [EnhanceConf 2016]
 

Recently uploaded

How we scaled to 80K users by doing nothing!.pdf
How we scaled to 80K users by doing nothing!.pdfHow we scaled to 80K users by doing nothing!.pdf
How we scaled to 80K users by doing nothing!.pdfSrushith Repakula
 
BT & Neo4j _ How Knowledge Graphs help BT deliver Digital Transformation.pptx
BT & Neo4j _ How Knowledge Graphs help BT deliver Digital Transformation.pptxBT & Neo4j _ How Knowledge Graphs help BT deliver Digital Transformation.pptx
BT & Neo4j _ How Knowledge Graphs help BT deliver Digital Transformation.pptxNeo4j
 
What's New in Teams Calling, Meetings and Devices April 2024
What's New in Teams Calling, Meetings and Devices April 2024What's New in Teams Calling, Meetings and Devices April 2024
What's New in Teams Calling, Meetings and Devices April 2024Stephanie Beckett
 
Working together SRE & Platform Engineering
Working together SRE & Platform EngineeringWorking together SRE & Platform Engineering
Working together SRE & Platform EngineeringMarcus Vechiato
 
Oauth 2.0 Introduction and Flows with MuleSoft
Oauth 2.0 Introduction and Flows with MuleSoftOauth 2.0 Introduction and Flows with MuleSoft
Oauth 2.0 Introduction and Flows with MuleSoftshyamraj55
 
AI presentation and introduction - Retrieval Augmented Generation RAG 101
AI presentation and introduction - Retrieval Augmented Generation RAG 101AI presentation and introduction - Retrieval Augmented Generation RAG 101
AI presentation and introduction - Retrieval Augmented Generation RAG 101vincent683379
 
Enterprise Knowledge Graphs - Data Summit 2024
Enterprise Knowledge Graphs - Data Summit 2024Enterprise Knowledge Graphs - Data Summit 2024
Enterprise Knowledge Graphs - Data Summit 2024Enterprise Knowledge
 
The Metaverse: Are We There Yet?
The  Metaverse:    Are   We  There  Yet?The  Metaverse:    Are   We  There  Yet?
The Metaverse: Are We There Yet?Mark Billinghurst
 
AI mind or machine power point presentation
AI mind or machine power point presentationAI mind or machine power point presentation
AI mind or machine power point presentationyogeshlabana357357
 
Breaking Down the Flutterwave Scandal What You Need to Know.pdf
Breaking Down the Flutterwave Scandal What You Need to Know.pdfBreaking Down the Flutterwave Scandal What You Need to Know.pdf
Breaking Down the Flutterwave Scandal What You Need to Know.pdfUK Journal
 
A Business-Centric Approach to Design System Strategy
A Business-Centric Approach to Design System StrategyA Business-Centric Approach to Design System Strategy
A Business-Centric Approach to Design System StrategyUXDXConf
 
Google I/O Extended 2024 Warsaw
Google I/O Extended 2024 WarsawGoogle I/O Extended 2024 Warsaw
Google I/O Extended 2024 WarsawGDSC PJATK
 
Choosing the Right FDO Deployment Model for Your Application _ Geoffrey at In...
Choosing the Right FDO Deployment Model for Your Application _ Geoffrey at In...Choosing the Right FDO Deployment Model for Your Application _ Geoffrey at In...
Choosing the Right FDO Deployment Model for Your Application _ Geoffrey at In...FIDO Alliance
 
Linux Foundation Edge _ Overview of FDO Software Components _ Randy at Intel.pdf
Linux Foundation Edge _ Overview of FDO Software Components _ Randy at Intel.pdfLinux Foundation Edge _ Overview of FDO Software Components _ Randy at Intel.pdf
Linux Foundation Edge _ Overview of FDO Software Components _ Randy at Intel.pdfFIDO Alliance
 
Powerful Start- the Key to Project Success, Barbara Laskowska
Powerful Start- the Key to Project Success, Barbara LaskowskaPowerful Start- the Key to Project Success, Barbara Laskowska
Powerful Start- the Key to Project Success, Barbara LaskowskaCzechDreamin
 
Continuing Bonds Through AI: A Hermeneutic Reflection on Thanabots
Continuing Bonds Through AI: A Hermeneutic Reflection on ThanabotsContinuing Bonds Through AI: A Hermeneutic Reflection on Thanabots
Continuing Bonds Through AI: A Hermeneutic Reflection on ThanabotsLeah Henrickson
 
ASRock Industrial FDO Solutions in Action for Industrial Edge AI _ Kenny at A...
ASRock Industrial FDO Solutions in Action for Industrial Edge AI _ Kenny at A...ASRock Industrial FDO Solutions in Action for Industrial Edge AI _ Kenny at A...
ASRock Industrial FDO Solutions in Action for Industrial Edge AI _ Kenny at A...FIDO Alliance
 
IESVE for Early Stage Design and Planning
IESVE for Early Stage Design and PlanningIESVE for Early Stage Design and Planning
IESVE for Early Stage Design and PlanningIES VE
 
WebAssembly is Key to Better LLM Performance
WebAssembly is Key to Better LLM PerformanceWebAssembly is Key to Better LLM Performance
WebAssembly is Key to Better LLM PerformanceSamy Fodil
 

Recently uploaded (20)

Overview of Hyperledger Foundation
Overview of Hyperledger FoundationOverview of Hyperledger Foundation
Overview of Hyperledger Foundation
 
How we scaled to 80K users by doing nothing!.pdf
How we scaled to 80K users by doing nothing!.pdfHow we scaled to 80K users by doing nothing!.pdf
How we scaled to 80K users by doing nothing!.pdf
 
BT & Neo4j _ How Knowledge Graphs help BT deliver Digital Transformation.pptx
BT & Neo4j _ How Knowledge Graphs help BT deliver Digital Transformation.pptxBT & Neo4j _ How Knowledge Graphs help BT deliver Digital Transformation.pptx
BT & Neo4j _ How Knowledge Graphs help BT deliver Digital Transformation.pptx
 
What's New in Teams Calling, Meetings and Devices April 2024
What's New in Teams Calling, Meetings and Devices April 2024What's New in Teams Calling, Meetings and Devices April 2024
What's New in Teams Calling, Meetings and Devices April 2024
 
Working together SRE & Platform Engineering
Working together SRE & Platform EngineeringWorking together SRE & Platform Engineering
Working together SRE & Platform Engineering
 
Oauth 2.0 Introduction and Flows with MuleSoft
Oauth 2.0 Introduction and Flows with MuleSoftOauth 2.0 Introduction and Flows with MuleSoft
Oauth 2.0 Introduction and Flows with MuleSoft
 
AI presentation and introduction - Retrieval Augmented Generation RAG 101
AI presentation and introduction - Retrieval Augmented Generation RAG 101AI presentation and introduction - Retrieval Augmented Generation RAG 101
AI presentation and introduction - Retrieval Augmented Generation RAG 101
 
Enterprise Knowledge Graphs - Data Summit 2024
Enterprise Knowledge Graphs - Data Summit 2024Enterprise Knowledge Graphs - Data Summit 2024
Enterprise Knowledge Graphs - Data Summit 2024
 
The Metaverse: Are We There Yet?
The  Metaverse:    Are   We  There  Yet?The  Metaverse:    Are   We  There  Yet?
The Metaverse: Are We There Yet?
 
AI mind or machine power point presentation
AI mind or machine power point presentationAI mind or machine power point presentation
AI mind or machine power point presentation
 
Breaking Down the Flutterwave Scandal What You Need to Know.pdf
Breaking Down the Flutterwave Scandal What You Need to Know.pdfBreaking Down the Flutterwave Scandal What You Need to Know.pdf
Breaking Down the Flutterwave Scandal What You Need to Know.pdf
 
A Business-Centric Approach to Design System Strategy
A Business-Centric Approach to Design System StrategyA Business-Centric Approach to Design System Strategy
A Business-Centric Approach to Design System Strategy
 
Google I/O Extended 2024 Warsaw
Google I/O Extended 2024 WarsawGoogle I/O Extended 2024 Warsaw
Google I/O Extended 2024 Warsaw
 
Choosing the Right FDO Deployment Model for Your Application _ Geoffrey at In...
Choosing the Right FDO Deployment Model for Your Application _ Geoffrey at In...Choosing the Right FDO Deployment Model for Your Application _ Geoffrey at In...
Choosing the Right FDO Deployment Model for Your Application _ Geoffrey at In...
 
Linux Foundation Edge _ Overview of FDO Software Components _ Randy at Intel.pdf
Linux Foundation Edge _ Overview of FDO Software Components _ Randy at Intel.pdfLinux Foundation Edge _ Overview of FDO Software Components _ Randy at Intel.pdf
Linux Foundation Edge _ Overview of FDO Software Components _ Randy at Intel.pdf
 
Powerful Start- the Key to Project Success, Barbara Laskowska
Powerful Start- the Key to Project Success, Barbara LaskowskaPowerful Start- the Key to Project Success, Barbara Laskowska
Powerful Start- the Key to Project Success, Barbara Laskowska
 
Continuing Bonds Through AI: A Hermeneutic Reflection on Thanabots
Continuing Bonds Through AI: A Hermeneutic Reflection on ThanabotsContinuing Bonds Through AI: A Hermeneutic Reflection on Thanabots
Continuing Bonds Through AI: A Hermeneutic Reflection on Thanabots
 
ASRock Industrial FDO Solutions in Action for Industrial Edge AI _ Kenny at A...
ASRock Industrial FDO Solutions in Action for Industrial Edge AI _ Kenny at A...ASRock Industrial FDO Solutions in Action for Industrial Edge AI _ Kenny at A...
ASRock Industrial FDO Solutions in Action for Industrial Edge AI _ Kenny at A...
 
IESVE for Early Stage Design and Planning
IESVE for Early Stage Design and PlanningIESVE for Early Stage Design and Planning
IESVE for Early Stage Design and Planning
 
WebAssembly is Key to Better LLM Performance
WebAssembly is Key to Better LLM PerformanceWebAssembly is Key to Better LLM Performance
WebAssembly is Key to Better LLM Performance
 

Adaptive Web Design: Layer by Layer [edUi 2013]

  • 1. Adaptive Web Design LAYER BY LAYER Aaron Gustafson @AaronGustafson slideshare.net/AaronGustafson
  • 3. ADAPTIVE WEB DESIGN: LAYER BY LAYER Thumbnails
  • 4. ADAPTIVE WEB DESIGN: LAYER BY LAYER Thumbnails
  • 5. ADAPTIVE WEB DESIGN: LAYER BY LAYER UI Construction Flow Load JS? No No image Yes No Verify browser width condition Yes Image Adjust markup Add custom CSS
  • 6. ADAPTIVE WEB DESIGN: LAYER BY LAYER UI Construction Flow Load JS? No No image Yes No Verify browser width condition Yes Image Adjust markup Add custom CSS
  • 7. ADAPTIVE WEB DESIGN: LAYER BY LAYER UI Construction Flow Load JS? No No image Yes No Verify browser width condition Yes Image Adjust markup Add custom CSS
  • 8. ADAPTIVE WEB DESIGN: LAYER BY LAYER UI Construction Flow Load JS? No No image Yes No Verify browser width condition Yes Image Adjust markup Add custom CSS
  • 9. ADAPTIVE WEB DESIGN: LAYER BY LAYER UI Construction Flow Load JS? No No image Yes No Verify browser width condition Yes Image Adjust markup Add custom CSS
  • 10. ADAPTIVE WEB DESIGN: LAYER BY LAYER UI Construction Flow Load JS? No No image Yes No Verify browser width condition Yes Image Adjust markup Add custom CSS
  • 11. ADAPTIVE WEB DESIGN: LAYER BY LAYER UI Construction Flow Load JS? No No image Yes No Verify browser width condition Yes Image Adjust markup Add custom CSS
  • 12. ADAPTIVE WEB DESIGN: LAYER BY LAYER UI Construction Flow Load JS? No No image Yes No Verify browser width condition Yes Image Adjust markup Add custom CSS
  • 13. ADAPTIVE WEB DESIGN: LAYER BY LAYER UI Construction Flow Load JS? No No image Yes No Verify browser width condition Yes Image Adjust markup Add custom CSS
  • 14. ADAPTIVE WEB DESIGN: LAYER BY LAYER UI Construction Flow Load JS? No No image Yes No Verify browser width condition Yes Image Adjust markup Add custom CSS
  • 15. ADAPTIVE WEB DESIGN: LAYER BY LAYER UI Construction Flow Load JS? No No image Yes No Verify browser width condition Yes Image Adjust markup Add custom CSS
  • 16. ADAPTIVE WEB DESIGN: LAYER BY LAYER There is no image… <p class="entry-image" data-image-src="/i/sample.jpg"></p>
  • 17. ADAPTIVE WEB DESIGN: LAYER BY LAYER Until there is <p class="entry-image" data-image-src="/i/sample.jpg"></p> <p class="entry-image" data-image-src="/i/sample.jpg" data-has-image="true"> <img alt="" src="/i/sample.jpg" alt=””/> </p>
  • 18. ADAPTIVE WEB DESIGN: LAYER BY LAYER CSS at rest [data-image-src] { display: none; }
  • 19. ADAPTIVE WEB DESIGN: LAYER BY LAYER CSS at play [data-image-src][data-image-loaded] { display: block; }
  • 20. ADAPTIVE WEB DESIGN: LAYER BY LAYER JS Watcher window.watchResize = function(callback) { var resizing; function done() { clearTimeout( resizing ); resizing = null; callback(); } window.onresize = function(){ if ( resizing ) { clearTimeout( resizing ); resizing = null; } resizing = setTimeout( done, 50 ); }; callback(); };
  • 21. ADAPTIVE WEB DESIGN: LAYER BY LAYER JS Watcher var browser_width = 0; window.watchResize(function(){ browser_width = window.innerWidth || document.body.offsetWidth; });
  • 22. ADAPTIVE WEB DESIGN: LAYER BY LAYER JS Watcher window.watchResize(function(){ var threshold = 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; } });
  • 23. ADAPTIVE WEB DESIGN: LAYER BY LAYER UI Construction Flow Load JS? No No image Yes No Verify browser width condition LIVE Yes Image Adjust markup Add custom CSS
  • 24. ADAPTIVE WEB DESIGN: LAYER BY LAYER Smart CSS [data-image-src][data-image-loaded] { display: block; }
  • 25. ADAPTIVE WEB DESIGN: LAYER BY LAYER Smart CSS [data-image-src][data-image-loaded] { display: block; } @media only screen and (min-width:400px) { [data-img-src][data-image-loaded] { display: block; } }
  • 26. ADAPTIVE WEB DESIGN: LAYER BY LAYER Lightboxes
  • 27. ADAPTIVE WEB DESIGN: LAYER BY LAYER UI Construction Flow Load JS? No No lightbox Yes No Verify browser width condition LIVE Yes Lightbox Create link Make image clickable
  • 28. ADAPTIVE WEB DESIGN: LAYER BY LAYER UI Construction Flow Load JS? No No lightbox Yes No Verify browser width condition LIVE Yes Lightbox Create link Make image clickable
  • 29. ADAPTIVE WEB DESIGN: LAYER BY LAYER UI Construction Flow Load JS? No No lightbox Yes No Verify browser width condition LIVE Yes Lightbox Create link Make image clickable
  • 30. ADAPTIVE WEB DESIGN: LAYER BY LAYER UI Construction Flow Load JS? No No lightbox Yes No Verify browser width condition LIVE Yes Lightbox Create link Make image clickable
  • 31. ADAPTIVE WEB DESIGN: LAYER BY LAYER UI Construction Flow Load JS? No No lightbox Yes No Verify browser width condition LIVE Yes Lightbox Create link Make image clickable
  • 32. ADAPTIVE WEB DESIGN: LAYER BY LAYER UI Construction Flow Load JS? No No lightbox Yes No Verify browser width condition LIVE Yes Lightbox Create link Make image clickable
  • 33. ADAPTIVE WEB DESIGN: LAYER BY LAYER UI Construction Flow Load JS? No No lightbox Yes No Verify browser width condition LIVE Yes Lightbox Create link Make image clickable
  • 34. ADAPTIVE WEB DESIGN: LAYER BY LAYER UI Construction Flow Load JS? No No lightbox Yes No Verify browser width condition LIVE Yes Lightbox Create link Make image clickable
  • 35. ADAPTIVE WEB DESIGN: LAYER BY LAYER UI Construction Flow Load JS? No No lightbox Yes No Verify browser width condition LIVE Yes Lightbox Create link Make image clickable
  • 36. ADAPTIVE WEB DESIGN: LAYER BY LAYER No need to link <figure id="fig-1"> <img src="/path/small.png" data-enlarged="/path/large.png" alt=""> <figcaption> <h6>Retreats 4 Geeks</h6> <p>We built this site for our intimate retreat series.</p> </figcaption> </figure>
  • 37. ADAPTIVE WEB DESIGN: LAYER BY LAYER Make the connection <figure id="fig-1"> <img src="/path/small.png" data-enlarged="/path/large.png" alt="" class="enlargable"> <p class="enlarge"><a href="#enlarge">Click to Enlarge</a></p> <figcaption> <h6>Retreats 4 Geeks</h6> <p>We built this site for our intimate retreat series.</p> </figcaption> </figure>
  • 38. ADAPTIVE WEB DESIGN: LAYER BY LAYER Tabbed Interface
  • 39. ADAPTIVE WEB DESIGN: LAYER BY LAYER Traditional approach <h1>Pumpkin Pie</h1> <div class="container"> <ul class="tabs"> <li><a href="#">Overview</a></li> <li><a href="#">Ingredients</a></li> <li><a href="#">Directions</a></li> <li><a href="#">Nutrition</a></li> </ul> <div class="section"> <h2>Overview</h2> <img src="pie.jpg" alt=""> <p>Whether you're hosting a festive party or a casual get-together with friends, our Pumpkin Pie will make entertaining easy!</p> <!-- ... --> </div> <!-- ... --> </div>
  • 40. ADAPTIVE WEB DESIGN: LAYER BY LAYER Cleaner approach <h1>Pumpkin Pie</h1> <div class="tabbed-interface"> <h2>Overview</h2> <img src="pie.jpg" alt="" /> <p>Whether you're hosting a festive party or a casual get-together with friends, our Pumpkin Pie will make entertaining easy!</p> <!-- ... --> <h2>Ingredients</h2> <ul> <li>1 (9<abbr title="inch">in</abbr>) unbaked deep dish pie crust</li> <li> cup white sugar</li> <!-- ... --> </ul> <h2>Directions</h2> <!-- ... --> </div>
  • 41. ADAPTIVE WEB DESIGN: LAYER BY LAYER Cleaner approach <h1>Pumpkin Pie</h1> <div class="tabbed-interface"> <h2>Overview</h2> <img src="pie.jpg" alt="" /> <p>Whether you're hosting a festive party or a casual get-together with friends, our Pumpkin Pie will make entertaining easy!</p> <!-- ... --> <h2>Ingredients</h2> <ul> <li>1 (9<abbr title="inch">in</abbr>) unbaked deep dish pie crust</li> <li> cup white sugar</li> <!-- ... --> </ul> <h2>Directions</h2> <!-- ... --> </div>
  • 42. ADAPTIVE WEB DESIGN: LAYER BY LAYER No JS, basic CSS
  • 43. ADAPTIVE WEB DESIGN: LAYER BY LAYER UI Construction Flow Load JS? No Linear Yes Tabs Split content into sections Make tabs Assign event handlers (mouse & keyboard)
  • 44. ADAPTIVE WEB DESIGN: LAYER BY LAYER UI Construction Flow Load JS? No Linear Yes Tabs Split content into sections Make tabs Assign event handlers (mouse & keyboard)
  • 45. ADAPTIVE WEB DESIGN: LAYER BY LAYER UI Construction Flow Load JS? No Linear Yes Tabs Split content into sections Make tabs Assign event handlers (mouse & keyboard)
  • 46. ADAPTIVE WEB DESIGN: LAYER BY LAYER UI Construction Flow Load JS? No Linear Yes Tabs Split content into sections Make tabs Assign event handlers (mouse & keyboard)
  • 47. ADAPTIVE WEB DESIGN: LAYER BY LAYER UI Construction Flow Load JS? No Linear Yes Tabs Split content into sections Make tabs Assign event handlers (mouse & keyboard)
  • 48. ADAPTIVE WEB DESIGN: LAYER BY LAYER UI Construction Flow Load JS? No Linear Yes Tabs Split content into sections Make tabs Assign event handlers (mouse & keyboard)
  • 49. ADAPTIVE WEB DESIGN: LAYER BY LAYER UI Construction Flow Load JS? No Linear Yes Tabs Split content into sections Make tabs Assign event handlers (mouse & keyboard)
  • 50. ADAPTIVE WEB DESIGN: LAYER BY LAYER Linear HTML <h1>Pumpkin Pie</h1> <div class="tabbed-interface"> <h2>Overview</h2> <img src="pie.jpg" alt="" /> <p>Whether you're hosting a festive party or a casual get-together with friends, our Pumpkin Pie will make entertaining easy!</p> <!-- ... --> <h2>Ingredients</h2> <ul> <li>1 (9<abbr title="inch">in</abbr>) unbaked deep dish pie crust</li> <li> cup white sugar</li> <!-- ... --> </ul> <h2>Directions</h2> <!-- ... --> </div>
  • 51. ADAPTIVE WEB DESIGN: LAYER BY LAYER Tabbed <h1>Pumpkin Pie</h1> <div class="tabbed-interface TabInterface-enabled"> <ul class="tabs"> <li><a href="#folder-1">Overview</a></li> <li><a href="#folder-2">Ingredients</a></li> <li><a href="#folder-3">Directions</a></li> <li><a href="#folder-4">Nutrition</a></li> </ul> <section id=”folder-1”> <h2>Overview</h2> <img src="pie.jpg" alt=""> <p>Whether you're hosting a festive party or a casual get-together with friends, our Pumpkin Pie will make entertaining easy!</p> <!-- ... --> </section> <!-- ... --> </div>
  • 52. ADAPTIVE WEB DESIGN: LAYER BY LAYER Tabbed <h1>Pumpkin Pie</h1> <div class="tabbed-interface TabInterface-enabled"> <ul class="tabs"> <li><a href="#folder-1">Overview</a></li> <li><a href="#folder-2">Ingredients</a></li> <li><a href="#folder-3">Directions</a></li> <li><a href="#folder-4">Nutrition</a></li> </ul> <section id=”folder-1”> <h2>Overview</h2> <img src="pie.jpg" alt=""> <p>Whether you're hosting a festive party or a casual get-together with friends, our Pumpkin Pie will make entertaining easy!</p> <!-- ... --> </section> <!-- ... --> </div>
  • 53. ADAPTIVE WEB DESIGN: LAYER BY LAYER UI Construction Flow Load
  • 54. ADAPTIVE WEB DESIGN: LAYER BY LAYER UI Construction Flow Load JS? No Linear Yes No Accordion Verify space for tabs LIVE Yes Build accordion Tabs Split content into sections Make tabs Assign event handlers (mouse & keyboard)
  • 55. ADAPTIVE WEB DESIGN: LAYER BY LAYER No UI Construction Flow Load Insert details & summary JS? Yes Native Yes <?> Verify space for tabs LIVE Linear Yes Support details & summary? No Accordion Build accordion Tabs
  • 56. ADAPTIVE WEB DESIGN: LAYER BY LAYER Adding ARIA role="tablist" 44
  • 57. ADAPTIVE WEB DESIGN: LAYER BY LAYER Adding ARIA role="tab" aria-selected="true" aria-controls="folder-1"
  • 58. ADAPTIVE WEB DESIGN: LAYER BY LAYER Adding ARIA role="tab" aria-selected="false" aria-controls="folder-4"
  • 59. ADAPTIVE WEB DESIGN: LAYER BY LAYER Adding ARIA role="tabpanel" aria-hidden="false" aria-labelledby="folder-1-tab"
  • 60. ADAPTIVE WEB DESIGN: LAYER BY LAYER Adding ARIA role="application" aria-activedescendant="folder-1"
  • 61. ADAPTIVE WEB DESIGN: LAYER BY LAYER Result!
  • 66. ADAPTIVE WEB DESIGN: LAYER BY LAYER NO!!!! #reviews { display: none; } @media only screen and (min-width:50em) { #reviews { display: block; } }
  • 67. ADAPTIVE WEB DESIGN: LAYER BY LAYER UI Construction Flow Load JS? No Links Yes No Verify browser width condition LIVE Hold for user action Click Yes Reviews Lazy Load the reviews
  • 68. ADAPTIVE WEB DESIGN: LAYER BY LAYER UI Construction Flow Load JS? No Links Yes No Verify browser width condition LIVE Hold for user action Click Yes Reviews Lazy Load the reviews
  • 69. ADAPTIVE WEB DESIGN: LAYER BY LAYER UI Construction Flow Load JS? No Links Yes No Verify browser width condition LIVE Hold for user action Click Yes Reviews Lazy Load the reviews
  • 70. ADAPTIVE WEB DESIGN: LAYER BY LAYER UI Construction Flow Load JS? No Links Yes No Verify browser width condition LIVE Hold for user action Click Yes Reviews Lazy Load the reviews
  • 71. ADAPTIVE WEB DESIGN: LAYER BY LAYER UI Construction Flow Load JS? No Links Yes No Verify browser width condition LIVE Hold for user action Click Yes Reviews Lazy Load the reviews
  • 72. ADAPTIVE WEB DESIGN: LAYER BY LAYER UI Construction Flow Load JS? No Links Yes No Verify browser width condition LIVE Hold for user action Click Yes Reviews Lazy Load the reviews
  • 73. ADAPTIVE WEB DESIGN: LAYER BY LAYER UI Construction Flow Load JS? No Links Yes No Verify browser width condition LIVE Hold for user action Click Yes Reviews Lazy Load the reviews
  • 74. ADAPTIVE WEB DESIGN: LAYER BY LAYER UI Construction Flow Load JS? No Links Yes No Verify browser width condition LIVE Hold for user action Click Yes Reviews Lazy Load the reviews
  • 75. ADAPTIVE WEB DESIGN: LAYER BY LAYER UI Construction Flow Load JS? No Links Yes No Verify browser width condition LIVE Hold for user action Click Yes Reviews Lazy Load the reviews
  • 76. ADAPTIVE WEB DESIGN: LAYER BY LAYER UI Construction Flow Load JS? No Links Yes No Verify browser width condition LIVE Hold for user action Click Yes Reviews Lazy Load the reviews
  • 77. ADAPTIVE WEB DESIGN: LAYER BY LAYER UI Construction Flow Load JS? No Links Yes No Verify browser width condition LIVE Hold for user action Click Yes Reviews Lazy Load the reviews
  • 78. ADAPTIVE WEB DESIGN: LAYER BY LAYER Lazy Loading <section class="aux reviews" id="reviews"> <header id="tab-reviews"> <a href="reviews.html" class="disabled">…</a> </header> </section>
  • 79. ADAPTIVE WEB DESIGN: LAYER BY LAYER Lazy Loading <section class="aux reviews loaded" id="reviews"> <header id="tab-reviews"> <a href="reviews.html" class="disabled open">…</a> </header> <div role="tabpanel"> <div id="p-reviews" aria-labeledby="tab-reviews"> <ol class="reviews-list"> <li> <img src="images/avatar.png" alt="Commenter Name"> <div class="review-meta"> <h3>Awesome shirt!</h3> <a href="#"><time datetime="2010-01-20" pubdate="">11/12/2011</time></a> By Bruce Bosco </div> <div class="review-content"> <p>This shirt looks awesome and is really comfortable to wear. It did shrink quite a lot when washed, but that could have just been how I ran it. All in all, it's my favourite shirt, and I love wearing it.</p> </div> </li> <!-- … --> </ol> </div> </div> </section>
  • 80. Now it’s time for YOU to do some work
  • 81. ADAPTIVE WEB DESIGN: LAYER BY LAYER Carousel
  • 82. ADAPTIVE WEB DESIGN: LAYER BY LAYER Video Gallery
  • 83. ADAPTIVE WEB DESIGN: LAYER BY LAYER Tabbed Interface
  • 84. ADAPTIVE WEB DESIGN: LAYER BY LAYER Data Tables
  • 85. ADAPTIVE WEB DESIGN: LAYER BY LAYER Scorecard
  • 86. ADAPTIVE WEB DESIGN: LAYER BY LAYER Complex Navigation
  • 87. ADAPTIVE WEB DESIGN: LAYER BY LAYER Timeline
  • 88. ADAPTIVE WEB DESIGN: LAYER BY LAYER Modal Dialogs
  • 89. ADAPTIVE WEB DESIGN: LAYER BY LAYER Accordion
  • 90. ADAPTIVE WEB DESIGN: LAYER BY LAYER Shopping Cart
  • 91. ADAPTIVE WEB DESIGN: LAYER BY LAYER Interfaces ๏ Carousel ๏ Complex Navigation ๏ Video Gallery ๏ Timeline ๏ Tab Interface v2 ๏ Modal Dialogs ๏ Data Tables ๏ Accordion ๏ Scorecard ๏ Shopping Cart 74