HTML5
APÍčka bez trička
23. 3. 2011, Drupal setkání, HUB Praha
Prostor pro poznámky
Proč to přednáší tenhle člověk?
Být první k ničemu není, ale můžete se s tím vytahovat na konferencích.
Série obrázků bez trička.
Proč to přednáší tenhle člověk?
- Blog HTML 4 5 6 ...
- html456.blogspot.com
Proč to přednáší tenhle člověk?
- Blog HTML 4 5 6 ...
- html456.blogspot.com
- Od roku 2007
Proč to přednáší tenhle člověk?
- Blog HTML 4 5 6 ...
- html456.blogspot.com
- Od roku 2007
HTML5 API
HTML5 je nejen markup...
...ale i API
Podpora v prohlížečích není černobílá
Slečna, na kterou nikdo nekreslil. Snad příště pozvou někoho rozumného.
Život je krutý, zvykněte si. Bude takové min. 5 let. A možná napořád.
Důraz na testování.
Důraz na frameworky.
Emulace.
Nic z toho, co vám ukážu nefunguje všude perfektně. (Mohli byste jít domů.)
Graceful degradation
Umřít? Proboha jen to ne. Staří weboví vývojáři neumírají, ti jen ... degrade gracefully...
HTML5 API
canvas
Ajax s historií
localStorage
geolokace
...
Canvas
Canvas aneb malířské plátno
Kreslení bez kaskádových stylů
Značka canvas
<canvas></canvas>
Fallback content
<canvas>
<img href="obrazek.png" alt="...desc...">
</canvas>
Hello world
var canvas = document.getElementById("canvas");
var context = canvas.getContext("2d");
context.fillRect(10, 10, 20, 20);
Canvas metody
- moveTo
- lineTo
- quadraticCurveTo
- bezierCurveTo
- arcTo
- rect
- fillRect
Canvas metody 2
- fill
- createLinearGradient
- createRadialGradient
- drawImage
Canvas metody 3
- scale
- rotate
- translate
- transform
Interaktivní hry
http://www.nihilogic.dk/labs/wolf/
Nové renderovací možnosti
http://www.nihilogic.dk/labs/prettyfloat/example.htm
Grafy
http://bluff.jcoglan.com/
Budoucnost
3D
Už ne v HTML5, nýbrž WebGL (OpenGL pro Web)
http://www.youtube.com/watch?v=xn8Y3wzLrXo
Podpora
Jakžtakž: IE8-9, Firefox, Safari, Chrome, Opera
Ale v IE lze emulovat asi 90 % metod pomocí http://excanvas.sourceforge.net/
(Pomalé, ale často stačí.)
Ajax s historií
Proč? - Tlačítko BACK.
Ukázka
http://www.mapy.cz/#x=132762624@y=135826432@z=10@mm=ZP
Kód
<body
onhashchange="..."
>
Serializovaný stav
http://www.mapy.cz/#x=132762624@y=135826432@z=10@mm=ZP
Varianta beze změny URL
history.pushState(obj)
Varianta beze změny URL
history.pushState(obj)
obj = {'x':132762624, 'y':135826432, 'z':10, 'mm':'ZP'}
Varianta beze změny URL
history.pushState(obj)
obj = {'x':132762624, 'y':135826432, 'z':10, 'mm':'ZP'}
Event popstate
Podpora
onhashchange ujde: IE8-9, Firefox, Safari, Chrome, Opera
pushState horší: Firefox, Safari, Chrome, Opera
Ve starších prohlížečích lze emulovat (černá magie).
Lokální úložiště
Když server nestíhá, tak cookies nestačí.
Příklad
localStorage.username = 'Fenchurch';
localStorage.answer = 42;
Příklad
localStorage.username = 'Fenchurch';
localStorage.answer = 42;
if (localStorage.answer == 42)
alert(localStorage.username + ' knows!';);
LocalStorage
Převádí se na text.
Pro datové struktury použijte JSON.
Dva druhy úložišť
- localStorage
- sessionStorage
http://a.met.cz/drupal/storage.html
Podpora
Velmi dobrá: IE8-9, Firefox, Safari, Chrome, Opera
Geolokace
(Psst! Není z HTML5, ale chybně se tam počítá.)
Geolokace
http://maps.google.cz/
Geolokace
navigator.geolocation.getCurrentPosition(callback)
Ukázka
Ukázka...
http://htmlex.met.cz/#%3Cscript%3E%0Afunction%20callback%28obj%29%20{%0A%20%20document.body.innerHTML%20%3D%20%22Lat%3A%20%22%20%2B%20obj.coords.latitude%20%2B%20%22%20lon%3A%22%20%2B%20obj.coords.longitude%20%2B%20%22%20accur%3A%22%20%2B%20obj.coords.accuracy%3B%0A}%0A%0Afunction%20errorback%28obj%29%20{%0A%20%20document.body.innerHTML%20%3D%20%22Error%3A%20%22%20%2B%20obj.code%3B%0A}%0A%0Awindow.onload%20%3D%20function%28%29%20{%0A%20%20if%20%28navigator.geolocation%29%20{%0A%20%20%20%20navigator.geolocation.getCurrentPosition%28callback%2C%20errorback%29%3B%0A%20%20%20%20document.body.innerHTML%20%3D%20%22Loading...%22%3B%0A%20%20}%0A}%0A%3C%2Fscript%3E0
Podpora
Velmi dobrá: IE8-9, Firefox, Safari, Chrome, Opera
Další zdroje
Bazinga!
Děkuji za pozornost!