49
HTML5

HTML5

Embed Size (px)

DESCRIPTION

Übersicht über HTML5, Entstehung, Codebeispiele, …

Citation preview

Page 1: HTML5

HTML5

Page 3: HTML5

HTML-Spezifikationen

• HTML 1, 2, 3(.2), 4(.01)

• XHTML 1 und 1.1

• XHTML2 Working Draft

…Unruhe

Page 5: HTML5

WHATWGWeb Hypertext Application Technology Working Group

Page 6: HTML5

WHATWG

• gegründet 2004 von Mitarbeitern von Apple, Mozilla, Opera

• Bedenken wegen einseitiger Ausrichtung des W3C auf XHTML

• Vernachlässigung von HTML

• …und sonstigen Problemen die „normale“ Webentwickler so haben

Page 8: HTML5

Probleme mit XHTML2

Page 10: HTML5

„Only 4.13% of Webpages validate“

Page 11: HTML5

Tagsoup

<p><b>a<i>b</b>c</i><p>

Page 12: HTML5

XHTML als XML

Page 13: HTML5

XHTML als HTML

Page 15: HTML5

HTML5 = Evolution

http://www.flickr.com/photos/cpurrin1/2262636867/

Page 16: HTML5

HTML5 – Design-Prinzipien

(c) istockphoto.com/skodonnell

Page 17: HTML5

Design-Prinzipien

• Kompatibilität

• Fehlertoleranz

• Lösen von „echten“ Problemen

• „Universal Access“

• „Evolution – not Revolution“

Page 18: HTML5

HTML5 in der Praxis

Page 19: HTML5

HTML oder XHTML?

• HTML5 kann sowohl als HTML als auch als XHTML gesendet werden

• HTML/XHTML ist nur die Serialisierung

• DOM ist die Basis

Page 20: HTML5

Senden als XHTML

• Kein Doctype – nur XML-Prolog

• Namespace notwendig<html xmlns="http://www.w3.org/1999/xhtml">

• Muss als application/xhtml+xml oder application/xml gesendet werden

• kein <noscript>-Element

Page 21: HTML5

Doctype - alt

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

Page 22: HTML5

Doctype - neu

<!DOCTYPE html>

Page 23: HTML5

Syntax

<DIV>Tags groß</DIV><div>Tags klein</div>

<input type=text><input type="text"><input type="text" />

Freiheit…oder Chaos?

Page 24: HTML5

Zeichensatzangabe – alt

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

Page 25: HTML5

Zeichensatzangabe – neu

<meta charset="utf-8">

Page 26: HTML5

Probleme mit HTML5

• IE (bis V8) produzieren DOM-Müll bei unbekannten Elementen

• führt u.a. dazu, dass CSS-Regeln mit unbekannten Elementen nicht greifen

• es gibt aber Hacks, um den IEs auf die „Sprünge zu helfen“

Page 27: HTML5

Keine Probleme

• …bei den neuen Attributen

• …bei den neuen Input-Elementen

• …mit dem neuen Doctype

Page 28: HTML5

…noch was nettes:

<a href="meinlink.html"> <h1>Überschrift</h1> <p> Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis ... </p></a>

Links um Blockelemente

Page 29: HTML5

Neue Features

http://www.flickr.com/photos/brian-fitzgerald/418686654/

Page 32: HTML5

<audio>

<audio src="music.oga" controls> <a href="music.oga">Download song</a></audio>

Page 33: HTML5

<audio>

<audio> <source src="music.oga" type="audio/ogg"> <source src="music.mp3" type="audio/mpeg"></audio>

Page 34: HTML5

<video>

<video src="video.ogv" controls poster="poster.jpg" width="320" height="240"> <a href="video.ogv">Download movie</a></video>

Page 35: HTML5

<video>

<video poster="poster.jpg"> <source src="video.3gp" type="video/3gpp" media="handheld"> <source src="video.ogv" type="video/ogg; codecs=theora, vorbis"> <source src="video.mp4" type="video/mp4"></video>

Page 37: HTML5

SVG (integriert)

Page 38: HTML5

SVG

<svg xmlns:svg="http://www.w3.org/2000/svg" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 200 100" width="200px" height="100px"> <circle cx="50" cy="50" r="30" style="stroke:none; fill:#ff0000;"/> <g transform="translate(100, 20) scale(1.65)"> <polygon points="36 25, 25 36, 11 36, 0 25, 0 11, 11 0, 25 0, 36 11" style="stroke:none; fill:#0000ff;" /> </g> <rect x="60" y="20" height="60" width="60" style="stroke:none; fill:#00ff00; fill-opacity: 0.5;" /> </svg>

Page 40: HTML5

einfache 2D-Elemente

Page 41: HTML5

einfache 2D-Elemente

<canvas width="200" height="100" id="simpleCanvas" style="border: 1px solid black"> <p> Sorry, but your browser does not support <code>&lt;canvas&gt;</code> :( </p></canvas>

Page 42: HTML5

einfache 2D-Elemente

function drawSimpleCanvas() { var canvas = document.getElementById("simpleCanvas"); if (canvas.getContext) { var ctx = canvas.getContext("2d"); ctx.beginPath(); // the circle ctx.fillStyle = "#ff0000"; ctx.arc(50, 50, 30, 0, 2*Math.PI, true); ctx.closePath(); ctx.fill(); ctx.save(); // move and resize the octagon ctx.translate(100, 20); ctx.scale(1.65, 1.65);

Page 44: HTML5

Webstorage/Webdatabase

Page 46: HTML5

Offline-Applikationen

1. SQL-basierte Datenbank („Web Databases“)

2. Offline HTTP-Cache(„Cache-Manifest“)

Page 47: HTML5

GeoLocation

http://merged.ca/iphone/html5-geolocation

Page 48: HTML5

Fragen? Fragen!