125
© 2010 Mayflower GmbH Thorsten Rinne I 25. September 2010 PHP UnConference Hamburg 2010 HTML5 for PHP Developers

HTML5 for PHP Developers - IPC

Embed Size (px)

Citation preview

Page 1: HTML5 for PHP Developers - IPC

© 2010 Mayflower GmbH

Thorsten Rinne I 25. September 2010PHP UnConference Hamburg 2010

HTML5 for PHP Developers

Page 2: HTML5 for PHP Developers - IPC

HTML5 for PHP Developers I Mayflower GmbH I 23. September 2010 I 2

Senior Developer / Team LeadHead of Open Source Labs

@MAYFLOWER GMBH

Page 3: HTML5 for PHP Developers - IPC

HTML5 for PHP Developers I Mayflower GmbH I 23. September 2010 I 3

@ThorstenRinne

Page 4: HTML5 for PHP Developers - IPC

Topic:

HTML5 for PHP Developers

Page 5: HTML5 for PHP Developers - IPC

Topic:

HTML5 for PHP Developers

Page 6: HTML5 for PHP Developers - IPC

HTML5 for PHP Developers I Mayflower GmbH I 23. September 2010 I

I won‘t talk about<video> and <audio>

5

Page 7: HTML5 for PHP Developers - IPC

HTML5 for PHP Developers I Mayflower GmbH I 23. September 2010 I

Yes, Youporn is using

HTML5 video!

6

Page 8: HTML5 for PHP Developers - IPC

HTML5 for PHP Developers I Mayflower GmbH I 23. September 2010 I

Who‘s already using HTML5?

7

Page 9: HTML5 for PHP Developers - IPC

HTML5 for PHP Developers I Mayflower GmbH I 23. September 2010 I

HTML5 in one sentence?

8

Page 10: HTML5 for PHP Developers - IPC

HTML5 for PHP Developers I Mayflower GmbH I 23. September 2010 I

„HTML5 is about moving from documents to

applications and from hacks to solutions.“

9

Christian Heilmann on Twitter

Page 11: HTML5 for PHP Developers - IPC

HTML5 for PHP Developers I Mayflower GmbH I 23. September 2010 I

HTML5 for developers?

10

Page 12: HTML5 for PHP Developers - IPC

HTML5 for PHP Developers I Mayflower GmbH I 23. September 2010 I 11

HTML5 ~= HTML + CSS + JS

Page 13: HTML5 for PHP Developers - IPC

HTML5 for PHP Developers I Mayflower GmbH I 23. September 2010 I 12

1999:PHP 3.0 - MySQL 3.22

Apache 1.3

Page 14: HTML5 for PHP Developers - IPC

HTML5 for PHP Developers I Mayflower GmbH I 23. September 2010 I

1999:Internet Explorer 5.0

XMLHttpRequest Object13

Page 15: HTML5 for PHP Developers - IPC

HTML5 for PHP Developers I Mayflower GmbH I 23. September 2010 I

As time goes by ...

14

Page 16: HTML5 for PHP Developers - IPC

HTML5 for PHP Developers I Mayflower GmbH I 23. September 2010 I 15

since 5.0 (1999)

since 1.0 (2004)

since 1.2 (2004)

since 7.6 (2004)

Page 17: HTML5 for PHP Developers - IPC

HTML5 for PHP Developers I Mayflower GmbH I 23. September 2010 I 16

Jesse James Garrett: http://www.adaptivepath.com/ideas/essays/archives/000385.php

2005:Ajax: A New Approach

to Web Applications

Page 18: HTML5 for PHP Developers - IPC

HTML5 for PHP Developers I Mayflower GmbH I 23. September 2010 I 17

Page 19: HTML5 for PHP Developers - IPC

HTML5 for PHP Developers I Mayflower GmbH I 23. September 2010 I

Google Suggest

Google Mail

Google Maps

18

Page 20: HTML5 for PHP Developers - IPC

HTML5 for PHP Developers I Mayflower GmbH I 23. September 2010 I 19

Jesse James Garrett: http://www.adaptivepath.com/ideas/essays/archives/000385.php

2006:Comet

Page 21: HTML5 for PHP Developers - IPC

HTML5 for PHP Developers I Mayflower GmbH I 23. September 2010 I 20

Page 22: HTML5 for PHP Developers - IPC

HTML5 for PHP Developers I Mayflower GmbH I 23. September 2010 I 21

Page 23: HTML5 for PHP Developers - IPC

HTML5 for PHP Developers I Mayflower GmbH I 23. September 2010 I 21

Push

Page 24: HTML5 for PHP Developers - IPC

HTML5 for PHP Developers I Mayflower GmbH I 23. September 2010 I 21

Push Ajax

Page 25: HTML5 for PHP Developers - IPC

HTML5 for PHP Developers I Mayflower GmbH I 23. September 2010 I 21

Push

Push

Ajax

Page 26: HTML5 for PHP Developers - IPC

HTML5 for PHP Developers I Mayflower GmbH I 23. September 2010 I

Okay, what‘s happening?

22

Page 27: HTML5 for PHP Developers - IPC

HTML5 for PHP Developers I Mayflower GmbH I 23. September 2010 I

Contentvs.

Context23

Page 28: HTML5 for PHP Developers - IPC

HTML5 for PHP Developers I Mayflower GmbH I 23. September 2010 I

Facebook is an application!

24

Page 29: HTML5 for PHP Developers - IPC

HTML5 for PHP Developers I Mayflower GmbH I 23. September 2010 I

Pagevs.

Stream25

Page 30: HTML5 for PHP Developers - IPC

HTML5 for PHP Developers I Mayflower GmbH I 23. September 2010 I

Twitter is an application!

26

Page 31: HTML5 for PHP Developers - IPC

HTML5 for PHP Developers I Mayflower GmbH I 23. September 2010 I

Applications?

27

Page 32: HTML5 for PHP Developers - IPC

HTML5 for PHP Developers I Mayflower GmbH I 23. September 2010 I

Apps!

28

Page 33: HTML5 for PHP Developers - IPC

HTML5 for PHP Developers I Mayflower GmbH I 23. September 2010 I 29

Page 34: HTML5 for PHP Developers - IPC

HTML5 for PHP Developers I Mayflower GmbH I 23. September 2010 I

online == offline == online

30

Page 35: HTML5 for PHP Developers - IPC

HTML5 for PHP Developers I Mayflower GmbH I 10. September 2010 I

Is this the new web?

31

Page 36: HTML5 for PHP Developers - IPC

HTML5 for PHP Developers I Mayflower GmbH I 23. September 2010 I 32

The future is a web app!

Page 37: HTML5 for PHP Developers - IPC

HTML5 for PHP Developers I Mayflower GmbH I 10. September 2010 I

The mobile browser ...

33

I ... is identical to the desktop browser

I ... speaks HTML5•Geolocation support

•Websockets support

•Offline apps

I Faster update cycles than on the desktop

I it‘s a

cross plattform realtime runtime

Page 38: HTML5 for PHP Developers - IPC

HTML5 for PHP Developers I Mayflower GmbH I 23. September 2010 I

But what about HTML5?And what about PHP?

34

Page 39: HTML5 for PHP Developers - IPC

HTML5 for PHP Developers I Mayflower GmbH I 23. September 2010 I

2000: PHP chat style polling

Client Server

35

Page 40: HTML5 for PHP Developers - IPC

HTML5 for PHP Developers I Mayflower GmbH I 23. September 2010 I

2000: PHP chat style polling

Client Server

Hey, Wazzup?

35

Page 41: HTML5 for PHP Developers - IPC

HTML5 for PHP Developers I Mayflower GmbH I 23. September 2010 I

2000: PHP chat style polling

Client Server

Hey, Wazzup?

Um, nothing, actually.

35

Page 42: HTML5 for PHP Developers - IPC

HTML5 for PHP Developers I Mayflower GmbH I 23. September 2010 I

2000: PHP chat style polling

Client Server

Hey, Wazzup?

Um, nothing, actually.

1 sec ...

35

Page 43: HTML5 for PHP Developers - IPC

HTML5 for PHP Developers I Mayflower GmbH I 23. September 2010 I

2000: PHP chat style polling

Client Server

35

Page 44: HTML5 for PHP Developers - IPC

HTML5 for PHP Developers I Mayflower GmbH I 23. September 2010 I

2000: PHP chat style polling

Client Server

Hey, Wazzup?

35

Page 45: HTML5 for PHP Developers - IPC

HTML5 for PHP Developers I Mayflower GmbH I 23. September 2010 I

2000: PHP chat style polling

Client Server

Hey, Wazzup?

Um, nothing, actually.

35

Page 46: HTML5 for PHP Developers - IPC

HTML5 for PHP Developers I Mayflower GmbH I 23. September 2010 I

2000: PHP chat style polling

Client Server

Hey, Wazzup?

Um, nothing, actually.

1 sec ...

35

Page 47: HTML5 for PHP Developers - IPC

HTML5 for PHP Developers I Mayflower GmbH I 23. September 2010 I

2000: PHP chat style polling

Client Server

35

Page 48: HTML5 for PHP Developers - IPC

HTML5 for PHP Developers I Mayflower GmbH I 23. September 2010 I

2000: PHP chat style polling

Client Server

Hey, Wazzup?

35

Page 49: HTML5 for PHP Developers - IPC

HTML5 for PHP Developers I Mayflower GmbH I 23. September 2010 I

2000: PHP chat style polling

Client Server

Hey, Wazzup?

Um, nothing, actually.

35

Page 50: HTML5 for PHP Developers - IPC

HTML5 for PHP Developers I Mayflower GmbH I 23. September 2010 I

2000: PHP chat style polling

Client Server

Hey, Wazzup?

Um, nothing, actually.

1 sec ...

35

Page 51: HTML5 for PHP Developers - IPC

HTML5 for PHP Developers I Mayflower GmbH I 23. September 2010 I

2000: PHP chat style polling

Client Server

35

Page 52: HTML5 for PHP Developers - IPC

HTML5 for PHP Developers I Mayflower GmbH I 23. September 2010 I

2000: PHP chat style polling

Client Server

WTF ?!

35

Page 53: HTML5 for PHP Developers - IPC

HTML5 for PHP Developers I Mayflower GmbH I 23. September 2010 I

1 User = 1 req / secCPU #FAIL

36

Page 54: HTML5 for PHP Developers - IPC

HTML5 for PHP Developers I Mayflower GmbH I 23. September 2010 I

2006: COMET style long poll

Client Server

37

Page 55: HTML5 for PHP Developers - IPC

HTML5 for PHP Developers I Mayflower GmbH I 23. September 2010 I

2006: COMET style long poll

Client Server

Hey, Wazzup?

37

Page 56: HTML5 for PHP Developers - IPC

HTML5 for PHP Developers I Mayflower GmbH I 23. September 2010 I

2006: COMET style long poll

Client Server

Hey, Wazzup?

Um, nothing, actually ...

37

Page 57: HTML5 for PHP Developers - IPC

HTML5 for PHP Developers I Mayflower GmbH I 23. September 2010 I

2006: COMET style long poll

Client Server

Hey, Wazzup?well ...

37

Page 58: HTML5 for PHP Developers - IPC

HTML5 for PHP Developers I Mayflower GmbH I 23. September 2010 I

2006: COMET style long poll

Client Server

Hey, Wazzup?wait ...

37

Page 59: HTML5 for PHP Developers - IPC

HTML5 for PHP Developers I Mayflower GmbH I 23. September 2010 I

2006: COMET style long poll

Client Server

Hey, Wazzup?

Uh, there is something ...

37

Page 60: HTML5 for PHP Developers - IPC

HTML5 for PHP Developers I Mayflower GmbH I 23. September 2010 I

2006: COMET style long poll

Client Server

Hey, Wazzup?No, nothing.

37

Page 61: HTML5 for PHP Developers - IPC

HTML5 for PHP Developers I Mayflower GmbH I 23. September 2010 I

2006: COMET style long poll

Client Server

WTF ?!

37

Page 62: HTML5 for PHP Developers - IPC

HTML5 for PHP Developers I Mayflower GmbH I 23. September 2010 I

1 User = 1 Apache childMEMORY #FAIL

38

Page 63: HTML5 for PHP Developers - IPC

HTML5 for PHP Developers I Mayflower GmbH I 23. September 2010 I 39

Page 64: HTML5 for PHP Developers - IPC

HTML5 for PHP Developers I Mayflower GmbH I 23. September 2010 I

MEMORY: WINCPU: 1/2 WIN

40

Page 65: HTML5 for PHP Developers - IPC

HTML5 for PHP Developers I Mayflower GmbH I 23. September 2010 I

Client

Client

Client PHP-Server

41

Page 66: HTML5 for PHP Developers - IPC

HTML5 for PHP Developers I Mayflower GmbH I 23. September 2010 I 42

var ws = new WebSocket("ws://example.com/service");

ws.onopen = function() { ws.send("message to send"); ....};

ws.onmessage = function (event) { var received_msg = event.data; ... };

ws.onclose = function() { // websocket is closed. };

WebSockets to the rescue!

Page 67: HTML5 for PHP Developers - IPC

HTML5 for PHP Developers I Mayflower GmbH I 23. September 2010 I 43

WebSockets & PHPI http://code.google.com/p/phpwebsocket/I Currently an ugly hackI But quite easy:

list($resource,$host,$origin) = getheaders($buffer); $upgrade = "HTTP/1.1 101 Web Socket Protocol Handshake\r\n" .           "Upgrade: WebSocket\r\n" .           "Connection: Upgrade\r\n" .           "WebSocket-Origin: " . $origin . "\r\n" .           "WebSocket-Location: ws://" . $host . $resource . "\r\n\r\n";

$handshake = true; socket_write($socket,$upgrade.chr(0),strlen($upgrade.chr(0)));

Page 68: HTML5 for PHP Developers - IPC

HTML5 for PHP Developers I Mayflower GmbH I 23. September 2010 I

More logic will move to the client... the browser!

44

Page 69: HTML5 for PHP Developers - IPC

HTML5 for PHP Developers I Mayflower GmbH I 23. September 2010 I 45

Web WorkerI Multi-threaded JavaScriptI Easy example:

main.js: var worker = new Worker('backgroundtask.js'); worker.onmessage = function(event) { alert(event.data); };

backgroundtask.js: self.onmessage = function(event) { // Do some tough work... self.postMessage(some_data); }

Page 70: HTML5 for PHP Developers - IPC

HTML5 for PHP Developers I Mayflower GmbH I 23. September 2010 I 46

Offline Application Cache index.html:

<html manifest="cache.manifest"> window.applicationCache.addEventListener('checking', updateCacheStatus, false);

cache.manifest:

CACHE MANIFEST

CACHE: /html5/demo/index.html /html5/demo/style.css /html5/demo/background.png

Page 71: HTML5 for PHP Developers - IPC

HTML5 for PHP Developers I Mayflower GmbH I 23. September 2010 I 47

Web Messaging <iframe src="http://www.example.org/message/" id="iframe"> </iframe> <form id="form">  <input type="text" id="msg" value="Message to send"/>  <input type="submit"/> </form> <script> window.onload = function() {    var win = document.getElementById("iframe").contentWindow;      document.getElementById("form").onsubmit = function(e) {      win.postMessage(document.getElementById("msg").value);        e.preventDefault();      }; }; </script>

Page 72: HTML5 for PHP Developers - IPC

HTML5 for PHP Developers I Mayflower GmbH I 23. September 2010 I 48

Web Messaging <strong>This iframe is located on www.example.com</strong> <div id="test">Hello, World!</div> <script> document.addEventListener("message", function(e){    document.getElementById("test").textContent =      e.domain + " said: " + e.data; }, false); </script>

Page 73: HTML5 for PHP Developers - IPC

HTML5 for PHP Developers I Mayflower GmbH I 23. September 2010 I 49

WebStorageI Short living dataI sessionStorage objectI will be deleted after closing the browserI Long living dataI localStorage objectI will not be deleted after closing the browser

Page 74: HTML5 for PHP Developers - IPC

HTML5 for PHP Developers I Mayflower GmbH I 23. September 2010 I 50

WebStorage

if (!sessionStorage['counter']) {   sessionStorage['counter'] = 0; } else {   sessionStorage['counter']++; }

document.querySelector('#content').innerHTML =     '<p>This sample has been run ' + sessionStorage.getItem('counter') + ' times</p>' +    '<p>(The value will be available until ' + we close the tab)</p>';

Page 75: HTML5 for PHP Developers - IPC

HTML5 for PHP Developers I Mayflower GmbH I 23. September 2010 I 51

Web SQL Database var db = window.openDatabase("Database Name", "Database Version"); db.transaction(function(tx) { tx.executeSql("SELECT * FROM test", [], successCallback, errorCallback); });

Page 76: HTML5 for PHP Developers - IPC

HTML5 for PHP Developers I Mayflower GmbH I 23. September 2010 I 52

Geolocation if (navigator.geolocation) { navigator.geolocation.getCurrentPosition(function(position) { var lat = position.coords.latitude; var lng = position.coords.longitude; var options = { position: new google.maps.LatLng(lat, lng) } var marker = new google.maps.Marker(options); marker.setMap(map); }); }

Page 77: HTML5 for PHP Developers - IPC

HTML5 for PHP Developers I Mayflower GmbH I 23. September 2010 I 53

Drag and Drop API <li draggable="true" id="pic1" ondragstart="drag(this, event)"> <span>foobar.png</span> </li>

<div id="trash" ondrop="drop(this, event)" ondragenter="return false" ondragover="return false"></div>

function drag(target, e) { e.dataTransfer.setData('Text', target.id); } function drop(target, e) { var id = e.dataTransfer.getData('Text'); target.appendChild(document.getElementById(id)); e.preventDefault(); }

Page 78: HTML5 for PHP Developers - IPC

HTML5 for PHP Developers I Mayflower GmbH I 23. September 2010 I 54

Using the File API (I)

var reader = new FileReader(); reader.onload = function(e) { var bin = e.target.result; // „bin“ is the binary string }; reader.readAsBinaryString(file);

Page 79: HTML5 for PHP Developers - IPC

HTML5 for PHP Developers I Mayflower GmbH I 23. September 2010 I 55

Using the File API (II) var xhr = new XMLHttpRequest(); xhr.open("POST", "upload.php"); xhr.overrideMimeType('text/plain; charset=x-user-defined-binary'); xhr.sendAsBinary(bin);

Page 80: HTML5 for PHP Developers - IPC

HTML5 for PHP Developers I Mayflower GmbH I 23. September 2010 I 55

Using the File API (II) var xhr = new XMLHttpRequest(); xhr.open("POST", "upload.php"); xhr.overrideMimeType('text/plain; charset=x-user-defined-binary'); xhr.sendAsBinary(bin);

xhr.upload.addEventListener("progress", function(e) { if (e.lengthComputable) { var percentage = Math.round((e.loaded * 100) / e.total); // do something } }, false);

Page 81: HTML5 for PHP Developers - IPC

HTML5 for PHP Developers I Mayflower GmbH I 23. September 2010 I

This was just the JavaScript beginning...

56

Page 82: HTML5 for PHP Developers - IPC

HTML5 for PHP Developers I Mayflower GmbH I 23. September 2010 I

What‘s left for us PHP developers?

57

Page 83: HTML5 for PHP Developers - IPC

HTML5 for PHP Developers I Mayflower GmbH I 23. September 2010 I

HTML5 is part of anapplication framework!

58

Page 84: HTML5 for PHP Developers - IPC

HTML5 for PHP Developers I Mayflower GmbH I 23. September 2010 I

The LAMP stack gets a bust of Janus

59

web application component

real time web component

Page 85: HTML5 for PHP Developers - IPC

HTML5 for PHP Developers I Mayflower GmbH I 23. September 2010 I

PHP developers have to learn JavaScript as well!

60

Page 86: HTML5 for PHP Developers - IPC

HTML5 for PHP Developers I Mayflower GmbH I 23. September 2010 I

Modern PHP applications use both:

61

JavaScript50%

PHP50%

Page 87: HTML5 for PHP Developers - IPC

HTML5 for PHP Developers I Mayflower GmbH I 23. September 2010 I 62

Page 88: HTML5 for PHP Developers - IPC

HTML5 for PHP Developers I Mayflower GmbH I 23. September 2010 I

<!DOCTYPE html>

63

Page 89: HTML5 for PHP Developers - IPC

HTML5 for PHP Developers I Mayflower GmbH I 23. September 2010 I

<!DOCTYPE html>

63

Page 90: HTML5 for PHP Developers - IPC

HTML5 for PHP Developers I Mayflower GmbH I 23. September 2010 I

<header><hgroup><nav>

<article><footer>

64

HTML5 page structure

Page 91: HTML5 for PHP Developers - IPC

HTML5 for PHP Developers I Mayflower GmbH I 23. September 2010 I

<section><aside>

65

HTML5 article structure

Page 92: HTML5 for PHP Developers - IPC

HTML5 for PHP Developers I Mayflower GmbH I 23. September 2010 I

<time><details><figure>

<figcaption><mark>

66

New semantic tags

Page 93: HTML5 for PHP Developers - IPC

HTML5 for PHP Developers I Mayflower GmbH I 23. September 2010 I 67

New link relations

<link rel="alternate" type="application/rss+xml" href="http://www.php.net/feed"> <link rel="icon" href="/favicon.ico"> <link rel="pingback" href="http://www.phpmyfaq.de/xmlrpc.php"> <link rel="prefetch" href="http://www.phpmyfaq.de/main.php"> ... <a rel="archives" href="http://www.phpmyfaq.de/archives">Old posts</a> <a rel="external" href="http://www.php.net">PHP Homepage</a> <a rel="license" href="http://www.apache.org/licenses/LICENSE-2.0">License</a> <a rel="nofollow" href="http://www.ruby-lang.org/">Ruby Homepage</a> <a rel="tag" href="http://devblog.phpmyfaq/category/PHP">PHP tagged postes</a>

Page 94: HTML5 for PHP Developers - IPC

HTML5 for PHP Developers I Mayflower GmbH I 23. September 2010 I 68

WebForms <input placeholder="Search Bookmarks and History">

after clicking...

Page 95: HTML5 for PHP Developers - IPC

HTML5 for PHP Developers I Mayflower GmbH I 23. September 2010 I 69

WebForms<input maxlength="256" name="q" value="" autofocus>

<input maxlength="256" name="q" value="" required="true">

Page 97: HTML5 for PHP Developers - IPC

HTML5 for PHP Developers I Mayflower GmbH I 23. September 2010 I 71

WebForms <input type="number" min="0" max="10" step="2" value="6">

024

68

10

Page 98: HTML5 for PHP Developers - IPC

HTML5 for PHP Developers I Mayflower GmbH I 23. September 2010 I 72

WebForms <input type="range" min="0" max="10" step="2" value="6">

Page 100: HTML5 for PHP Developers - IPC

HTML5 for PHP Developers I Mayflower GmbH I 23. September 2010 I 74

WebForm Color picker

<input type="color">

Page 101: HTML5 for PHP Developers - IPC

HTML5 for PHP Developers I Mayflower GmbH I 23. September 2010 I 75

contenteditable

<p contenteditable="true">Edit foobar!</p>

I Save it withI sessionStorageI localStorageI PHP powered backend with Ajax :-)

Page 102: HTML5 for PHP Developers - IPC

HTML5 for PHP Developers I Mayflower GmbH I 23. September 2010 I 76

<canvas> <canvas id="canvas" width="838" height="220"></canvas>

<script> var canvasContext = $("#canvas").getContext("2d"); canvasContext.fillRect(250, 25, 150, 100); canvasContext.beginPath(); canvasContext.arc(450, 110, 100, Math.PI * 1/2, Math.PI * 3/2); canvasContext.lineWidth = 15; canvasContext.lineCap = 'round'; canvasContext.strokeStyle = 'rgba(255, 127, 0, 0.5)'; canvasContext.stroke(); </script>

Page 103: HTML5 for PHP Developers - IPC

HTML5 for PHP Developers I Mayflower GmbH I 23. September 2010 I 77

<canvas>

Page 104: HTML5 for PHP Developers - IPC

HTML5 for PHP Developers I Mayflower GmbH I 23. September 2010 I 78

WebGL

Page 105: HTML5 for PHP Developers - IPC

HTML5 for PHP Developers I Mayflower GmbH I 23. September 2010 I 79

Have fun with HTML5!

Page 106: HTML5 for PHP Developers - IPC

HTML5 for PHP Developers I Mayflower GmbH I 23. September 2010 I

And what about CSS3?

80

Page 107: HTML5 for PHP Developers - IPC

HTML5 for PHP Developers I Mayflower GmbH I 10. September 2010 I

New selectors

81

.row:nth-child(even) { background: #cccccc; }

.row:nth-child(odd) { background: #ffffff; }

row 1

row 2

row 3

row 4

Page 108: HTML5 for PHP Developers - IPC

HTML5 for PHP Developers I Mayflower GmbH I 10. September 2010 I

The state of WebFonts...

@font-face {

font-family: 'FuturaNew';

src: url(FuturaNew.otf);

}

header {

font-family: 'LeagueGothic';

colour: red;

}

82

No font replacement! :-)

Page 109: HTML5 for PHP Developers - IPC

HTML5 for PHP Developers I Mayflower GmbH I 10. September 2010 I

More new CSS3 features...

I better font support

I better text wrapping

I columns

I opacity

I Hue/saturation/luminance color model

I Rounded corners, finally! ;-)

I Gradients

I Shadows

I better backgrounds

I transitions

I animations

83

Page 110: HTML5 for PHP Developers - IPC

HTML5 for PHP Developers I Mayflower GmbH I 23. September 2010 I 84

HTML5 readiness

Page 111: HTML5 for PHP Developers - IPC

HTML5 for PHP Developers I Mayflower GmbH I 23. September 2010 I 85

26 %

77 %86 %

79 %72 %

IE8 Firefox 3.6Chrome 5.0 Safari 5.0Opera 10.5

HTML5 readiness

Page 112: HTML5 for PHP Developers - IPC

HTML5 for PHP Developers I Mayflower GmbH I 23. September 2010 I 86

HTML5 readiness2010

Page 113: HTML5 for PHP Developers - IPC

HTML5 for PHP Developers I Mayflower GmbH I 23. September 2010 I

HTML5 readiness

87

Cross-document messaging

content

editable

New semantic

tags

getElementsByClassName()

<video> <audio>

IE 8.0

FF 3.6

Chrome 5

Safari 5

Opera 10.5

Page 114: HTML5 for PHP Developers - IPC

HTML5 for PHP Developers I Mayflower GmbH I 23. September 2010 I

HTML5 readiness

88

Basic <canvas> support

Text API for

<canvas>Drag n Drop Offline Web

ApplicationsHTML5

WebFormsInline SVG

IE 8.0

FF 3.6

Chrome 5

Safari 5

Opera 10.5

Page 115: HTML5 for PHP Developers - IPC

HTML5 for PHP Developers I Mayflower GmbH I 23. September 2010 I 89

HTML5 readiness2011

Page 116: HTML5 for PHP Developers - IPC

HTML5 for PHP Developers I Mayflower GmbH I 23. September 2010 I

HTML5 readiness

90

Cross-document messaging

content

editable

New semantic

tags

getElementsByClassName()

<video> <audio>

IE 9.0

FF 4.0

Chrome 6

Safari

Opera

Page 117: HTML5 for PHP Developers - IPC

HTML5 for PHP Developers I Mayflower GmbH I 23. September 2010 I

HTML5 readiness

91

Basic <canvas> support

Text API for

<canvas>Drag n Drop Offline Web

ApplicationsHTML5

WebFormsInline SVG

IE 9.0

FF 4.0

Chrome 6

Safari

Opera

Page 118: HTML5 for PHP Developers - IPC

HTML5 for PHP Developers I Mayflower GmbH I 23. September 2010 I

But...

92

Page 119: HTML5 for PHP Developers - IPC

HTML5 for PHP Developers I Mayflower GmbH I 23. September 2010 I 93

Browser stats 2010IE 8.0

Firefox 3.6IE 7.0IE 6.0

Chrome 6.0Chrome 5.0Firefox 3.5Safari 5.0

Firefox 3.0Opera 10.6

Safari 4.0Firefox 2.0

Other 2,9 %

0,4 %

0,8 %

1,4 %

2,4 %

2,9 %

4,4 %

4,5 %

6,4 %

7,5 %

13,0 %

24,0 %

29,0 %

StatCounter Global Stats

Page 120: HTML5 for PHP Developers - IPC

HTML5 for PHP Developers I Mayflower GmbH I 23. September 2010 I

What‘s already safe for using?

94

Page 121: HTML5 for PHP Developers - IPC

HTML5 for PHP Developers I Mayflower GmbH I 23. September 2010 I

contenteditablepostMessage (same domain)postMessage (cross domain)

WebStorage with IE 8+

95

Page 122: HTML5 for PHP Developers - IPC

HTML5 for PHP Developers I Mayflower GmbH I 23. September 2010 I

Any help?A cool JavaScript library!

e.g. Modernizr

96

Page 123: HTML5 for PHP Developers - IPC

HTML5 for PHP Developers I Mayflower GmbH I 23. September 2010 I 97

HTML5 helper No.1

Page 124: HTML5 for PHP Developers - IPC

HTML5 for PHP Developers I Mayflower GmbH I 23. September 2010 I

Questions?

98

Page 125: HTML5 for PHP Developers - IPC

Thank you very much!

© 2010 Mayflower GmbH

Contact Thorsten [email protected]+49 89 242054-31

Mayflower GmbHMannhardtstr. 680538 München