Slidy: http://www.kosek.cz/xml/2015html5tul/
HTML 4.0 (prosinec 1997) – poslední nová funkcionalita
HTML 4.01 (prosinec 1999) – pouze „stylistické“ úpravy
XHTML 1.0 (leden 2000) – stejné jako HTML 4.01, ale založeno na XML syntaxi
XHTML 1.1 (květen 2001) – modularizace specifikace, kromě Ruby žádná nová funkcionalita
XHTML 2 – kvůli nepřijetí trhem zastavuje W3C práce na této specifikaci ke konci roku 2009
HTML 5 – od roku 2004 vyvíjeno v rámci WHATWG, od roku 2007 pak společně s W3C
28. října 2014 – HTML 5 vydáno jako doporučení W3C
po roce 2000 se vyvíjejí stále více interaktivní aplikace
kombinace HTML + DOM + JavaScript + CSS
specifikace a jejich vzájemná interakce nebyla vždy přesně definována
některé věci nebyly specifikovány vůbec (např. XHR)
bylo obtížné psát aplikace, které fungují ve všech prohlížečích
Flash, SilverLight, JavaFX, …
speciální prostředí
pro spuštění je vyžadován plugin
psaní aplikací je snazší a možnosti větší
klasická kombinace HTML + DOM + JavaScript by brzy na psaní aplikací přestala stačit
cíle HTML5
zpřesnit definici HTML a DOM tak, aby byla jednoznačná a odpovídala skutečnému chování prohlížečů
přidat do standardního jazyka některá dosud proprietární, ale užitečná rozšíření prohlížečů
přidat některé nové užitečné funkce
rozdělení HTML a XHTML byla chyba a příliš revoluční krok
nové elementy pro lepší popis struktury a sémantiky stránek
lepší podpora multimédií a grafiky
vylepšení DOM
vylepšení formulářů
nová API
specifikace definuje elementy a atributy a jejich reprezentaci v paměti pomocí rozhraní DOM
dokument je možné uložit ve dvou formátech
XML serializace (někdy označovaná jako XHTML5) – odpovídá XHTML dokumentům
HTML serializace – odpovídá běžnému HTML formátu
DOM je v obou případech stejný kvůli lepší kompatibilitě skriptů
parser se vybírá podle typu média (text/html
× application/xhtml+xml
)
zpětně kompatibilní i se starými prohlížeči
autoři stránek ji znají
nevadí v ní syntaktické chyby
krátší zápis (lze vynechávat koncové tagy, uvozovky kolem hodnot atributů, …)
není formálně založena na SGML jako u předchozích verzí HTML
lze ji zpracovávat pomocí XML nástrojů
lepší rozšiřitelnost pomocí jmenných prostorů
XHTML lze kombinovat s libovolnými dalšími jazyky, HTML zatím podporuje pouze kombinování s SVG a MathML
striktní syntaxe (výhoda i nevýhoda)
je nutné posílat s MIME typem application/xml
nebo application/xhtml+xml
průnik HTML a XML syntaxe, který produkuje stejný DOM při načítání pomocí HTML i XML parseru
dovoluje posílat XHTML5 s MIME typem
text/html
omezení
nicméně pořád zůstává otázka, proč používat „polyglot“
section
– sekce stránky (např. kapitola
knihy, obsah jedné záložky, …)
nav
– označení navigace
article
– článek, příspěvek v diskusi, …
aside
– samostatný obsah související
s okolním textem (třeba anketa k článku)
main
– hlavní obsah stránky
header
– hlavička stránky nebo části
footer
– patička stránky nebo části
time
– zápis data a času
<time datetime="2007-08-05T20:00:00Z">5. srpna 2007 v osm večer</time>
meter
– zápis jednotek, počítadel, ukazatelů, …
<meter>42%</meter>
<meter value="90" min="0" max="200" low="90" high="140">nízké IQ</meter>
<meter value="20" max="30">20 nepřečtených mailů ze 30</meter>
progress
– ukazatel průběhu nějaké akce
Průběh načítání dat <progress>20%</progress>
mark
– vyznačení textu (například výsledek
hledání)
<p>Chyba v následujícím kódu je zvýrazněna:</p>
<pre><code>var i: Integer;
begin
i := <mark>1.1</mark>;
end.</code></pre>
figure
– ilustrace/příklad/… s volitelným popiskem (figcaption
)
<figure>
<pre>Průběh načítání dat <progress>20%</progress></pre>
<figcaption>Ukázka použití elementu <code>progress</code></figcaption>
</figure>
template
– obsah elementu se nezobrazuje, ale je přístupný ze skriptů
wbr
– označení místa možného zalomení řádky
output
– místo, kam se bude vkládat výstup skriptu
bdi
– označení textu, na který se nemá vztahovat bi-di algoritmus
keygen
– generování soukromého a veřejného klíče
embed
– „staronový“ element pro vkládání obsahu pomocí pluginů
specifikace HTML v mnoha ohledech usnadňuje a doporučuje tvorbu přístupného obsahu (nové „sémantické“ elementy, možnost fallbacku u nových multimediálních elementů)
navíc lze u každého elementu použít další atributy
ARIA – role
a aria-*
ARIA = Accessible Rich Internet Applications
atributy ARIA popisují skutečný význam prezentačního kódu
<ul role="menubar">
<li role="menuitem" aria-haspopup="true" aria-labelledby="fileLabel">
<span id="fileLabel">File</span>
<ul role="menu">
<li role="menuitem">New</li>
<li role="menuitem">Open…</li>
</ul>
</li>
</ul>
element object
je málo specifický a každý
prohlížeč jej podporuje trochu jinak
pro vkládání audia/videa se proto dlouho nejvíce používal Flash
nové elementy audio
a video
umožňují přímočaré vložení zvuku či videa
<video src="film.mov" width="320" height="200">
Ve vašem starém prohlížeči video neuvidíte
</video>
DOM rozhraní nabízí metody pro ovládání přehrávání
kvůli licenčním problém není zatím shoda na jednom kodeku, který by podporovali všichny prohlížeče
stejný obsah proto lze zadat v několika různých formátech
<video>
<source src='video.mp4' type='video/mp4'>
<source src='video.webm' type='video/webm'>
<source src='video.ogv' type='video/ogg'>
Váš prohlížeč neumí video přehrát
</video>
pro audio a video záznamy lze přidat odkaz na titulky
titulky jsou ve formátu WebVTT
lze zadat několik vatiant titulků
zobrazení titulků lze ovládat pomocí JS a stylovat pomocí CSS
<video src="brave.webm">
<track kind="subtitles" src="brave.en.vtt" srclang="en" label="English">
<track kind="captions" src="brave.en.hoh.vtt" srclang="en"
label="English for the Hard of Hearing">
<track kind="subtitles" src="brave.fr.vtt" srclang="fr"
lang="fr" label="Français">
<track kind="subtitles" src="brave.de.vtt" srclang="de"
lang="de" label="Deutsch">
</video>
element canvas
definuje virtuální plochu, ve
které lze pomocí skriptování kreslit
v současné době je široce podporována podporována 2D grafika
postupně prohlížeče začínají podporovat i 3D variantou – WebGL (obdoba OpenGL)
podporovány jsou všechny běžné grafické operace – čáry, křivky, texty, vkládání bitmap, transformace, …
není zde objektový model a model propagace událostí
vytvoření oblasti na stránce pomocí elementu
canvas
<canvas id="platno" width="600" height="300"></canvas>
v Javascriptu je potřeba vybrat správné plátno a získat jeho kontext
var context = document.getElementById('platno').getContext("2d");
context.beginPath();
context.moveTo(10, 10);
context.lineTo(100, 100);
context.stroke();
vektorový grafický formát využívající pro zápis XML syntaxi
obrázek se skládá ze základních grafických elementů jako úsečka, kružnice, text, …
může být načten ze samostatného souboru (img
,
object
) nebo vložen přímo do kódu stránky
možnost zvětšování/zmenšování bez ztráty kvality, transformace a animace
s obrázkem lze manipulovat pomocí rozhraní DOM a JavaScriptu
lze stylovat pomocí CSS
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>Ukázka SVG obrázku</title>
</head>
<body>
<h1>Vektorový obrázek v SVG</h1>
<svg width="400" height="400">
<circle style="fill: blue; stroke: red" cx="200" cy="200" r="150"/>
<text x="100" y="200"
style="font-size: 36px; font-family: Verdana">Ahoj světe</text>
</svg>
</body>
</html>
Canvas | SVG | |
---|---|---|
Výhody |
|
|
Nevýhody |
|
|
formuláře z HTML4 jsou velice omezené
nenabízejí potřebnou interaktivitu
kontrola vstupů se musí pracně programovat v Javascriptu
HTML5 přidává několik nových typů a deklarativní validaci vstupů
pohodlnější zadávání data a času
<input type="date" name="…"/>
<input type="time" name="…"/>
speciální typy pro čísla
<input type="number"/>
<input type="range" min="1" max="20" step="2"/>
emaily, telefonní čísla a URL
<input type="email"/>
<input type="url"/>
<input type="tel"/>
pohodlný výběr barvy (vrací #RRGGBB notaci)
<input type="color"/>
seznam napovídaných hodnot
Titul: <input list="tituly"/>
<datalist id="tituly">
<option value="Ing."/>
<option value="Bc."/>
<option value="Mgr."/>
</datalist>
pro číselné typy lze určit minimální a maximální hodnotu
<input type="number" min="1" max="20" …>
pro řetězcové typy lze určit minimální a maximální délku
<input type="password" minlength="8" maxlength="20" …>
pro řetězcové typy lze určit i regulární výraz pomocí atributu
pattern
<input name="psc" pattern="[0-9]{3} [0-9]{2}"
title="Poštovní směrovací číslo ve tvaru 123 45">
pomocí DOM+JS lze zpracovávat chyby nalezené ve formuláři
element output
se používá k vytvoření místa, kam se
vkládá výstup generovaný klientským skriptem
<form oninput="result.value = a.valueAsNumber + b.valueAsNumber">
<input name="a" type="number" step="any"> +
<input name="b" type="number" step="any"> =
<output name="result">
</form>
pomocí elementu keygen
lze vygenerovat
dvojici soukromý/veřejný klíč
DOM2 byl přímo integrován do specifikace HTML5
důvodem je větší důraz na tvorbu aplikací v HTML5
nejdůležitější nová API
přehrávání audio/video
validace formulářů
podpora offline aplikací
podpora WYSIWYG editace (contenteditable
)
práce s historií (History
) a
adresním řádkem (Location
) pro AJAXové
aplikace
některá API, která byla ve WHATWG součástí návrhu Web Applications 1.0, se nyní vyvíjejí samostatně nebo budou až součástí HTML5.1
mnoho z nich je již dobře podporováno prohlížeči
Zasílání zpráv – push notifikace, Web sockets, zasílání zpráv mezi dokumenty a kontexty
Device APIs – práce s externími zařízeními (např. webová kamera)
Web Storage – klientské úložiště klíč/hodnota
IndexedDB – jednoduchá databáze přímo v prohlížeči
Web Workers – podpora více vláken v Javascriptu
Geolocation API – práce s údaji o aktuální geografické poloze
File API – přístup k lokálním souborům
nový model pro psaní offline aplikací
AppCache v HTML5 je dobře použitelná jen pro práci se statickými zdroji
skutečná offline aplikace musí transparentně pracovat s lokálním úložištěm, když je uživatel offline, a pak provést synchronizaci
Service Worker je nízkoúrovňové API
může interceptovat požadavky HTTP a transparentně nabízet nakešovaná data, když je uživatel offline
nabízí API pro práci s cache
psát aplikace je snazší, protože rozdíl mezi online/offline stavem lze řešit v Service Workeru
sada specifikací, která umožňuje vytvářet nové elementy a jejich chování
Custom Elements – definice nových elementů
HTML Import – načítání stránek (např. s definicí komponent) ze samostatného souboru
Definice šablon pomocí elementu template
Shadow DOM – interakce DOM se skrytým DOMem s implementací komponenty
umožní komponentový vývoj stránek/aplikací bez nutnosti psát JS
knihovny používající Web Components:
API pro zpracování a syntézu zvuku
míchání zvuků z více zdrojů
generování nových zvuků
vhodné např. pro generování zvukových efektů ve hrách
media queries celkem dobře řeší responzivní design z hlediska layoutu a zobrazování/skrývání informací
pro různá zařízení je však potřeba používat různé obrázky
pro vektorovou grafiku lze řešit pomocí SVG, které se snadno škáluje
pro bitmapové obrázky lze použít elemenet picture
<picture>
<source media="(min-width: 40em)" srcset="big.jpg 1x, big-hd.jpg 2x">
<source srcset="small.jpg 1x, small-hd.jpg 2x">
<img src="fallback.jpg" alt="">
</picture>
různé části návrhu jsou různě vyzrálé
Chrome a Firefox jsou většinou tahouni nových funkcí, IE a Safari některé věci nepodporují
CanIUse.com – srovnání podpory v jednotlivých prohlížečích
podporu některých chybějících elementů/API lze nasimulovat v Javascriptu pomocí polyfillu
Příručka HTML5 – elementy/atributy (neobsahuje části specifikace zajímavé pro vývojáře prohlížečů)
W3C HTML WG – stránka pracovní skupiny HTML
WebPlatform.org – vznikající „uživatelská“ dokumentace
slidy z této prezentace: http://www.kosek.cz/xml/2015html5tul/