html5, makkelijker kunnen we het niet maken!

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

Upload: henk-jurriens

Post on 28-Jan-2015

111 views

Category:

Technology


4 download

DESCRIPTION

Introduction into HTML5

TRANSCRIPT

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