optimizing your layout for phones and tablets using viewport and media queries

124
Optimizing your layout for phones and tablets using viewport and media queries Andreas Bovens - Opera Software

Upload: andreas-bovens

Post on 28-Jan-2015

112 views

Category:

Technology


0 download

DESCRIPTION

With mobile web browsing becoming widespread, users expect their favorite sites to "just work" on their mobile device of choice. Exciting times, especially as there are a number of new hooks in modern mobile browsers that help web designers to create compelling experiences on phones and tablets. In my talk, I cover the various features of the viewport meta tag, and look at how they allow you to control mobile browsers' zoom behaviors. I also connect this to Opera's CSS Device Adaptation proposal, which brings this feature to CSS in the form of the @viewport rule. Furthermore, I explain how viewport can be combined with media queries to create super-flexible layouts that work nicely across different browsing contexts and devices, and explore various strategies to dealing with different screen sizes and pixel densities. Viewport demos can be found on http://people.opera.com/andreasb/demos/parisweb2011/

TRANSCRIPT

Page 1: Optimizing your layout for phones and tablets using viewport and media queries

Optimizing your layout for phones and tablets using viewport and media queriesAndreas Bovens - Opera Software

Page 7: Optimizing your layout for phones and tablets using viewport and media queries

Chris Mills

Bruce Lawson Daniel Davis

Karl Dubost

Andreas BovensShwetank Dixit

Divya Manian

Luz Caballero

Tiffany Brown

Vadim Makeev Mike TaylorZi Bin CheahPatrick Lauke

Page 8: Optimizing your layout for phones and tablets using viewport and media queries

Coherence Screen sharingSyncronization

Device shifting Complementarity Simultaneity

These patterns should help understand and define strategies for the multiscreen world.

“Patterns for Multiscreen Strategies”

By Precious http://slidesha.re/kiip5y

Page 9: Optimizing your layout for phones and tablets using viewport and media queries

Coherence Screen sharingSyncronization

Device shifting Complementarity Simultaneity

These patterns should help understand and define strategies for the multiscreen world.

http://slidesha.re/kiip5y

Page 10: Optimizing your layout for phones and tablets using viewport and media queries

Coherence

“A digital product or service looks and works coherently across devices. Features are optimized for specific device characteristics and usage scenarios.”

http://slidesha.re/kiip5y

Page 11: Optimizing your layout for phones and tablets using viewport and media queries

http://slidesha.re/kiip5yCoherence

Page 12: Optimizing your layout for phones and tablets using viewport and media queries

?

Page 13: Optimizing your layout for phones and tablets using viewport and media queries

show top-left and pan

Page 14: Optimizing your layout for phones and tablets using viewport and media queries
Page 15: Optimizing your layout for phones and tablets using viewport and media queries
Page 16: Optimizing your layout for phones and tablets using viewport and media queries

small screen rendering aka single column view

Page 17: Optimizing your layout for phones and tablets using viewport and media queries
Page 18: Optimizing your layout for phones and tablets using viewport and media queries
Page 19: Optimizing your layout for phones and tablets using viewport and media queries
Page 20: Optimizing your layout for phones and tablets using viewport and media queries

zoom and pan

Page 21: Optimizing your layout for phones and tablets using viewport and media queries
Page 22: Optimizing your layout for phones and tablets using viewport and media queries
Page 23: Optimizing your layout for phones and tablets using viewport and media queries
Page 24: Optimizing your layout for phones and tablets using viewport and media queries
Page 25: Optimizing your layout for phones and tablets using viewport and media queries
Page 26: Optimizing your layout for phones and tablets using viewport and media queries
Page 27: Optimizing your layout for phones and tablets using viewport and media queries
Page 28: Optimizing your layout for phones and tablets using viewport and media queries

That’s all nice, but what if I want to control

this zooming behavior?

Page 29: Optimizing your layout for phones and tablets using viewport and media queries

Answer:viewport meta

Page 30: Optimizing your layout for phones and tablets using viewport and media queries
Page 31: Optimizing your layout for phones and tablets using viewport and media queries

This is the viewport

Page 32: Optimizing your layout for phones and tablets using viewport and media queries

(not just this)

Page 33: Optimizing your layout for phones and tablets using viewport and media queries

Most commonly though, you’ll want to focus on controlling page width...

Page 34: Optimizing your layout for phones and tablets using viewport and media queries

... using a "viewport" meta tag in the <head> of the page.

<meta ...>

Page 35: Optimizing your layout for phones and tablets using viewport and media queries

works in:

with some exceptions ;-)

Page 37: Optimizing your layout for phones and tablets using viewport and media queries

HVGA portrait

Page 38: Optimizing your layout for phones and tablets using viewport and media queries

HVGA portrait

Page 39: Optimizing your layout for phones and tablets using viewport and media queries

HVGA portrait

no viewport defined in <head>, so fallback to default of 850px,which is squeezed inside 320px.

Page 40: Optimizing your layout for phones and tablets using viewport and media queries

<meta name="viewport" content="width=320">

HVGA portrait

Page 41: Optimizing your layout for phones and tablets using viewport and media queries

<meta name="viewport" content="width=320">

HVGA portrait

Page 42: Optimizing your layout for phones and tablets using viewport and media queries

<meta name="viewport" content="width=320">

HVGA portrait HVGA landscape

Page 43: Optimizing your layout for phones and tablets using viewport and media queries

<meta name="viewport" content="width=device-width">

HVGA portrait

Page 44: Optimizing your layout for phones and tablets using viewport and media queries

<meta name="viewport" content="width=device-width">

HVGA portrait

Page 45: Optimizing your layout for phones and tablets using viewport and media queries

<meta name="viewport" content="width=device-width">

HVGA portrait HVGA landscape

Page 46: Optimizing your layout for phones and tablets using viewport and media queries

320px × 1.5 zoom

480px

HVGA

land

scap

eHV

GA la

ndsc

ape

Page 47: Optimizing your layout for phones and tablets using viewport and media queries

320px × 1.5 zoom

480px

HVGA

land

scap

eHV

GA la

ndsc

ape

Page 48: Optimizing your layout for phones and tablets using viewport and media queries

<meta name="viewport" content="initial-scale=1">

HVGA portrait

Page 49: Optimizing your layout for phones and tablets using viewport and media queries

<meta name="viewport" content="initial-scale=1">

HVGA portrait

Page 50: Optimizing your layout for phones and tablets using viewport and media queries

<meta name="viewport" content="initial-scale=1">

HVGA portrait HVGA landscape

Page 51: Optimizing your layout for phones and tablets using viewport and media queries

<meta name="viewport" content="initial-scale=1">

(same result as width=device-width)

HVGA portrait HVGA landscape

Page 52: Optimizing your layout for phones and tablets using viewport and media queries

<meta name="viewport" content="initial-scale=0.5">

HVGA portrait HVGA landscape

Page 53: Optimizing your layout for phones and tablets using viewport and media queries

<meta name="viewport" content="initial-scale=2">

HVGA portrait HVGA landscape

Page 54: Optimizing your layout for phones and tablets using viewport and media queries

<meta name="viewport" content="width=device-width">

+<div style="width: 600px">

Page 55: Optimizing your layout for phones and tablets using viewport and media queries

<meta name="viewport" content="width=device-width">

+<div style="width: 600px">

HVGA portrait

Page 56: Optimizing your layout for phones and tablets using viewport and media queries

<meta name="viewport" content="width=device-width, initial-scale=1">+<div style="width: 600px">

HVGA portrait

Page 57: Optimizing your layout for phones and tablets using viewport and media queries

maximum-scale=... , minimum-scale=...<meta name="viewport" content="initial-scale=1, maximum-scale=1.5">

user-scalable=yes|no<meta name="viewport" content="width=320, user-scalable=no">

height=...<meta name="viewport" content="height=device-height">

other stuff

Page 58: Optimizing your layout for phones and tablets using viewport and media queries

maximum-scale=... , minimum-scale=...<meta name="viewport" content="initial-scale=1, maximum-scale=1.5">

user-scalable=yes|no<meta name="viewport" content="width=320, user-scalable=no">

height=...<meta name="viewport" content="height=device-height">

other stuff

Page 59: Optimizing your layout for phones and tablets using viewport and media queries

maximum-scale=... , minimum-scale=...<meta name="viewport" content="initial-scale=1, maximum-scale=1.5">

user-scalable=yes|no<meta name="viewport" content="width=320, user-scalable=no">

height=...<meta name="viewport" content="height=device-height">

other stuff

Page 60: Optimizing your layout for phones and tablets using viewport and media queries

maximum-scale=... , minimum-scale=...<meta name="viewport" content="initial-scale=1, maximum-scale=1.5">

user-scalable=yes|no<meta name="viewport" content="width=320, user-scalable=no">

height=...<meta name="viewport" content="height=device-height">

other stuff

Page 61: Optimizing your layout for phones and tablets using viewport and media queries

NB:Make sure to use commas, not semi-colons as delimiters between viewport values! Remember this, especially when syntax-googling ;-)

Page 63: Optimizing your layout for phones and tablets using viewport and media queries

So, how to use this?Sniffing for mobile browsers maybe?

Page 64: Optimizing your layout for phones and tablets using viewport and media queries

Better don’t sniff.

So, how to use this?Sniffing for mobile browsers maybe?

Page 65: Optimizing your layout for phones and tablets using viewport and media queries
Page 66: Optimizing your layout for phones and tablets using viewport and media queries
Page 67: Optimizing your layout for phones and tablets using viewport and media queries
Page 68: Optimizing your layout for phones and tablets using viewport and media queries
Page 69: Optimizing your layout for phones and tablets using viewport and media queries
Page 70: Optimizing your layout for phones and tablets using viewport and media queries
Page 71: Optimizing your layout for phones and tablets using viewport and media queries
Page 72: Optimizing your layout for phones and tablets using viewport and media queries

Opera/9.80 (Macintosh; Intel Mac OS X 10.5.8; U; en) Presto/2.9.220 Version/12.00

Page 73: Optimizing your layout for phones and tablets using viewport and media queries

Opera/9.80 (Macintosh; Intel Mac OS X 10.5.8; U; en) Presto/2.9.220 Version/12.00

Page 74: Optimizing your layout for phones and tablets using viewport and media queries
Page 75: Optimizing your layout for phones and tablets using viewport and media queries
Page 76: Optimizing your layout for phones and tablets using viewport and media queries
Page 77: Optimizing your layout for phones and tablets using viewport and media queries
Page 78: Optimizing your layout for phones and tablets using viewport and media queries

So, avoid sniffing,but if you really have to,provide a way for users to make corrections.

Page 79: Optimizing your layout for phones and tablets using viewport and media queries

So, avoid sniffing,but if you really have to*,provide a way for users to make corrections.

* always ask yourself why the mobile site should be different from the desktop site

Page 80: Optimizing your layout for phones and tablets using viewport and media queries

* always ask yourself why the mobile site should be different from the desktop site

budget limitations

customer requirementstime restrictions

different layout neededcapabilities are different

Page 81: Optimizing your layout for phones and tablets using viewport and media queries

* always ask yourself why the mobile site should be different from the desktop site

budget limitations

customer requirementstime restrictions

different layout neededcapability detection

capabilities are different

Page 82: Optimizing your layout for phones and tablets using viewport and media queries

* always ask yourself why the mobile site should be different from the desktop site

budget limitations

customer requirementstime restrictions

different layout needed

viewport + media queries

capabilities are different

capability detection

Page 83: Optimizing your layout for phones and tablets using viewport and media queries

Let’s talk aboutmedia queriesviewport + media queries

Page 84: Optimizing your layout for phones and tablets using viewport and media queries

Media queries are conditional hooks for applying different CSS rules, depending on e.g. browser width, screen height, aspect ratio, etc.

Page 85: Optimizing your layout for phones and tablets using viewport and media queries

Differently said, media queries allow you to optimize your site layout for all kinds of form factors.

Via http://mediaqueri.es/

Page 86: Optimizing your layout for phones and tablets using viewport and media queries

@media screen and (min-width: 400px) { article { border: 5px solid hsla(32, 98%, 51%, 1); box-shadow: hsla(0, 100%, 0%, 0.5) 0 0 10px;

max-width: 800px; margin: 0 auto 0 auto; }

}

Page 87: Optimizing your layout for phones and tablets using viewport and media queries

@media screen and (min-width: 400px) and (max-width: 800px) { article { /* css for browsers with width ≥ 400px and ≤ 800px */ }

}

Page 88: Optimizing your layout for phones and tablets using viewport and media queries

@media screen and (min-width: 400px), not projection and (aspect-ratio: 16/9) { article { /* css for browsers with width ≥ 400px, except projectors with 16/9 aspect ratio */ }

}

Page 89: Optimizing your layout for phones and tablets using viewport and media queries

@media screen and (max-width: 800px) { article { /* css for browsers with width ≤ 800px */ }

}@media screen and (max-width: 400px) { article { /* css for browsers with width ≤ 400px */ }

}

Page 90: Optimizing your layout for phones and tablets using viewport and media queries

@media screen and (max-width: 800px) { article { /* css for browsers with width ≤ 800px */ }

}@media screen and (max-width: 400px) { article { /* css for browsers with width ≤ 400px */ }

}

Remember that mobile browsers have a default viewport width (e.g. 850px).For your mobile specific media queries to work, you need to set the viewport!

Page 91: Optimizing your layout for phones and tablets using viewport and media queries
Page 92: Optimizing your layout for phones and tablets using viewport and media queries

default viewport.mobile specific media queries not applied.

width=device-width. mobile specific media

queries applied.

Page 93: Optimizing your layout for phones and tablets using viewport and media queries

The viewport and media queries combo allows you to create just one responsive site that works everywhere.

Page 94: Optimizing your layout for phones and tablets using viewport and media queries
Page 95: Optimizing your layout for phones and tablets using viewport and media queries

Q: What about max/min-device-width/height?

A: There are use cases for this, but note that your media queries won’t be applied when resizing the browser on desktop.

Page 96: Optimizing your layout for phones and tablets using viewport and media queries

Q: Should I start from small to large, or vice versa?

A: Do mobile first, then enhance for desktop. This will make the mobile experience faster. Deal with old IE using a polyfill, such as Respond.js

https://github.com/scottjehl/Respond

Page 97: Optimizing your layout for phones and tablets using viewport and media queries

Q: Which screen sizes should I design for?

A: All of them! No, seriously, don’t limit yourself. Resize your browser window and tweak different elements’ CSS properties when needed.

Page 99: Optimizing your layout for phones and tablets using viewport and media queries

Dealing withhigh-DPI screens

Page 100: Optimizing your layout for phones and tablets using viewport and media queries

A pixel is not what it seemsThus far, we’ve talked about pixels in terms of “CSS pixels”.One CSS pixel can be multiple device pixels.

Page 101: Optimizing your layout for phones and tablets using viewport and media queries

HVGA portrait

alm

ost W

VGA

port

rait

Page 102: Optimizing your layout for phones and tablets using viewport and media queries

HVGA portrait

alm

ost W

VGA

port

rait

Page 103: Optimizing your layout for phones and tablets using viewport and media queries

Device is 480px wide, but browser applies default zoom of 150%.

480px/1.5 = 320px

alm

ost W

VGA

port

rait

Page 104: Optimizing your layout for phones and tablets using viewport and media queries

In most scenarios, you won’t have to worry about this.It just works.

Page 105: Optimizing your layout for phones and tablets using viewport and media queries

However, if you want to control DPI related stuff, these are the things you can do:

Page 106: Optimizing your layout for phones and tablets using viewport and media queries

alm

ost W

VGA

port

rait

Use high resolution images to preserve crispiness.

(1)

Page 107: Optimizing your layout for phones and tablets using viewport and media queries
Page 108: Optimizing your layout for phones and tablets using viewport and media queries

alm

ost W

VGA

port

rait

Use the device-pixel-ratio media query to serve DPI-specific CSS.

(2)

Page 109: Optimizing your layout for phones and tablets using viewport and media queries

alm

ost W

VGA

port

rait

I’ve set the 1500×1500px background-image to repeat every 1000px, making it crispy again. The rest of the content is still scaled 150%.

Page 110: Optimizing your layout for phones and tablets using viewport and media queries
Page 111: Optimizing your layout for phones and tablets using viewport and media queries

NB:-o-max/min-device-pixel-ratio uses fractions-webkit-max/min-device-pixel-ratio uses numbers

Page 112: Optimizing your layout for phones and tablets using viewport and media queries

alm

ost W

VGA

port

rait

Set the meta viewport’s target-densitydpi property to device-dpi.

(3)

Page 113: Optimizing your layout for phones and tablets using viewport and media queries

alm

ost W

VGA

port

rait

Everything is shown at 100%. One CSS pixel is equal to one device pixel.

(3)

Page 114: Optimizing your layout for phones and tablets using viewport and media queries
Page 115: Optimizing your layout for phones and tablets using viewport and media queries

NB:There are other target-densitydpi values, such as high-dpi, medium-dpi, low-dpi, as well as actual DPI numbers, but don’t bother with them. Just use device-dpi, and then only if really needed.

Page 117: Optimizing your layout for phones and tablets using viewport and media queries

@viewportCSS Device Adaptation ED

Page 118: Optimizing your layout for phones and tablets using viewport and media queries

Why doing all this viewport stuff with <meta> tags? Isn’t this something for CSS?

Page 119: Optimizing your layout for phones and tablets using viewport and media queries
Page 120: Optimizing your layout for phones and tablets using viewport and media queries

<meta name="viewport" content="width=device-width, initial-scale=1, user-scalable=no">

becomes

@viewport {width: device-width;zoom: 1;user-zoom: fixed;

}

Page 121: Optimizing your layout for phones and tablets using viewport and media queries

<meta name="viewport" content="width=device-width, initial-scale=1, user-scalable=no">

becomes

@-o-viewport {width: device-width;zoom: 1;user-zoom: fixed;

}

Page 122: Optimizing your layout for phones and tablets using viewport and media queries

@-o-viewport { width: device-width;}@media screen and (max-device-width: 480px) { @-o-viewport {

width: 480px; }}

Page 123: Optimizing your layout for phones and tablets using viewport and media queries

@-o-viewport { width: device-width;}@media screen and (max-device-width: 480px) { @-o-viewport {

width: 480px; }}

Crazy stuff

Page 124: Optimizing your layout for phones and tablets using viewport and media queries

Phew, that was all!Thanks for listening :-)

@andreasbovens

Thanks to ~yc for the wooden background: http://yc.deviantart.com/art/Wood-Rays-62468397