Re-imagining How We Design Responsively (Jonathan Fielding)

103
Reimagining How We Design Responsively Jonathan Fielding @jonthanfielding

Transcript of Re-imagining How We Design Responsively (Jonathan Fielding)

Page 1: Re-imagining How We Design Responsively (Jonathan Fielding)

Reimagining How We Design Responsively

Jonathan Fielding @jonthanfielding

Page 2: Re-imagining How We Design Responsively (Jonathan Fielding)

A bit about me…

• Technical Architect at Beamly

• Author of Beginning Responsive Design

• Regular contributor to open source, including SimpleStateManager, HTML5 Boilerplate, Echo.js, Gitissu.es, DigitalOceanCLI, Doccy among many projects

Page 3: Re-imagining How We Design Responsively (Jonathan Fielding)

Current Responsive Design techniques focus on mobile first

Page 4: Re-imagining How We Design Responsively (Jonathan Fielding)

There has not been the same focus on either the content or the performance of our

site.

Page 5: Re-imagining How We Design Responsively (Jonathan Fielding)

Our site content

Page 6: Re-imagining How We Design Responsively (Jonathan Fielding)

Bobby Anderson - Everyday Designer

“Content is king, it always has been and always will be. Content is why users visit your site, subscribe to your newsletters and follow you on social media. Content

is the single most important aspect of your website...”

Page 7: Re-imagining How We Design Responsively (Jonathan Fielding)

We need to know our content before we can design

Page 8: Re-imagining How We Design Responsively (Jonathan Fielding)

Content must work across a wide variety of devices

Page 9: Re-imagining How We Design Responsively (Jonathan Fielding)

Device usage (Global averages)

65% 29% 6%

source: Statcounter http://gs.statcounter.com/#all-comparison-ww-monthly-201403-201504

Page 10: Re-imagining How We Design Responsively (Jonathan Fielding)

Where possible, don’t rely on global statistics, look at your

own sites usage stats

Page 11: Re-imagining How We Design Responsively (Jonathan Fielding)

Prioritising Content

Page 12: Re-imagining How We Design Responsively (Jonathan Fielding)

The first step is to audit your site content

Page 13: Re-imagining How We Design Responsively (Jonathan Fielding)

Content does not have to be in the same order on every

device

Page 14: Re-imagining How We Design Responsively (Jonathan Fielding)

Example: Different content priorities for a restaurant

Small devices Large devices

Phone number Atmosphere

Directions Menu

Booking Booking

Menu Phone number

Atmosphere Directions

Page 15: Re-imagining How We Design Responsively (Jonathan Fielding)

So this is how it could look on mobile

Page 16: Re-imagining How We Design Responsively (Jonathan Fielding)

and this is how it transforms to larger devices

Page 17: Re-imagining How We Design Responsively (Jonathan Fielding)

To reorder content based on the type of device we can use

CSS Flexbox to handle the ordering and target the

device based on the screen size

Page 18: Re-imagining How We Design Responsively (Jonathan Fielding)

<div class="wrapper"> <div class="better-content-for-mobile"> I am more important on mobile </div> <div class="better-content-for-desktop"> I am more important on desktop </div> </div>

Page 19: Re-imagining How We Design Responsively (Jonathan Fielding)

@media only screen and (min-width: 768px) { .wrapper { display: flex; flex-direction: column; } .better-content-for-desktop { order: 1; }

.better-content-for-mobile { order: 2; } }

Page 20: Re-imagining How We Design Responsively (Jonathan Fielding)

The limitation here is that not all older browsers support Flexbox.

Page 21: Re-imagining How We Design Responsively (Jonathan Fielding)

If you need to support IE9 or below you should order your content for larger devices in HTML and then use the CSS

on smaller devices to reorder.

Page 22: Re-imagining How We Design Responsively (Jonathan Fielding)

If in doubt about what your user’s priorities are, invite

them in and ask them

Page 23: Re-imagining How We Design Responsively (Jonathan Fielding)

Ensure your content is discoverable

Page 24: Re-imagining How We Design Responsively (Jonathan Fielding)

On larger devices navigating a site is often really easy

Page 25: Re-imagining How We Design Responsively (Jonathan Fielding)
Page 26: Re-imagining How We Design Responsively (Jonathan Fielding)

Unfortunately, on the majority of smaller devices

navigation on a site becomes less obvious

Page 27: Re-imagining How We Design Responsively (Jonathan Fielding)
Page 28: Re-imagining How We Design Responsively (Jonathan Fielding)
Page 29: Re-imagining How We Design Responsively (Jonathan Fielding)

Larger devices also have more space for content but

don’t hide content completely on small devices

Page 30: Re-imagining How We Design Responsively (Jonathan Fielding)
Page 31: Re-imagining How We Design Responsively (Jonathan Fielding)

Instead think of ways in which you can change the functionality to better suit

the device

Page 32: Re-imagining How We Design Responsively (Jonathan Fielding)

accordion on mobileopen content on desktop

Page 33: Re-imagining How We Design Responsively (Jonathan Fielding)

accordion on mobiletabbed content on desktop

Thanks to @monsika http://codepen.io/mpiotrowicz/pen/gocmu

Page 34: Re-imagining How We Design Responsively (Jonathan Fielding)

new page on mobilelightbox on desktop

Page 35: Re-imagining How We Design Responsively (Jonathan Fielding)

simple scrollable content on mobile

parallax on desktop

Page 36: Re-imagining How We Design Responsively (Jonathan Fielding)

How to measure the success of content

optimisation

Page 37: Re-imagining How We Design Responsively (Jonathan Fielding)

Ask users to test your site and observe

Page 38: Re-imagining How We Design Responsively (Jonathan Fielding)

A-B test different functionality

Page 39: Re-imagining How We Design Responsively (Jonathan Fielding)

Content is King

Page 40: Re-imagining How We Design Responsively (Jonathan Fielding)

Time for a cat break

Page 41: Re-imagining How We Design Responsively (Jonathan Fielding)

Site Performance

Page 42: Re-imagining How We Design Responsively (Jonathan Fielding)

What is performance?

Page 43: Re-imagining How We Design Responsively (Jonathan Fielding)

– Google

“the action or process of performing a task or function”

Page 44: Re-imagining How We Design Responsively (Jonathan Fielding)

In relation to a website, performance is the measure

of how long it takes to deliver the content to the user

Page 45: Re-imagining How We Design Responsively (Jonathan Fielding)

There are two key types of performance that are

important to a website

Page 46: Re-imagining How We Design Responsively (Jonathan Fielding)

Page load performance - The time it takes to fully load

a page

Page 47: Re-imagining How We Design Responsively (Jonathan Fielding)

Perceived performance - the perception of the user of the performance of our site

Page 48: Re-imagining How We Design Responsively (Jonathan Fielding)
Page 49: Re-imagining How We Design Responsively (Jonathan Fielding)

Why should I care about the performance of the

site?

Page 50: Re-imagining How We Design Responsively (Jonathan Fielding)

A responsive site is expected to work on a wide variety of

internet connections

Page 51: Re-imagining How We Design Responsively (Jonathan Fielding)

The trend of the past few years however is for pages to

increase in weight

Page 52: Re-imagining How We Design Responsively (Jonathan Fielding)

Average page weight has been increasing year on year

Aver

age

Page

Siz

e (k

B)

0

550

1100

1650

2200

March 2012 March 2013 March 2014 March 2015

Data from http://httparchive.org/interesting.php

Page 53: Re-imagining How We Design Responsively (Jonathan Fielding)

Page weight by content typeMarch 2015March 2012

Charts from http://httparchive.org/interesting.php

Page 54: Re-imagining How We Design Responsively (Jonathan Fielding)

The average time to start rendering is also increasing

Rend

er s

tart

(ms)

0

775

1550

2325

3100

August 2013 March 2014 August 2014 March 2015

Data from http://httparchive.org/interesting.php

Page 55: Re-imagining How We Design Responsively (Jonathan Fielding)

How can I justify spending the time on performance?

Page 56: Re-imagining How We Design Responsively (Jonathan Fielding)

• Amazon found every 100ms delay in loading a page cost them 1% in sales

• Google found an extra 500ms delay in loading of search results decreased traffic by 20%

Page 57: Re-imagining How We Design Responsively (Jonathan Fielding)

What steps can I take to improve site performance?

Page 58: Re-imagining How We Design Responsively (Jonathan Fielding)

Optimise how you load your assets

Page 59: Re-imagining How We Design Responsively (Jonathan Fielding)

Provide different images for different viewport sizes using

the <picture> element

Page 60: Re-imagining How We Design Responsively (Jonathan Fielding)

<picture> <source srcset="large.jpg" media="(min-width: 1200px)"> <source srcset="medium.jpg" media="(min-width: 600px)"> <img src="small.jpg" alt="Picture element"> </picture>

Page 61: Re-imagining How We Design Responsively (Jonathan Fielding)
Page 62: Re-imagining How We Design Responsively (Jonathan Fielding)

To use the picture element on your site you will need to

include the polyfill which is called “picturefill”

Page 63: Re-imagining How We Design Responsively (Jonathan Fielding)

Defer loading of both image and video to improve the

initial page load

Page 64: Re-imagining How We Design Responsively (Jonathan Fielding)

The most common content to defer loading is images

Page 65: Re-imagining How We Design Responsively (Jonathan Fielding)

In cases where loading assets was deferred, it is important

to ensure a suitable placeholder is in place

Page 66: Re-imagining How We Design Responsively (Jonathan Fielding)

Defer loading of content

Page 67: Re-imagining How We Design Responsively (Jonathan Fielding)

The content is the heart of our site but not all content is

created equal

Page 68: Re-imagining How We Design Responsively (Jonathan Fielding)

Lets look at an example of how Metro defer the

loading of related content

Page 69: Re-imagining How We Design Responsively (Jonathan Fielding)
Page 70: Re-imagining How We Design Responsively (Jonathan Fielding)
Page 71: Re-imagining How We Design Responsively (Jonathan Fielding)
Page 72: Re-imagining How We Design Responsively (Jonathan Fielding)

Another example where content is deferred is

Facebook

Page 73: Re-imagining How We Design Responsively (Jonathan Fielding)

Facebook choose to defer loading the majority of the content of their page

Page 74: Re-imagining How We Design Responsively (Jonathan Fielding)

The biggest danger of deferring content is that if JavaScript fails to load the

content that is deferred will not be loaded

Page 75: Re-imagining How We Design Responsively (Jonathan Fielding)
Page 76: Re-imagining How We Design Responsively (Jonathan Fielding)

We should therefore be careful with what content we

choose to defer loading

Page 77: Re-imagining How We Design Responsively (Jonathan Fielding)

Optimise how you load your JavaScript

Page 78: Re-imagining How We Design Responsively (Jonathan Fielding)

We can separate our JavaScript into two distinct

types

Page 79: Re-imagining How We Design Responsively (Jonathan Fielding)

Critical JavaScript is the JavaScript required to

initialise our page.

Page 80: Re-imagining How We Design Responsively (Jonathan Fielding)

Add events which track how user tries to interact with the

page

Page 81: Re-imagining How We Design Responsively (Jonathan Fielding)

Show states which let the user know something is

happening while we still wait for Main JS to load

Page 82: Re-imagining How We Design Responsively (Jonathan Fielding)

Trigger loading of the Main JS when the rest of the page

has loaded

Page 83: Re-imagining How We Design Responsively (Jonathan Fielding)

Then we have our main JavaScript,

Page 84: Re-imagining How We Design Responsively (Jonathan Fielding)

Fire any events that had been deferred

Page 85: Re-imagining How We Design Responsively (Jonathan Fielding)

Replace the deferred event listeners with the real ones

Page 86: Re-imagining How We Design Responsively (Jonathan Fielding)

Include all the rest of the functionality required for the

site to function

Page 87: Re-imagining How We Design Responsively (Jonathan Fielding)

How this works in practice

Page 88: Re-imagining How We Design Responsively (Jonathan Fielding)
Page 89: Re-imagining How We Design Responsively (Jonathan Fielding)
Page 90: Re-imagining How We Design Responsively (Jonathan Fielding)

Measure your performance improvements

Page 91: Re-imagining How We Design Responsively (Jonathan Fielding)

It is important to regularly measure the site

performance

Page 92: Re-imagining How We Design Responsively (Jonathan Fielding)

The simplest tool for measuring performance is

www.webpagetest.org

Page 93: Re-imagining How We Design Responsively (Jonathan Fielding)
Page 94: Re-imagining How We Design Responsively (Jonathan Fielding)
Page 95: Re-imagining How We Design Responsively (Jonathan Fielding)
Page 96: Re-imagining How We Design Responsively (Jonathan Fielding)

Need for speed

Page 97: Re-imagining How We Design Responsively (Jonathan Fielding)

In Summary

Page 98: Re-imagining How We Design Responsively (Jonathan Fielding)

When building a responsive site we should spend time

focusing on the content and performance

Page 99: Re-imagining How We Design Responsively (Jonathan Fielding)

Our content should be prioritised and discoverable

Page 100: Re-imagining How We Design Responsively (Jonathan Fielding)

And the perception of our site to our users should be

that it loads fast

Page 101: Re-imagining How We Design Responsively (Jonathan Fielding)

Full examples of everything we have talked about can be found at www.jonathanfielding.com/

fowd2015

Page 102: Re-imagining How We Design Responsively (Jonathan Fielding)

A special thanks goes out to to Charlie Fielding, Kate Montgomery, Phil Nash,

Callum Macrae and everyone at Beamly who helped me with putting these slides together.

Page 103: Re-imagining How We Design Responsively (Jonathan Fielding)

Thank you, any questions?