HTML5 and CSS3 – exploring mobile possibilities - Frontend Conference Zürich

87
HTML5 and CSS3: Exploring Mobile Possibilities HTML5 and CSS3: Exploring Mobile Possibilities

Transcript of HTML5 and CSS3 – exploring mobile possibilities - Frontend Conference Zürich

Page 1: HTML5 and CSS3 – exploring mobile possibilities - Frontend Conference Zürich

HTML5 and CSS3: Exploring Mobile Possibilities

HTML5 and CSS3: Exploring Mobile Possibilities

Page 4: HTML5 and CSS3 – exploring mobile possibilities - Frontend Conference Zürich
Page 6: HTML5 and CSS3 – exploring mobile possibilities - Frontend Conference Zürich

Mozilla is a global non-profit dedicated to putting you in control of your online experience and shaping the future of the Web for the public good

Page 7: HTML5 and CSS3 – exploring mobile possibilities - Frontend Conference Zürich
Page 10: HTML5 and CSS3 – exploring mobile possibilities - Frontend Conference Zürich

widthheightdevice-widthdevice-heightorientationaspect-ratiodevice-aspect-ratio

colorcolor-indexmonochromeresolutionscangrid

Page 11: HTML5 and CSS3 – exploring mobile possibilities - Frontend Conference Zürich

min-widthmax-widthorientation

Page 12: HTML5 and CSS3 – exploring mobile possibilities - Frontend Conference Zürich

<link rel="stylesheet" href="pretty.css" media="screen and (min-width: 500px)">

Page 13: HTML5 and CSS3 – exploring mobile possibilities - Frontend Conference Zürich

.nav { width: 150px;}

@media screen and (min-width: 500px) { .nav { width: 300px; }}

Page 14: HTML5 and CSS3 – exploring mobile possibilities - Frontend Conference Zürich

@media screen and (min-width: 500px) and (max-width: 1024px) { .nav { width: 200px; }}

Page 15: HTML5 and CSS3 – exploring mobile possibilities - Frontend Conference Zürich

@media screen and (min-width: 100px),@media handheld { .nav { width: 350px; }}

Page 16: HTML5 and CSS3 – exploring mobile possibilities - Frontend Conference Zürich

@media only screen and (min-width: 100px) { .nav { width: 350px; }}

Page 17: HTML5 and CSS3 – exploring mobile possibilities - Frontend Conference Zürich

@media not screen and (min-width: 100px) { .nav { width: 100%; }}

Page 18: HTML5 and CSS3 – exploring mobile possibilities - Frontend Conference Zürich

@media screen and (orientation: landscape) { .nav { float: left; width: 20%; } .main { float: right; width: 80%; }}

Page 19: HTML5 and CSS3 – exploring mobile possibilities - Frontend Conference Zürich

@media screen and (orientation: portrait) { .nav { width: 100%; } .main { width: 100%; }}

Page 20: HTML5 and CSS3 – exploring mobile possibilities - Frontend Conference Zürich

<meta name="viewport" content="width=device-width, initial-scale=1.0">

<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0">

Page 24: HTML5 and CSS3 – exploring mobile possibilities - Frontend Conference Zürich

<div class="flex-container"> <section class="col-1">I am column 1</section> <section class="col-2">I am column 2</section> <section class="col-3">I am column 3</section></div>

Page 25: HTML5 and CSS3 – exploring mobile possibilities - Frontend Conference Zürich

.flex-container { display: -moz-box; display: -ms-box; display: -webkit-box; display: box; -moz-box-orient: horizontal; -ms-box-orient: horizontal; -webkit-box-orient: horizontal; box-orient: horizontal;}

Page 26: HTML5 and CSS3 – exploring mobile possibilities - Frontend Conference Zürich

.col-1 { -moz-box-flex: 1; -ms-box-flex: 1; -webkit-box-flex: 1; box-flex: 1;}

.col-2 { -moz-box-flex: 1; -ms-box-flex: 1; -webkit-box-flex: 1; box-flex: 1;}

.col-3 { -moz-box-flex: 2; -ms-box-flex: 2; -webkit-box-flex: 2; box-flex: 2;}

Page 27: HTML5 and CSS3 – exploring mobile possibilities - Frontend Conference Zürich

.col-1 { -moz-box-ordinal-group: 2; -ms-box-ordinal-group: 2; -webkit-box-ordinal-group: 2; box-ordinal-group: 2;}

.col-2 { -moz-box-ordinal-group: 3; -ms-box-ordinal-group: 3; -webkit-box-ordinal-group: 3; box-ordinal-group: 3;}

.col-3 { -moz-box-ordinal-group: 1; -ms-box-ordinal-group: 1; -webkit-box-ordinal-group: 1; box-ordinal-group: 1;}

Page 28: HTML5 and CSS3 – exploring mobile possibilities - Frontend Conference Zürich

flex- instead of box-

Page 30: HTML5 and CSS3 – exploring mobile possibilities - Frontend Conference Zürich

/* Shorthand version */#hello { display: inline-block; height: 20px; opacity: 0.3; -moz-transition: height 1s ease-out, opacity 1s ease; -ms-transition: height 1s ease-out, opacity 1s ease; -o-transition: height 1s ease-out, opacity 1s ease; -webkit-transition: height 1s ease-out, opacity 1s ease; transition: height 1s ease-out, opacity 1s ease;}

#hello:hover { height: 40px; opacity: 1;}

Page 31: HTML5 and CSS3 – exploring mobile possibilities - Frontend Conference Zürich

/* Shorthand version */.menu-item { position: relative; display: inline-block; border: 1px dashed #000; padding: 10px; background: #ffffa2; height: 20px; opacity: 0.3; text-decoration: none; -moz-transition: all 1s ease; -ms-transition: all 1s ease; -o-transition: all 1s ease; -webkit-transition: all 1s ease; transition: all 1s ease;}

.menu-item:hover { opacity: 1; -moz-transform: scale(2) rotate(30deg) translate(50px); -ms-transform: scale(2) rotate(30deg) translate(50px); -o-transform: scale(2) rotate(30deg) translate(50px); -webkit-transform: scale(1.2) rotate(30deg) translate(50px); transform: scale(2) rotate(30deg) translate(50px);}

Page 33: HTML5 and CSS3 – exploring mobile possibilities - Frontend Conference Zürich

.love-me { -webkit-transform: translate3d(0, 0, 0);}

Page 35: HTML5 and CSS3 – exploring mobile possibilities - Frontend Conference Zürich

.animation-container { height: 60px; padding: 10px; -moz-animation-name: movearound; -moz-animation-duration: 4s; -moz-animation-iteration-count: infinite; -moz-animation-direction: normal; -moz-animation-timing-function: ease; -webkit-animation-name: movearound; -webkit-animation-duration: 4s; -webkit-animation-iteration-count: infinite; -webkit-animation-direction: normal; -webkit-animation-timing-function: ease;}

@-moz-keyframes movearound { from { width: 200px; background: #f00; opacity: 0.5; -moz-transform: scale(0.5) rotate(15deg); } to { width: 400px; background: #ffffa2; opacity: 1; -moz-transform: scale(1) rotate(0deg); }}

Page 36: HTML5 and CSS3 – exploring mobile possibilities - Frontend Conference Zürich

@-webkit-keyframes movearound { from { width: 200px; background: #f00; opacity: 0.5; -webkit-transform: scale(0.5) rotate(15deg); } to { width: 400px; background: #ffffa2; opacity: 1; -webkit-transform: scale(1) rotate(0deg); }}

Page 44: HTML5 and CSS3 – exploring mobile possibilities - Frontend Conference Zürich

<input type="color">

<input type="date">

<input type="datetime">

<input type="datetime-local">

<input type="email">

<input type="month">

<input type="number">

<input type="range">

<input type="search" results="5" autosave="saved-searches">

<input type="tel">

<input type="time">

<input type="url">

<input type="week">

New form types

Page 45: HTML5 and CSS3 – exploring mobile possibilities - Frontend Conference Zürich
Page 50: HTML5 and CSS3 – exploring mobile possibilities - Frontend Conference Zürich

<input type="text" autocomplete="off">

<input type="text" autofocus>

<input type="submit" formaction="http://example.org/save" value="Save">

<input type="submit" formenctype="application/x-www-form-urlencoded" value="Save with enctype">

<input type="submit" formmethod="POST" value="Send as POST">

<input type="submit" formnovalidate value="Don't validate">

<input type="submit" formtarget="_blank" value="Post to new tab/window">

New form attributes

Page 51: HTML5 and CSS3 – exploring mobile possibilities - Frontend Conference Zürich

<input type="text" list="data-list">

<input type="range" max="95">

<input type="range" min="2">

<input type="file" multiple>

<input type="text" readonly>

<input type="text" required>

<input type="text" pattern="[A-Z]*">

<input type="text" placeholder="E.g. Robocop">

<input type="text" spellcheck="true">

<input type="number" step="5">

Page 52: HTML5 and CSS3 – exploring mobile possibilities - Frontend Conference Zürich

<input type="text" list="data-list">

<datalist id="data-list"> <option value="Hugo Reyes"> <option value="Jack Shephard"> <option value="James 'Sawyer' Ford"> <option value="John Locke"> <option value="Sayid Jarrah"></datalist>

New form elements

Page 53: HTML5 and CSS3 – exploring mobile possibilities - Frontend Conference Zürich

<keygen></keygen>

<meter min="0" max="10" value="7"></meter>

<input type="range" id="range"><output for="range" id="output"></output>

<progress max="100" value="70">70%</progress>

Page 54: HTML5 and CSS3 – exploring mobile possibilities - Frontend Conference Zürich

<input type="range" id="range"><output for="range" id="output"></output>

<script> (function () { var theForm = document.getElementById("the-form"); if ("oninput" in theForm) { theForm.addEventListener("input", function () { output.value = range.value; }, false); } })();</script>

Page 57: HTML5 and CSS3 – exploring mobile possibilities - Frontend Conference Zürich

Link protocols

Page 58: HTML5 and CSS3 – exploring mobile possibilities - Frontend Conference Zürich

<a href="tel:+441111234567">tel: link</a>

<a href="sms:+441111234567">sms: link</a>

<a href="sms:+441111234567?body=Text%20me"> sms: with body</a>

<a href="sms:+441111234567,+441111678901"> sms: with multiple numbers</a>

<a href="sms:+441111234567,+441111678901?body=Text%20me"> sms: with multiple numbers + body</a>

#browserlove

Page 62: HTML5 and CSS3 – exploring mobile possibilities - Frontend Conference Zürich

sessionStorage.setItem("Charming", "Piers Morgan");console.log(sessionStorage.getItem("Charming"));

Page 63: HTML5 and CSS3 – exploring mobile possibilities - Frontend Conference Zürich

localStorage.setItem("Job", "Show host");

Page 64: HTML5 and CSS3 – exploring mobile possibilities - Frontend Conference Zürich

var piersMorgan = { "Transportation" : "Segway", "Damage" : "Three broken ribs"};

localStorage.setItem("piersMorgan", JSON.stringify(piersMorgan));

console.log(typeof JSON.parse(localStorage.getItem("piersMorgan")));

Page 65: HTML5 and CSS3 – exploring mobile possibilities - Frontend Conference Zürich

IndexedDBWeb SQL

Page 67: HTML5 and CSS3 – exploring mobile possibilities - Frontend Conference Zürich

if (navigator.geolocation) { navigator.geolocation.getCurrentPosition(function (position) { alert(position.coords.latitude + ", " + position.coords.longitude); }); }

Page 68: HTML5 and CSS3 – exploring mobile possibilities - Frontend Conference Zürich
Page 69: HTML5 and CSS3 – exploring mobile possibilities - Frontend Conference Zürich
Page 71: HTML5 and CSS3 – exploring mobile possibilities - Frontend Conference Zürich

// Poll the navigator.onLine propertysetInterval(function () { console.log(navigator.onLine);}, 1000);

Page 72: HTML5 and CSS3 – exploring mobile possibilities - Frontend Conference Zürich

<!DOCTYPE html><html manifest="offline.appcache"><head>...

Page 73: HTML5 and CSS3 – exploring mobile possibilities - Frontend Conference Zürich

CACHE MANIFEST

# VERSION 10

CACHE:offline.htmlbase.css

FALLBACK:online.css offline.css

NETWORK:/live-updates

Page 75: HTML5 and CSS3 – exploring mobile possibilities - Frontend Conference Zürich

window.history.pushState(state, title, url);

Page 76: HTML5 and CSS3 – exploring mobile possibilities - Frontend Conference Zürich

var url = "http://robertnyman.com",title = "My blog",state = { address : url};

window.history.pushState(state, title, url);

Page 77: HTML5 and CSS3 – exploring mobile possibilities - Frontend Conference Zürich
Page 82: HTML5 and CSS3 – exploring mobile possibilities - Frontend Conference Zürich

position: fixed

overflow: scroll

-webkit-overflow-scrolling: touch

Web Workers