Top Banner
Practical Responsive Web Design Northeast PHP 2013 Jonathan Klein, Performance Engineer @jonathanklein Sunday, August 18, 13
146

Practical Responsive Web Design - Northeast PHP 2013

Oct 30, 2014

Download

Technology

Jonathan Klein

I gave this talk at Northeast PHP 2013 in Boston, MA.

Slides and links available at http://jkle.in/rwd
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: Practical Responsive Web Design - Northeast PHP 2013

Practical Responsive Web Design

Northeast PHP 2013Jonathan Klein, Performance Engineer@jonathanklein

Sunday, August 18, 13

Page 2: Practical Responsive Web Design - Northeast PHP 2013

Slides, Linksjkle.in/rwd

Sunday, August 18, 13

Page 3: Practical Responsive Web Design - Northeast PHP 2013

Some Etsy Stats

Sunday, August 18, 13

Page 4: Practical Responsive Web Design - Northeast PHP 2013

Some Etsy Stats• Handmade marketplace

Sunday, August 18, 13

Page 5: Practical Responsive Web Design - Northeast PHP 2013

Some Etsy Stats• Handmade marketplace• 1.5 billion page views/month

Sunday, August 18, 13

Page 6: Practical Responsive Web Design - Northeast PHP 2013

Some Etsy Stats• Handmade marketplace• 1.5 billion page views/month• Almost $1B in sales last year

Sunday, August 18, 13

Page 7: Practical Responsive Web Design - Northeast PHP 2013

Some Etsy Stats• Handmade marketplace• 1.5 billion page views/month• Almost $1B in sales last year• ~1M lines of PHP

Sunday, August 18, 13

Page 8: Practical Responsive Web Design - Northeast PHP 2013

Why Responsive Web Design?

Sunday, August 18, 13

Page 9: Practical Responsive Web Design - Northeast PHP 2013

Main Advantages

Sunday, August 18, 13

Page 10: Practical Responsive Web Design - Northeast PHP 2013

Main Advantages

• Maintainability

Sunday, August 18, 13

Page 11: Practical Responsive Web Design - Northeast PHP 2013

Main Advantages

• Maintainability• SEO

Sunday, August 18, 13

Page 12: Practical Responsive Web Design - Northeast PHP 2013

Main Advantages

• Maintainability• SEO• User Experience

Sunday, August 18, 13

Page 13: Practical Responsive Web Design - Northeast PHP 2013

Main Advantages

• Maintainability• SEO• User Experience• Performance

Sunday, August 18, 13

Page 14: Practical Responsive Web Design - Northeast PHP 2013

1.6 seconds

Sunday, August 18, 13

Page 15: Practical Responsive Web Design - Northeast PHP 2013

Two Assertions

Sunday, August 18, 13

Page 16: Practical Responsive Web Design - Northeast PHP 2013

1. RWD isn’t that hard

Sunday, August 18, 13

Page 17: Practical Responsive Web Design - Northeast PHP 2013

2. RWD can be fast

Sunday, August 18, 13

Page 18: Practical Responsive Web Design - Northeast PHP 2013

The Basics

Sunday, August 18, 13

Page 19: Practical Responsive Web Design - Northeast PHP 2013

Building blocks of RWD/* Greater than 900px wide */

@media screen and (min-width: 56.25em) {...}

/* Retina Display */@media screen and (min-device-pixel-ratio: 2) {...}

/* You can chain these */@media screen and (min-width: 56.25em) and (min-device-pixel-ratio: 2) {...}

Sunday, August 18, 13

Page 20: Practical Responsive Web Design - Northeast PHP 2013

Building blocks of RWD/* Greater than 900px wide */

@media screen and (min-width: 56.25em) {...}

/* Retina Display */@media screen and (min-device-pixel-ratio: 2) {...}

/* You can chain these */@media screen and (min-width: 56.25em) and (min-device-pixel-ratio: 2) {...}

Sunday, August 18, 13

Page 21: Practical Responsive Web Design - Northeast PHP 2013

Sunday, August 18, 13

Page 22: Practical Responsive Web Design - Northeast PHP 2013

Breakpoints

Sunday, August 18, 13

Page 23: Practical Responsive Web Design - Northeast PHP 2013

Sunday, August 18, 13

Page 24: Practical Responsive Web Design - Northeast PHP 2013

What Breakpoints to Use?

Sunday, August 18, 13

Page 25: Practical Responsive Web Design - Northeast PHP 2013

What Breakpoints to Use?

• Don’t think about devices

Sunday, August 18, 13

Page 26: Practical Responsive Web Design - Northeast PHP 2013

What Breakpoints to Use?

• Don’t think about devices• “Make it look good”

Sunday, August 18, 13

Page 27: Practical Responsive Web Design - Northeast PHP 2013

What Breakpoints to Use?

• Don’t think about devices• “Make it look good”• Something like 600px, 900px, max

Sunday, August 18, 13

Page 28: Practical Responsive Web Design - Northeast PHP 2013

What Breakpoints to Use?

• Don’t think about devices• “Make it look good”• Something like 600px, 900px, max• Divide by 16 to get em’s

Sunday, August 18, 13

Page 29: Practical Responsive Web Design - Northeast PHP 2013

Retina Images

Sunday, August 18, 13

Page 30: Practical Responsive Web Design - Northeast PHP 2013

Start With the Normal Version

/* Small version of the logo */.logo { background-image: url(logo_sm.png); background-repeat: no-repeat; background-position: center; background-size: 230px 50px;}

Sunday, August 18, 13

Page 31: Practical Responsive Web Design - Northeast PHP 2013

Start With the Normal Version

/* Small version of the logo */.logo { background-image: url(logo_sm.png); background-repeat: no-repeat; background-position: center; background-size: 230px 50px;}

Sunday, August 18, 13

Page 32: Practical Responsive Web Design - Northeast PHP 2013

High Res Screens

/* Provide a hi-res logo for retina screens */@media screen and (-webkit-min-device-pixel-ratio: 2) { .logo { background-image: url(logo_lg.png); }}

Sunday, August 18, 13

Page 33: Practical Responsive Web Design - Northeast PHP 2013

High Res Screens

/* Provide a hi-res logo for retina screens */@media screen and (-webkit-min-device-pixel-ratio: 2) { .logo { background-image: url(logo_lg.png); }}

Sunday, August 18, 13

Page 34: Practical Responsive Web Design - Northeast PHP 2013

RWD In Action

Sunday, August 18, 13

Page 35: Practical Responsive Web Design - Northeast PHP 2013

Sunday, August 18, 13

Page 36: Practical Responsive Web Design - Northeast PHP 2013

Sunday, August 18, 13

Page 37: Practical Responsive Web Design - Northeast PHP 2013

Clean up some CSS.article {

width: 31%; min-width:250px; }

#content .wrapper { width:auto; }

#page { background:none; }

Sunday, August 18, 13

Page 38: Practical Responsive Web Design - Northeast PHP 2013

Make it Responsive /* Two articles across */@media screen and (max-width: 850px) {

.article { width: 46%; } }

/* One article across */ @media screen and (max-width: 530px) { .article { width: 90%; } }

Sunday, August 18, 13

Page 39: Practical Responsive Web Design - Northeast PHP 2013

Sunday, August 18, 13

Page 40: Practical Responsive Web Design - Northeast PHP 2013

Demo

Sunday, August 18, 13

Page 41: Practical Responsive Web Design - Northeast PHP 2013

Performance

Sunday, August 18, 13

Page 42: Practical Responsive Web Design - Northeast PHP 2013

A Few Considerations

Sunday, August 18, 13

Page 43: Practical Responsive Web Design - Northeast PHP 2013

A Few Considerations

• Extra CSS (minimal)

Sunday, August 18, 13

Page 44: Practical Responsive Web Design - Northeast PHP 2013

A Few Considerations

• Extra CSS (minimal)• Retina Images (ouch)

Sunday, August 18, 13

Page 45: Practical Responsive Web Design - Northeast PHP 2013

A Few Considerations

• Extra CSS (minimal)• Retina Images (ouch)• Larger images than needed

Sunday, August 18, 13

Page 46: Practical Responsive Web Design - Northeast PHP 2013

A Few Considerations

• Extra CSS (minimal)• Retina Images (ouch)• Larger images than needed• Extra Image Requests

Sunday, August 18, 13

Page 47: Practical Responsive Web Design - Northeast PHP 2013

A Few Considerations

• Extra CSS (minimal)• Retina Images (ouch)• Larger images than needed• Extra Image Requests

Sunday, August 18, 13

Page 48: Practical Responsive Web Design - Northeast PHP 2013

Responsive Images

Sunday, August 18, 13

Page 49: Practical Responsive Web Design - Northeast PHP 2013

Three Performance Goals:

Sunday, August 18, 13

Page 50: Practical Responsive Web Design - Northeast PHP 2013

Three Performance Goals:

1. Start with a small image

Sunday, August 18, 13

Page 51: Practical Responsive Web Design - Northeast PHP 2013

Three Performance Goals:

1. Start with a small image

2. Upgrade to larger size without downloading both

Sunday, August 18, 13

Page 52: Practical Responsive Web Design - Northeast PHP 2013

Three Performance Goals:

1. Start with a small image

2. Upgrade to larger size without downloading both

3. Unique image URLs (caching)

Sunday, August 18, 13

Page 53: Practical Responsive Web Design - Northeast PHP 2013

Automate

Sunday, August 18, 13

Page 54: Practical Responsive Web Design - Northeast PHP 2013

Resize on the fly

Sunday, August 18, 13

Page 55: Practical Responsive Web Design - Northeast PHP 2013

Resize on the fly

• Based on browser resolution, make the right image

Sunday, August 18, 13

Page 56: Practical Responsive Web Design - Northeast PHP 2013

Resize on the fly

• Based on browser resolution, make the right image

• Round a bit

Sunday, August 18, 13

Page 57: Practical Responsive Web Design - Northeast PHP 2013

Resize on the fly

• Based on browser resolution, make the right image

• Round a bit• http://adaptive-images.com

Sunday, August 18, 13

Page 58: Practical Responsive Web Design - Northeast PHP 2013

Lossless Compression

Sunday, August 18, 13

Page 59: Practical Responsive Web Design - Northeast PHP 2013

Lossless Compression

Sunday, August 18, 13

Page 60: Practical Responsive Web Design - Northeast PHP 2013

140 KB

Lossless Compression

Sunday, August 18, 13

Page 61: Practical Responsive Web Design - Northeast PHP 2013

140 KB 85 KB

Lossless Compression

Sunday, August 18, 13

Page 62: Practical Responsive Web Design - Northeast PHP 2013

140 KB 85 KB

Lossless Compression

• http://www.smushit.com/ysmush.it/

• https://developers.google.com/speed/pagespeed/

Sunday, August 18, 13

Page 63: Practical Responsive Web Design - Northeast PHP 2013

• Automate HTML output• Plan for the future

More Automation

Sunday, August 18, 13

Page 64: Practical Responsive Web Design - Northeast PHP 2013

HTML Output (picturefill)

Sunday, August 18, 13

Page 65: Practical Responsive Web Design - Northeast PHP 2013

HTML Output (picturefill)

• https://github.com/scottjehl/picturefill

Sunday, August 18, 13

Page 66: Practical Responsive Web Design - Northeast PHP 2013

HTML Output (picturefill)

• https://github.com/scottjehl/picturefill

• Mimics proposed <picture> element

Sunday, August 18, 13

Page 67: Practical Responsive Web Design - Northeast PHP 2013

HTML Output (picturefill)

• https://github.com/scottjehl/picturefill

• Mimics proposed <picture> element

• < 0.5K JS file

Sunday, August 18, 13

Page 68: Practical Responsive Web Design - Northeast PHP 2013

HTML Output (picturefill)

• https://github.com/scottjehl/picturefill

• Mimics proposed <picture> element

• < 0.5K JS file• Supports all media queries

Sunday, August 18, 13

Page 69: Practical Responsive Web Design - Northeast PHP 2013

HTML Output (picturefill)

• https://github.com/scottjehl/picturefill

• Mimics proposed <picture> element

• < 0.5K JS file• Supports all media queries• Works across all browsers

Sunday, August 18, 13

Page 70: Practical Responsive Web Design - Northeast PHP 2013

<div data-picture data-alt="Interesting Image Alt Text"> <div data-src="small.jpg"></div> <div data-src="medium.jpg" data-media="(min-width: 400px)"></div> <div data-src="large.jpg" data-media="(min-width: 800px)"></div> <div data-src="extralarge.jpg" data-media="(min-width: 1000px)"></div>

<!-- Fallback content for non-JS browsers. Same img src as the initial, unqualified source element. --> <noscript> <img src="small.jpg" alt="Interesting Image Alt Text"> </noscript></div>

Sunday, August 18, 13

Page 71: Practical Responsive Web Design - Northeast PHP 2013

<div data-picture data-alt="Interesting Image Alt Text"> <div data-src="small.jpg"></div> <div data-src="medium.jpg" data-media="(min-width: 400px)"></div> <div data-src="large.jpg" data-media="(min-width: 800px)"></div> <div data-src="extralarge.jpg" data-media="(min-width: 1000px)"></div>

<!-- Fallback content for non-JS browsers. Same img src as the initial, unqualified source element. --> <noscript> <img src="small.jpg" alt="Interesting Image Alt Text"> </noscript></div>

IE 6, 7, 8 get this

Sunday, August 18, 13

Page 72: Practical Responsive Web Design - Northeast PHP 2013

How does it do?

Sunday, August 18, 13

Page 73: Practical Responsive Web Design - Northeast PHP 2013

How does it do?

✓ Unique image URLs

Sunday, August 18, 13

Page 74: Practical Responsive Web Design - Northeast PHP 2013

How does it do?

✓ Unique image URLs

✓ Start with smallest image

Sunday, August 18, 13

Page 75: Practical Responsive Web Design - Northeast PHP 2013

How does it do?

✓ Unique image URLs

✓ Start with smallest image

✓ Only one image download

Sunday, August 18, 13

Page 76: Practical Responsive Web Design - Northeast PHP 2013

How does it do?

✓ Unique image URLs

✓ Start with smallest image

✓ Only one image download

✓ Fallback for old IE

Sunday, August 18, 13

Page 77: Practical Responsive Web Design - Northeast PHP 2013

But that markup...

Sunday, August 18, 13

Page 78: Practical Responsive Web Design - Northeast PHP 2013

Plan to Replace Whatever You Build

Sunday, August 18, 13

Page 80: Practical Responsive Web Design - Northeast PHP 2013

Don’t type, click:jkle.in/rwd

Sunday, August 18, 13

Page 81: Practical Responsive Web Design - Northeast PHP 2013

Clown Car Technique

Sunday, August 18, 13

Page 82: Practical Responsive Web Design - Northeast PHP 2013

Basics

Sunday, August 18, 13

Page 83: Practical Responsive Web Design - Northeast PHP 2013

Basics

• <object> tag

Sunday, August 18, 13

Page 84: Practical Responsive Web Design - Northeast PHP 2013

Basics

• <object> tag• References SVG file

Sunday, August 18, 13

Page 85: Practical Responsive Web Design - Northeast PHP 2013

Basics

• <object> tag• References SVG file• ...as a DataURI

Sunday, August 18, 13

Page 86: Practical Responsive Web Design - Northeast PHP 2013

Basics

• <object> tag• References SVG file• ...as a DataURI• ...URL encoded

Sunday, August 18, 13

Page 87: Practical Responsive Web Design - Northeast PHP 2013

Basics

• <object> tag• References SVG file• ...as a DataURI• ...URL encoded• Wrapping conditional comment

Sunday, August 18, 13

Page 88: Practical Responsive Web Design - Northeast PHP 2013

Clowns and Cars<object data="data:image/svg+xml,%3Csvg%20viewBox='0%200%20300%20329'%20preserveAspectRatio='xMidYMid%20meet'%20xmlns='http://www.w3.org/2000/svg'%3E%3Ctitle%3EClown%20Car%20Technique%3C/title%3E%3Cstyle%3Esvg%7Bbackground-size:100%25%20100%25;background-repeat:no-repeat;%7D@media%20screen%20and%20(max-width:400px)%7Bsvg%7Bbackground-image:url(images/small.png);%7D%7D@media%20screen%20and%20(min-width:401px)%7Bsvg%7Bbackground-image:url(images/medium.png);%7D%7D@media%20screen%20and%20(min-width:701px)%7Bsvg%7Bbackground-image:url(images/big.png);%7D%7D@media%20screen%20and%20(min-width:1001px)%7Bsvg%7Bbackground-image:url(images/huge.png);%7D%7D%3C/style%3E%3C/svg%3E"

type="image/svg+xml"> <!--[if lte IE 8]> <img src="images/medium.png" alt="Fallback for IE"> <![endif]--></object>

Sunday, August 18, 13

Page 89: Practical Responsive Web Design - Northeast PHP 2013

Benefits

Sunday, August 18, 13

Page 90: Practical Responsive Web Design - Northeast PHP 2013

Benefits

• All logic in an SVG file

Sunday, August 18, 13

Page 91: Practical Responsive Web Design - Northeast PHP 2013

Benefits

• All logic in an SVG file• One HTTP request

Sunday, August 18, 13

Page 92: Practical Responsive Web Design - Northeast PHP 2013

Benefits

• All logic in an SVG file• One HTTP request• Management is easy

Sunday, August 18, 13

Page 93: Practical Responsive Web Design - Northeast PHP 2013

Benefits

• All logic in an SVG file• One HTTP request• Management is easy• Adapts to browser size automatically

Sunday, August 18, 13

Page 94: Practical Responsive Web Design - Northeast PHP 2013

Drawbacks

Sunday, August 18, 13

Page 95: Practical Responsive Web Design - Northeast PHP 2013

Drawbacks

• Accessibility

Sunday, August 18, 13

Page 96: Practical Responsive Web Design - Northeast PHP 2013

Drawbacks

• Accessibility• No right-click

Sunday, August 18, 13

Page 97: Practical Responsive Web Design - Northeast PHP 2013

Drawbacks

• Accessibility• No right-click• Doesn’t work on Android <= 2.3

Sunday, August 18, 13

Page 98: Practical Responsive Web Design - Northeast PHP 2013

We Need Something Better

Sunday, August 18, 13

Page 99: Practical Responsive Web Design - Northeast PHP 2013

display:none

Sunday, August 18, 13

Page 100: Practical Responsive Web Design - Northeast PHP 2013

<img src="foo.png" style="display:none" />

Sunday, August 18, 13

Page 101: Practical Responsive Web Design - Northeast PHP 2013

<img src="foo.png" style="display:none" />

Image is Downloaded

Sunday, August 18, 13

Page 102: Practical Responsive Web Design - Northeast PHP 2013

<div style="display:none;"> <img src="foo.png" style="display:none" /></div>

Sunday, August 18, 13

Page 103: Practical Responsive Web Design - Northeast PHP 2013

<div style="display:none;"> <img src="foo.png" style="display:none" /></div>

Image is Downloaded

Sunday, August 18, 13

Page 104: Practical Responsive Web Design - Northeast PHP 2013

<style> .bg { background-image: url(foo.png); width:100px; height: 100px; display: none; }</style>

<div class="bg"></div>

Sunday, August 18, 13

Page 105: Practical Responsive Web Design - Northeast PHP 2013

<style> .bg { background-image: url(foo.png); width:100px; height: 100px; display: none; }</style>

<div class="bg"></div>

Image is Downloaded

Sunday, August 18, 13

Page 106: Practical Responsive Web Design - Northeast PHP 2013

<style> .bg { background-image: url(foo.png); width:100px; height: 100px; display: none; }</style>

<div style="display:none;"> <div class="bg"></div></div>

Sunday, August 18, 13

Page 107: Practical Responsive Web Design - Northeast PHP 2013

<style> .bg { background-image: url(foo.png); width:100px; height: 100px; display: none; }</style>

<div style="display:none;"> <div class="bg"></div></div>

Image is NOT Downloaded

Sunday, August 18, 13

Page 108: Practical Responsive Web Design - Northeast PHP 2013

<img> with display:none Downloaded

<img> with parent display:none

Downloaded

background image with display:none

Downloaded

background image with parent display:none

Not Downloaded

Sunday, August 18, 13

Page 109: Practical Responsive Web Design - Northeast PHP 2013

Workarounds

Sunday, August 18, 13

Page 110: Practical Responsive Web Design - Northeast PHP 2013

Handling display:none

Sunday, August 18, 13

Page 111: Practical Responsive Web Design - Northeast PHP 2013

Handling display:none

• Start with an empty src, use JS

Sunday, August 18, 13

Page 112: Practical Responsive Web Design - Northeast PHP 2013

Handling display:none

• Start with an empty src, use JS• Server side detection

Sunday, August 18, 13

Page 114: Practical Responsive Web Design - Northeast PHP 2013

Media Query Browser Support

Sunday, August 18, 13

Page 115: Practical Responsive Web Design - Northeast PHP 2013

Sunday, August 18, 13

Page 116: Practical Responsive Web Design - Northeast PHP 2013

Fail

Sunday, August 18, 13

Page 118: Practical Responsive Web Design - Northeast PHP 2013

The Future: Client Hints

Sunday, August 18, 13

Page 119: Practical Responsive Web Design - Northeast PHP 2013

Proposal by Ilya Grigorik

Sunday, August 18, 13

Page 120: Practical Responsive Web Design - Northeast PHP 2013

Proposal by Ilya Grigorik

• Client (browser) sends an additional HTTP Header

Sunday, August 18, 13

Page 121: Practical Responsive Web Design - Northeast PHP 2013

Proposal by Ilya Grigorik

• Client (browser) sends an additional HTTP Header

• CH: dh=598, dw=384, dpr=2.0, t

Sunday, August 18, 13

Page 122: Practical Responsive Web Design - Northeast PHP 2013

Proposal by Ilya Grigorik

• Client (browser) sends an additional HTTP Header

• CH: dh=598, dw=384, dpr=2.0, t• https://github.com/igrigorik/http-client-hints/

Sunday, August 18, 13

Page 123: Practical Responsive Web Design - Northeast PHP 2013

Homework

Sunday, August 18, 13

Page 124: Practical Responsive Web Design - Northeast PHP 2013

Sunday, August 18, 13

Page 125: Practical Responsive Web Design - Northeast PHP 2013

Find your favorite non-responsive site

Sunday, August 18, 13

Page 126: Practical Responsive Web Design - Northeast PHP 2013

Find your favorite non-responsive site

Sunday, August 18, 13

Page 127: Practical Responsive Web Design - Northeast PHP 2013

Find your favorite non-responsive site

Save the HTML locally

Sunday, August 18, 13

Page 128: Practical Responsive Web Design - Northeast PHP 2013

Find your favorite non-responsive site

Save the HTML locally

Sunday, August 18, 13

Page 129: Practical Responsive Web Design - Northeast PHP 2013

Find your favorite non-responsive site

Save the HTML locally

Add some media queries and a breakpoint

Sunday, August 18, 13

Page 130: Practical Responsive Web Design - Northeast PHP 2013

Find your favorite non-responsive site

Save the HTML locally

Add some media queries and a breakpoint

Sunday, August 18, 13

Page 131: Practical Responsive Web Design - Northeast PHP 2013

Find your favorite non-responsive site

Save the HTML locally

Add some media queries and a breakpoint

Make one retina image and use it

Sunday, August 18, 13

Page 132: Practical Responsive Web Design - Northeast PHP 2013

Find your favorite non-responsive site

Save the HTML locally

Add some media queries and a breakpoint

Make one retina image and use it

Sunday, August 18, 13

Page 133: Practical Responsive Web Design - Northeast PHP 2013

Congratulations!

Sunday, August 18, 13

Page 134: Practical Responsive Web Design - Northeast PHP 2013

• Resize browser window, use console when you want a breakpoint • document.body.offsetWidth

• If you must start w/ desktop, use:• @media screen and (max-width: 900px) {

Some Hints

Sunday, August 18, 13

Page 135: Practical Responsive Web Design - Northeast PHP 2013

Sunday, August 18, 13

Page 136: Practical Responsive Web Design - Northeast PHP 2013

Synthetic Testing

Sunday, August 18, 13

Page 137: Practical Responsive Web Design - Northeast PHP 2013

WebPagetest

• Use Chrome• Script: • setviewportsize 400 600

• navigate bostonglobe.com

Sunday, August 18, 13

Page 138: Practical Responsive Web Design - Northeast PHP 2013

Sunday, August 18, 13

Page 139: Practical Responsive Web Design - Northeast PHP 2013

Recap

Sunday, August 18, 13

Page 140: Practical Responsive Web Design - Northeast PHP 2013

Takeaways

Sunday, August 18, 13

Page 141: Practical Responsive Web Design - Northeast PHP 2013

Takeaways

• Start with small sizes on new sites

Sunday, August 18, 13

Page 142: Practical Responsive Web Design - Northeast PHP 2013

Takeaways

• Start with small sizes on new sites• Use em’s and %’s

Sunday, August 18, 13

Page 143: Practical Responsive Web Design - Northeast PHP 2013

Takeaways

• Start with small sizes on new sites• Use em’s and %’s• ~3-4 device independent breakpoints

Sunday, August 18, 13

Page 144: Practical Responsive Web Design - Northeast PHP 2013

Takeaways

• Start with small sizes on new sites• Use em’s and %’s• ~3-4 device independent breakpoints• Use Responsive Images

Sunday, August 18, 13

Page 145: Practical Responsive Web Design - Northeast PHP 2013

Takeaways

• Start with small sizes on new sites• Use em’s and %’s• ~3-4 device independent breakpoints• Use Responsive Images• Have a fallback plan for IE

Sunday, August 18, 13

Page 146: Practical Responsive Web Design - Northeast PHP 2013

Get in Touch

www.etsy.com/careers

[email protected]

@jonathanklein

Sunday, August 18, 13