Ett fönster in i en ny värld
...men hur brett är det?
[URL]
Webkit
Blink
Blink
Gecko
EdgeHTML
Trident
Trident
Safari
Android WebKit
Google Chrome
*vendor* Chrome
ANDROID
APPLE
DIFFERENTIATE!
GOOGLE SERVICES
NOOOO!!!!
ONE RENDERING ENGINE ALLOWED
PROXY
Opera Mini
Percent width
Pixel width
Desktop
Desktop
"Mobile"
"Mobile"
?
#something{
width: 35%;
}35%
body
which is 100% of
html
VIEWPORT
<html>
<body>
<div id="something"></div>
</body>
</html>which is 100% of
of what!?
Desktop
Mobile ?
Browser
Viewport
Device
Viewport
Need more control!
Default behaviour
Zoom to fit the Layout Viewport
Visual Viewport
(screen pixels)
Layout Viewport
Often 980px, but span 768 - 1024 px
(but what about high resolutions?!)
Need even more control!
Visual Viewport
Layout Viewport
Need to tell the rendering engine to only render on desired width
Ideal Viewport
Layout Viewport
===
Visual Viewport
<head>
<meta name="viewport" content="width=device-width,initial-scale=1">
</head>Telling the rendering engine to use the device width as layout viewport width
iPhone 3G
Nexus 5
iPhone 6
375px
320px
360px
320px
750px
1080px
Device
Ideal
Device Pixel Ratio
2
1
3
Small interfaces
Browser
Viewport
"Mobile"
Viewport
Mobile!
Layout Viewport
Visual Viewport
Ideal Viewport
Meta Viewport
...and some pitfalls
mousedown
touchstart
mousemove
touchmove
mouseup
touchend
mouseout
-
mouseover
-
Don't make your site rely on :hover styles and events
pinch to zoom
scroll
tap
double tap
need 300 ms to decide
*touchstart*
tap
tap on another element
You think all other browsers use this order :)
pointerdown
touchstart
pointermove
touchmove
pointerup
touchend
pointerout
-
pointerover
-
APPLE
MICROSOFT
Mouse
Finger
Anything!
<head>
<meta name="viewport" content="width=device-width,initial-scale=1">
</head>https://shop.smashingmagazine.com/products/mobile-web-handbook