HTML5, makkelijker kunnen we het niet maken!

134
HTML makkelijker kunnen we het niet maken! Wednesday, February 1, 12

description

Introduction into HTML5

Transcript of HTML5, makkelijker kunnen we het niet maken!

Page 1: HTML5, makkelijker kunnen we het niet maken!

HTML

makkelijker kunnen we het niet maken!

Wednesday, February 1, 12

Page 2: HTML5, makkelijker kunnen we het niet maken!

Henk

Wednesday, February 1, 12

Page 3: HTML5, makkelijker kunnen we het niet maken!

Henk

Wednesday, February 1, 12

Page 4: HTML5, makkelijker kunnen we het niet maken!

Henk

Wednesday, February 1, 12

Page 5: HTML5, makkelijker kunnen we het niet maken!

http://www.apple.com/hotnews/thoughts-on-flash/

Wednesday, February 1, 12

Page 6: HTML5, makkelijker kunnen we het niet maken!

http://forums.silverlight.net/p/230502/562077.aspxWednesday, February 1, 12

Page 7: HTML5, makkelijker kunnen we het niet maken!

HTML5 ~= + +

Wednesday, February 1, 12

Page 8: HTML5, makkelijker kunnen we het niet maken!

HTML5 ~= HTML + +

Wednesday, February 1, 12

Page 9: HTML5, makkelijker kunnen we het niet maken!

HTML5 ~= HTML + CSS +

Wednesday, February 1, 12

Page 10: HTML5, makkelijker kunnen we het niet maken!

HTML5 ~= HTML + CSS + JS

Wednesday, February 1, 12

Page 11: HTML5, makkelijker kunnen we het niet maken!

HTML5 features

Semantics

Wednesday, February 1, 12

Page 12: HTML5, makkelijker kunnen we het niet maken!

HTML5 features

SemanticsCSS3

Wednesday, February 1, 12

Page 13: HTML5, makkelijker kunnen we het niet maken!

HTML5 features

SemanticsCSS3

Multimedia

Wednesday, February 1, 12

Page 14: HTML5, makkelijker kunnen we het niet maken!

HTML5 features

SemanticsCSS3

Multimedia

Graphics & 3D

Wednesday, February 1, 12

Page 15: HTML5, makkelijker kunnen we het niet maken!

HTML5 features

SemanticsCSS3

Multimedia

Graphics & 3DDevice Access

Wednesday, February 1, 12

Page 16: HTML5, makkelijker kunnen we het niet maken!

HTML5 features

SemanticsCSS3

Multimedia

Graphics & 3DDevice Access

Offline & Storage

Wednesday, February 1, 12

Page 17: HTML5, makkelijker kunnen we het niet maken!

HTML

Wednesday, February 1, 12

Page 18: HTML5, makkelijker kunnen we het niet maken!

HTML (1.0)

1991 HTML Tags specification

Wednesday, February 1, 12

Page 19: HTML5, makkelijker kunnen we het niet maken!

HTML (1.0)

1991 HTML Tags specification

1993 HTML specification

Wednesday, February 1, 12

Page 20: HTML5, makkelijker kunnen we het niet maken!

HTML 2.0, 3.0

1995 HTML 2.0

Wednesday, February 1, 12

Page 21: HTML5, makkelijker kunnen we het niet maken!

HTML 2.0, 3.0

1995 HTML 2.0

1995 HTML 3.0, proposal

Wednesday, February 1, 12

Page 22: HTML5, makkelijker kunnen we het niet maken!

HTML 3.2, 4.0

1997 HTML 3.2 ( W3C )

Wednesday, February 1, 12

Page 23: HTML5, makkelijker kunnen we het niet maken!

HTML 3.2, 4.0

1997 HTML 3.2 ( W3C )

1997 HTML 4.0

Wednesday, February 1, 12

Page 24: HTML5, makkelijker kunnen we het niet maken!

HTML 4.01, XHTML, WEB 2.0

1999 HTML 4.01

Wednesday, February 1, 12

Page 25: HTML5, makkelijker kunnen we het niet maken!

HTML 4.01, XHTML, WEB 2.0

1999 HTML 4.01

2000 XHTML 1.0

Wednesday, February 1, 12

Page 26: HTML5, makkelijker kunnen we het niet maken!

HTML 4.01, XHTML, WEB 2.0

1999 HTML 4.01

2000 XHTML 1.0

2001 XHTML 1.1

Wednesday, February 1, 12

Page 27: HTML5, makkelijker kunnen we het niet maken!

HTML 4.01, XHTML, WEB 2.0

1999 HTML 4.01

2000 XHTML 1.0

2001 XHTML 1.1

2004 WEB 2.0

Wednesday, February 1, 12

Page 28: HTML5, makkelijker kunnen we het niet maken!

WHATWG

Mozilla

Wednesday, February 1, 12

Page 29: HTML5, makkelijker kunnen we het niet maken!

Wednesday, February 1, 12

Page 30: HTML5, makkelijker kunnen we het niet maken!

HTML5

2008 HTML5 working draft W3C

Wednesday, February 1, 12

Page 31: HTML5, makkelijker kunnen we het niet maken!

HTML5

2008 HTML5 working draft W3C

2009 XHTML 2.0 dropped

Wednesday, February 1, 12

Page 32: HTML5, makkelijker kunnen we het niet maken!

HTML5

2012 Candidate Recommendation

Wednesday, February 1, 12

Page 33: HTML5, makkelijker kunnen we het niet maken!

HTML5

2012 Candidate Recommendation

2022 Proposed Recommendation

Wednesday, February 1, 12

Page 34: HTML5, makkelijker kunnen we het niet maken!

HTML

Wednesday, February 1, 12

Page 35: HTML5, makkelijker kunnen we het niet maken!

Semantics

Wednesday, February 1, 12

Page 36: HTML5, makkelijker kunnen we het niet maken!

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">

<!DOCTYPE HTML >

Wednesday, February 1, 12

Page 37: HTML5, makkelijker kunnen we het niet maken!

<meta http-equiv="Content-Type" content="text/html; charset=utf-8">

<meta charset=utf-8>

Wednesday, February 1, 12

Page 38: HTML5, makkelijker kunnen we het niet maken!

<script src=”foo.js” > </script>

<link href=”foo.css”></link>

Wednesday, February 1, 12

Page 39: HTML5, makkelijker kunnen we het niet maken!

<div id=”header”>

<div id=”nav”>

<div id=”article”> <div id=”sidebar”>

<div id=”footer”>

Wednesday, February 1, 12

Page 40: HTML5, makkelijker kunnen we het niet maken!

<header>

<nav>

<sidebar>

<footer>

<article>

<section>

Wednesday, February 1, 12

Page 41: HTML5, makkelijker kunnen we het niet maken!

Microdata

Wednesday, February 1, 12

Page 42: HTML5, makkelijker kunnen we het niet maken!

<section itemscope><article id="pizza-new-york" itemtype="http://data-vocabulary.org/Product">

<header><h1 itemprop="name”>New York Pizza Suprema</h1>

</header><p itemprop="description">The best pizzaria of New York... >

</article></section>

Wednesday, February 1, 12

Page 43: HTML5, makkelijker kunnen we het niet maken!

Multimedia

Wednesday, February 1, 12

Page 44: HTML5, makkelijker kunnen we het niet maken!

<video src=”movie.ogg” />

<video src=”movie.ogg” controls/>

Wednesday, February 1, 12

Page 45: HTML5, makkelijker kunnen we het niet maken!

<video controls><source src=”movie.mp4” /><source src=”movie.ogg” />

</video>

Wednesday, February 1, 12

Page 46: HTML5, makkelijker kunnen we het niet maken!

safari chrome IE9 firefox

MP4 x x x

H.264 x x

WebM x x

Ogg x x

Wednesday, February 1, 12

Page 47: HTML5, makkelijker kunnen we het niet maken!

Demo

http://html5demos.com/video

Wednesday, February 1, 12

Page 48: HTML5, makkelijker kunnen we het niet maken!

Web Forms

Wednesday, February 1, 12

Page 49: HTML5, makkelijker kunnen we het niet maken!

No javascript

Wednesday, February 1, 12

Page 50: HTML5, makkelijker kunnen we het niet maken!

No javascript

Client side validation

Wednesday, February 1, 12

Page 51: HTML5, makkelijker kunnen we het niet maken!

No javascript

Client side validation

different input typeslike email, url, nummer

Wednesday, February 1, 12

Page 52: HTML5, makkelijker kunnen we het niet maken!

No javascript

Client side validation

different input typeslike email, url, nummer

color picker, date picker

Wednesday, February 1, 12

Page 53: HTML5, makkelijker kunnen we het niet maken!

No javascript

Client side validation

different input typeslike email, url, nummer

color picker, date picker

Wednesday, February 1, 12

Page 54: HTML5, makkelijker kunnen we het niet maken!

Email Address: <input type="email" name="email" required

Wednesday, February 1, 12

Page 55: HTML5, makkelijker kunnen we het niet maken!

Email Address: <input type="email" name="email" required placeholder="Enter a valid email address">

Wednesday, February 1, 12

Page 56: HTML5, makkelijker kunnen we het niet maken!

Email Address: <input type="email" name="email" required placeholder="Enter a valid email address">

Wednesday, February 1, 12

Page 57: HTML5, makkelijker kunnen we het niet maken!

Age: <input type="number" size="6" name="age" min="18" max="99" value="21"><br>

Wednesday, February 1, 12

Page 58: HTML5, makkelijker kunnen we het niet maken!

Age: <input type="number" size="6" name="age" min="18" max="99" value="21"><br>Satisfaction: <input type="range" size="2" name="satisfaction" min="1" max="5" value="3">

Wednesday, February 1, 12

Page 59: HTML5, makkelijker kunnen we het niet maken!

Age: <input type="number" size="6" name="age" min="18" max="99" value="21"><br>Satisfaction: <input type="range" size="2" name="satisfaction" min="1" max="5" value="3">

Wednesday, February 1, 12

Page 60: HTML5, makkelijker kunnen we het niet maken!

Device Access

Wednesday, February 1, 12

Page 61: HTML5, makkelijker kunnen we het niet maken!

Geolocation

Wednesday, February 1, 12

Page 62: HTML5, makkelijker kunnen we het niet maken!

Geolocation

Drag & Drop

Wednesday, February 1, 12

Page 63: HTML5, makkelijker kunnen we het niet maken!

Geolocation

Drag & Drop

Speech input

Wednesday, February 1, 12

Page 64: HTML5, makkelijker kunnen we het niet maken!

Geolocation

Drag & Drop

Speech input

Device orientation

Wednesday, February 1, 12

Page 65: HTML5, makkelijker kunnen we het niet maken!

Geolocation

Wednesday, February 1, 12

Page 66: HTML5, makkelijker kunnen we het niet maken!

Wednesday, February 1, 12

Page 67: HTML5, makkelijker kunnen we het niet maken!

if (navigator.geolocation) {  navigator.geolocation.getCurrentPosition(function(position) {    var latLng = new google.maps.LatLng(        position.coords.latitude, position.coords.longitude);    var marker = new google.maps.Marker({position: latLng, map: map});    map.setCenter(latLng);  }, errorHandler);}

Wednesday, February 1, 12

Page 68: HTML5, makkelijker kunnen we het niet maken!

demo

http://html5demos.com/geo

Wednesday, February 1, 12

Page 69: HTML5, makkelijker kunnen we het niet maken!

Events: dragover, dragenter, drop

Drag & Drop

Wednesday, February 1, 12

Page 70: HTML5, makkelijker kunnen we het niet maken!

Events: dragover, dragenter, drop

event.transferData contains text and/ or image

Drag & Drop

Wednesday, February 1, 12

Page 71: HTML5, makkelijker kunnen we het niet maken!

Events: dragover, dragenter, drop

event.transferData contains text and/ or image

links & images draggable by default

Drag & Drop

Wednesday, February 1, 12

Page 72: HTML5, makkelijker kunnen we het niet maken!

Events: dragover, dragenter, drop

event.transferData contains text and/ or image

links & images draggable by default

other elements : draggable=”true”

Drag & Drop

Wednesday, February 1, 12

Page 73: HTML5, makkelijker kunnen we het niet maken!

demo

http://html5demos.com/drag

Wednesday, February 1, 12

Page 74: HTML5, makkelijker kunnen we het niet maken!

Device orientation

http://slides.html5rocks.com/#slide-orientation

window.addEventListener('deviceorientation', function(event) {  var a = event.alpha;  var b = event.beta;  var g = event.gamma;}, false);

Wednesday, February 1, 12

Page 75: HTML5, makkelijker kunnen we het niet maken!

File API

var reader = new FileReader();

reader.readAsDataURL(e.dataTransfer.files[0]);

Wednesday, February 1, 12

Page 76: HTML5, makkelijker kunnen we het niet maken!

demo

Wednesday, February 1, 12

Page 77: HTML5, makkelijker kunnen we het niet maken!

Speech input

http://slides.html5rocks.com/#speech-input

<input type="text" x-webkit-speech />

Wednesday, February 1, 12

Page 78: HTML5, makkelijker kunnen we het niet maken!

Wednesday, February 1, 12

Page 79: HTML5, makkelijker kunnen we het niet maken!

Graphics & 3D

Wednesday, February 1, 12

Page 80: HTML5, makkelijker kunnen we het niet maken!

Canvas

2D drawing platform

Bitmap system

Wednesday, February 1, 12

Page 81: HTML5, makkelijker kunnen we het niet maken!

When to use?

Wednesday, February 1, 12

Page 82: HTML5, makkelijker kunnen we het niet maken!

data visualisation

Wednesday, February 1, 12

Page 83: HTML5, makkelijker kunnen we het niet maken!

animated graphics

Wednesday, February 1, 12

Page 84: HTML5, makkelijker kunnen we het niet maken!

games

Wednesday, February 1, 12

Page 85: HTML5, makkelijker kunnen we het niet maken!

<canvas height=”600” width=”800”></canvas>

Wednesday, February 1, 12

Page 86: HTML5, makkelijker kunnen we het niet maken!

x

y

(0,0)

Wednesday, February 1, 12

Page 87: HTML5, makkelijker kunnen we het niet maken!

2d rendering contextcanvas

Wednesday, February 1, 12

Page 88: HTML5, makkelijker kunnen we het niet maken!

var canvas = document.getElementById("canvas");var ctx = canvas.getContext("2d");

Wednesday, February 1, 12

Page 89: HTML5, makkelijker kunnen we het niet maken!

ctx.fillStyle = ‘rgb(65, 60, 50)’;ctx.fillRect(25, 50, 100, 100);

ctx.strokeStyle = ‘rgb(65, 60, 50)’;ctx.strokeRect(130, 500, 40, 70);

Wednesday, February 1, 12

Page 90: HTML5, makkelijker kunnen we het niet maken!

Wednesday, February 1, 12

Page 91: HTML5, makkelijker kunnen we het niet maken!

lineTo(x,y)

rect(x,y,w,h)

arc(x,y, radius, startAngle, endAngle, anticlockwise)

Wednesday, February 1, 12

Page 92: HTML5, makkelijker kunnen we het niet maken!

demo

http://hakim.se/experiments/html5/origami/

Wednesday, February 1, 12

Page 93: HTML5, makkelijker kunnen we het niet maken!

gl = canvas.getContext("moz-webgl"); // Firefox   gl = canvas.getContext("webkit-3d"); // Safari or Chrome

WebGL

Wednesday, February 1, 12

Page 94: HTML5, makkelijker kunnen we het niet maken!

demo

http://www.zygotebody.com/#nav=1.61,126.68,176.3

Wednesday, February 1, 12

Page 95: HTML5, makkelijker kunnen we het niet maken!

CSS3

Wednesday, February 1, 12

Page 96: HTML5, makkelijker kunnen we het niet maken!

CSS selectors

Wednesday, February 1, 12

Page 97: HTML5, makkelijker kunnen we het niet maken!

CSS selectors

Columns

Wednesday, February 1, 12

Page 98: HTML5, makkelijker kunnen we het niet maken!

CSS selectors

Columns

Rounded Corners

Wednesday, February 1, 12

Page 99: HTML5, makkelijker kunnen we het niet maken!

CSS selectors

Columns

Rounded Corners

Gradients

Wednesday, February 1, 12

Page 100: HTML5, makkelijker kunnen we het niet maken!

CSS selectors

Columns

Rounded Corners

Gradients

Wednesday, February 1, 12

Page 101: HTML5, makkelijker kunnen we het niet maken!

CSS selectors

Columns

Rounded Corners

Gradients

Shadows

Wednesday, February 1, 12

Page 102: HTML5, makkelijker kunnen we het niet maken!

CSS selectors

Columns

Rounded Corners

Gradients

Shadows

Transitions

Wednesday, February 1, 12

Page 103: HTML5, makkelijker kunnen we het niet maken!

CSS selectors

Columns

Rounded Corners

Gradients

Shadows

Transitions

Transforms

Wednesday, February 1, 12

Page 104: HTML5, makkelijker kunnen we het niet maken!

CSS selectors

Columns

Rounded Corners

Gradients

Shadows

Transitions

Transforms

Wednesday, February 1, 12

Page 105: HTML5, makkelijker kunnen we het niet maken!

CSS Selectors

.row:nth-child(even) {  background: #dde;}.row:nth-child(odd) {  background: white;}

Wednesday, February 1, 12

Page 106: HTML5, makkelijker kunnen we het niet maken!

Specific attributes

input[type="text"] {  background: #eee;}

Wednesday, February 1, 12

Page 107: HTML5, makkelijker kunnen we het niet maken!

Negation

:not(.box) {  color: #00c; }            :not(span) {  display: block; }  

Wednesday, February 1, 12

Page 108: HTML5, makkelijker kunnen we het niet maken!

Columns

-webkit-column-count: 2; -webkit-column-rule: 1px solid #bbb;-webkit-column-gap: 2em;

http://slides.html5rocks.com/#css-columns

Wednesday, February 1, 12

Page 109: HTML5, makkelijker kunnen we het niet maken!

Rounded Corners

box: border-radius: 22px;

Wednesday, February 1, 12

Page 110: HTML5, makkelijker kunnen we het niet maken!

Gradients

background: -webkit-gradient(linear, left top, left bottom,

  from(#00abeb), to(white), color-stop(0.5, white), color-stop(0.5, #66cc00))

Wednesday, February 1, 12

Page 111: HTML5, makkelijker kunnen we het niet maken!

demo

http://www.css3maker.com/css-gradient.html

Wednesday, February 1, 12

Page 112: HTML5, makkelijker kunnen we het niet maken!

Shadows

text-shadow:   rgb(5, 5, 5, #000000)

box-shadow: rgb(5, 5, 5, #000000)

Wednesday, February 1, 12

Page 113: HTML5, makkelijker kunnen we het niet maken!

demo

http://www.css3maker.com/text-shadow.html

Wednesday, February 1, 12

Page 114: HTML5, makkelijker kunnen we het niet maken!

Transitions & Transforms

http://www.css3maker.com/css3-transform.html

Wednesday, February 1, 12

Page 115: HTML5, makkelijker kunnen we het niet maken!

Texthttp://mrdoob.com/projects/chromeexperiments/google_gravity/

http://mrdoob.com/projects/chromeexperiments/google_sphere/

Wednesday, February 1, 12

Page 116: HTML5, makkelijker kunnen we het niet maken!

Offline & Storage

Wednesday, February 1, 12

Page 117: HTML5, makkelijker kunnen we het niet maken!

Offline Web Applications

application cachingoffline storage

Wednesday, February 1, 12

Page 118: HTML5, makkelijker kunnen we het niet maken!

application caching

HTML5 online/offline detectioncaching resources

manifest

Wednesday, February 1, 12

Page 119: HTML5, makkelijker kunnen we het niet maken!

navigator.onLine()

addEventListener("online", function () {...} addEventListener("offline", function () {...}

http://html5demos.com/offline

Wednesday, February 1, 12

Page 120: HTML5, makkelijker kunnen we het niet maken!

CACHE MANIFEST# manifest version 1.0.1 # Files to cache/html5/src/logic.js/html5/src/style.css/html5/src/background.png# Use from network if availableNETWORK:/# Fallback contentFALLBACK:/ fallback.html

appCache file

Wednesday, February 1, 12

Page 121: HTML5, makkelijker kunnen we het niet maken!

<!DOCTYPE html><html manifest="offline.appcache"><head><title>HTML5 Application Cache Rocks!</title>

Wednesday, February 1, 12

Page 122: HTML5, makkelijker kunnen we het niet maken!

Offline Storage

Web Storage

Wednesday, February 1, 12

Page 123: HTML5, makkelijker kunnen we het niet maken!

Offline Storage

Web StorageWeb Database Storage

Wednesday, February 1, 12

Page 124: HTML5, makkelijker kunnen we het niet maken!

window.localStorage.setItem('value', area.value); window.localStorage.setItem('timestamp', (new Date()).getTime());

textarea.value = window.localStorage.getItem('value');

localStorage & sessionStorage

Wednesday, February 1, 12

Page 125: HTML5, makkelijker kunnen we het niet maken!

IndexedDB

Object Storeasynchronoustransactions

Wednesday, February 1, 12

Page 126: HTML5, makkelijker kunnen we het niet maken!

var db = todoDB.indexedDB.db; var trans = db.transaction(['todo'], IDBTransaction.READ_WRITE); var store = trans.objectStore('todo');

var data = { "text": todoText, // todoText should be visible here "timeStamp": new Date().getTime() };

var request = store.put(data);

request.onsuccess = function(e) { todoDB.indexedDB.getAllTodoItems(); };

request.onerror = function(e) { console.log("Error Adding: ", e); };

http://www.html5rocks.com/en/tutorials/webdatabase/websql-indexeddb/

Wednesday, February 1, 12

Page 127: HTML5, makkelijker kunnen we het niet maken!

Learn

Wednesday, February 1, 12

Page 128: HTML5, makkelijker kunnen we het niet maken!

http://diveintohtml5.info/

Wednesday, February 1, 12

Page 129: HTML5, makkelijker kunnen we het niet maken!

http://html5doctor.com/

Wednesday, February 1, 12

Page 130: HTML5, makkelijker kunnen we het niet maken!

http://www.html5rocks.com/en/

Wednesday, February 1, 12

Page 131: HTML5, makkelijker kunnen we het niet maken!

http://caniuse.com/

Wednesday, February 1, 12

Page 132: HTML5, makkelijker kunnen we het niet maken!

http://html5demos.com/

Wednesday, February 1, 12

Page 133: HTML5, makkelijker kunnen we het niet maken!

http://www.initializr.com/

Wednesday, February 1, 12

Page 134: HTML5, makkelijker kunnen we het niet maken!

http://www.processing.jsWednesday, February 1, 12