HTML5 po ruce a do kapsy


Zkratky
Aby byl seznam čitelnější.
$dce document.createElement
$bool function(any){return!(any=="no"||!any)}
Většina nových funkcí může být detekována JavaScriptem. Pokud chcete otestovat podporu videa, vytvořte element <video>
a otestujte, zda v DOM má potřebné vlastnosti: if("canPlayType" in $new("video")){...}
Viz Chapter 2: Detecting HTML5 Features
.
Nové elementy
Test podpory
<command> "type" in $dce("command")
<datalist> "options" in $dce("datalist")
<details> "open" in $dce("details")
<output> "value" in $dce("output")
<progress> "value" in $dce("progress")
<meter> "value" in $dce("meter")
<time> "valueAsDate" in $dce("time")
Textové anotace <ruby>, <rt>, <rp>
Sémantické elementy Použitelné ve všech prohlížečích. IE < 9 potřebuje záplatu. Použijte HTML5 CSS reset k nastavení stylů.
<article>, <aside>, <footer>, <header>, <hgroup>, <nav>, <section>,
<figure>, <figcaption>, <mark>, <summary>
Nově dokumentované <embed>, <keygen>, <wbr> // Moment, to znamená, že předtím byly nedokumentované?
Zastaralé Stále podporované, ale nedoporučené.
<basefont>, <big>, <center>, <font>, <s>, <strike>, <tt>, <u>,
<frame>, <frameset>, <noframes>, <applet>, <isindex>, <dir>,
<acronym> (použijte místo něj <abbr>)
Hele, mami, bez pluginů... Multimédia
Můžete použít více elementů <source> v jednom <audio> nebo <video>. Jako první jsou uvedené volné formáty.
Video můžete zakódovat pomocí Firefogg (Theora), HandBrake (H.264) nebo Miro Video Encoder (víc najednou).
Viz též Chapter 5: Video on the Web nebo Video na Zdrojáku.
Audio "canPlayType" in $dce("audio")
Vorbis $bool($dce("audio").canPlayType( 'audio/ogg; codecs="vorbis"' ))
MP3 $bool($dce("audio").canPlayType( 'audio/mpeg;' ))
AAC $bool($dce("audio").canPlayType( 'audio/mp4; codecs="mp4a.40.2"' ))
Video "canPlayType" in $dce("video")
WebM $bool($dce("video").canPlayType( 'video/webm; codecs="vp8, vorbis"' ))
Theora $bool($dce("video").canPlayType( 'video/ogg; codecs="theora, vorbis"' ))
H.264 $bool($dce("video").canPlayType( 'video/mp4; codecs="avc1.42E01E, mp4a.40.2"' ))
Pozadí pro načítání "poster" in $dce("video")
Stopy "track" in $dce("track")
Vlastnosti Lze použít pro <audio> i <video>.
Přehrávání
currentTime          // v sekundách
initialTime          // v sekundách, pouze ke čtení
duration             // v sekundách, pouze ke čtení
startOffsetTime      // dateTime, pouze ke čtení
paused               // boolean
ended                // boolean, pouze ke čtení
autoplay             // boolean
loop                 // boolean
playbackRate         // default = 1.0
defaultPlaybackRate  // default = 1.0
Uživatelské rozhraní
controls             // boolean
volume               // mezi 0.0 a 1.0, default = 1.0
muted                // boolean
Stopy
tracks               // pole objektů TimedTrack
Síť
src                  // řetězec
currentSrc           // řetězec, pouze ke čtení
preload              // řetězec
buffered             // TimeRanges objekt, pouze ke čtení
played               // objekt TimeRanges, pouze ke čtení
seekable             // objekt TimeRanges, pouze ke čtení
networkState         // pouze ke čtení; může být NETWORK_EMPTY, NETWORK_IDLE,
                        NETWORK_LOADING, NETWORK_NO_SOURCE
readyState           // pouze ke čtení; může být HAVE_NOTHING, HAVE_METADATA,
                        HAVE_CURRENT_DATA, HAVE_FUTURE_DATA,
                        HAVE_ENOUGH_DATA
error.code           // pouze ke čtení; může být MEDIA_ERR_ABORTED, MEDIA_ERR_NETWORK
                        MEDIA_ERR_DECODE, MEDIA_ERR_SRC_NOT_SUPPORTED
Canvas
Všechny dceřiné elementy prvku <canvas> jsou zobrazeny jako náhradní obsah v prohlížečích, které nepodporují tento element.
Funkce nemají návratové hodnoty, pokud není uvedeno jinak.
Test podpory "getContext" in $dce("canvas")
Cesty Přednastavená je kořenová cesta; podcesty musí být výslovně uvedené.
Až do volání fill() nebo stroke() se nic nekreslí!
beginPath();
closePath();
moveTo(x, y);
lineTo(x, y);
arcTo(x1, y1, x2, y2, radius);
rect(x, y, w, h);
arc(x, y, radius, startAngle, endAngle, anticlockwise);
quadraticCurveTo(cpx, cpy, x, y);
bezierCurveTo(cp1x, cp1y, cp2x, cp2y, x, y);
fill();
stroke();
clip();
isPointInPath(x, y); → boolean
Transformace
scale(x, y);
rotate(angle);
translate(x, y);
transform(a, b, c, d, e, f);
setTransform(a, b, c, d, e, f);
Podpora textů typeof $dce("canvas").fillText == "function"
Text
fillText(text, x, y, maxWidth);
strokeText(text, x, y, maxWidth);
measureText(text); → TextMetrics
Obrázky
drawImage(obrázek_nebo_video_nebo_canvas, dx, dy, dw, dh);
drawImage(obrázek_nebo_video_nebo_canvas, sx, sy, sw, sh, dx, dy, dw, dh);
createImageData(sw, sh); → ImageData
createImageData(imagedata); → ImageData
getImageData(sx, sy, sw, sh); → ImageData
putImageData(imagedata, dx, dy, dirtyX, dirtyY, dirtyWidth, dirtyHeight);
Vzorky
createPattern(obrázek_nebo_video_nebo_canvas, repetition); → CanvasPattern
createLinearGradient(x0, y0, x1, y1); → CanvasGradient
createRadialGradient(x0, y0, r0, x1, y1, r1); → CanvasGradient
Stav Stav (state) obsahuje všechny transformace, vlastnosti a ořezové cesty.
Stav je zásobník; save() ukládá a restore() vybírá.
save();
restore();
Vlastnosti Všechny vlastnosti lze číst i zapisovat s výjimkou elementu canvas.
fillStyle a strokeStyle mohou být i gradienty a vzory.
Styl
fillStyle                    // CSS barva, default = "black"
strokeStyle                  // CSS barva, default = "black"
Text
font                         // CSS font, default = "10px sans-serif"
textAlign                    // vypočítáno, default = "start"
textBaseline                 // vypočítáno, default = "alphabetic"
Stínování
shadowOffsetX                // v pixelech, default = 0
shadowOffsetY                // v pixelech, default = 0
shadowBlur                   // v pixelech, default = 0
shadowColor                  // CSS bg, default = "transparent black"
Průhlednost
globalAlpha                  // 0 (transparentní) až 1 (neprůhledné), default = 1.0
globalCompositeOperation     // default = "source-over"
Zakončení čar
lineWidth                    // v pixelech, default = 1
lineCap                      // vypočítáno, default = "butt"
lineJoin                     // vypočítáno, default = "miter"
miterLimit                   // float, default = 10
Odkaz na rodičovský prvek
canvas                       // pouze ke čtení
5 > 2 Formuláře
Všechny nové vlastnosti jsou zpětně kompatibilní s HTML4. Detekujte si podporu nových typů, a v případě potřeby jejich chování simulujte vlastním skriptem.
Ověřování "noValidate" in $dce("form")
Kontrola regulárními výrazy "pattern" in $dce("input")
Zástupný text "placeholder" in $dce("input")
Autofokus "autofocus" in $dce("input")
Atribut "vyžadováno" "required" in $dce("input")
Nové typy vstupních polí
type="search"          // vyhledávání
type="number"          // spinbox
type="range"           // šoupátko
type="color"           // výběr barev
type="tel"             // telefonní číslo
type="url"             // adresa webu
type="email"           // e-mailová adresa
type="date"            // výběr data
type="month"           // výběr měsíce
type="week"            // výběr týdne
type="time"            // čas
type="datetime"        // datum a čas
type="datetime-local"  // místní datum a čas
Test nových typů vstupních polí Všechny testy fungují podle stejného vzoru. Příklad je pro type="search". Nahraďte podle potřeby.
function() {
  var i = $dce("input");
  i.setAttribute("type", "search");
  return i.type !== "text";
}
Některé prohlížeče "podporují" vstupní typy, ale nenabízejí uživatelské rozhraní. Modernizr.js je dokáže detekovat.
IsGeolocationPartOfHTML5.com Geolokace
Použití geolokace musí být vždy odsouhlaseno uživatelem. getCurrentPosition() se neprovede, dokud uživatel nepotvrdí žádost.
Test podpory navigator.geolocation
Funkce
getCurrentPosition(successCallback, errorCallback, positionOptions); → Pozice
watchPosition(successCallback, errorCallback, positionOptions); → dlouhodobé
clearWatch(watchId); // watchId je vráceno funkcí watchPosition()
PositionOptions
enableHighAccuracy   // vysoká přesnost: true nebo false
timeout              // v milisekundách
maximumAge           // rovněž milisekundy
Zpětná volání
function successCallback(position);
function errorCallback(positionError);
objekt Position (předaný callback funkci) Nepodporované vlastnosti budou null.
timestamp
coords.latitude
coords.longitude
coords.altitude
coords.accuracy
coords.altitudeAccuracy
coords.heading
coords.speed
PositionError
message        // v čitelné podobě
code           // UNKNOWN_ERROR, PERMISSION_DENIED,
                  POSITION_UNAVAILABLE, nebo TIMEOUT
Webové offline aplikace
Aplikační cache je oddělená od cache prohlížeče; prohlížeče mohou mít pro každou jiné limity.
HTTP hlavičky platí i pro cachované soubory. Zkontrolujte si především hlavičky Expires a Cache-Control!
Test podpory window.applicationCache
<html manifest> Odkaz na cache manifest. Atribut musí být ve zdrojovém kódu; přidání později (např. manipulací s DOM) nemá žádný efekt.
Události První čtyři události jsou nejběžnější a objevují se v uvedeném pořadí.
checking      // vždycky první událost, která je vyvolána
downloading   // nalezen manifest, čtou se zdroje
progress      // stále se čtou zdroje
cached        // všechny zdroje uloženy, offline obsah je připraven!
noupdate      // manifest se nezměnil
updateready   // zdroje se změnily. Změny aktivujete voláním swapCache() 
obsolete      // manifest vrátil 404 (nebo 410)
error         // někde se to celé pokazilo
Syntax manifestu Musí být typu text/cache-manifest. Ověřte si hlavičku Content-Type!
CACHE: Vyžadované soubory. URL mohou být absolutní, nebo relativní k umístění manifestu. Zástupné znaky nejsou dovoleny.
Pokud načtení jakéhokoli souboru selže, aplikace nebude offline fungovat.
NETWORK: Zdroje, které nebudou nikdy cachovány. Povoluje zástupný znak "*".
FALLBACK: Dvojice souborů. Druhý je použit, když první není dostupný. Lze zadat i částečná URL.
Střípky & Útržky
Dávejte hodnoty parametrů do uvozovek, pokud nejste superman. Vždy deklarujte charset, i pokud jste superman.
Pište koncová lomítka, pokud chcete. Validace je pořád kewl: html5.validator.nu
Doctype <!DOCTYPE html>
Deklarace znakové sady <meta charset="utf-8">
Volitelné koncové tagy u <html>, <head>, <body>, <li>, <p>, <dt>, <dd>,
<thead>, <tbody>, <tfoot>, <colgroup>, <tr>, <td>,
<rt>, <rp>, <optgroup>, <option>
Volitelné úvodní tagy <html>, <head>, <body>, <tbody>, <colgroup>
Nové atributy <a media>, <a ping>, <base target>, <style scoped>, <script async>, <ol reversed>
Web Storage ("localStorage" in window) && window["localStorage"] !== null
IndexedDB window.indexedDB
Web SQL Database window.openDatabase
Web Workers window.Worker
Web Sockets window.WebSocket
contentEditable "isContentEditable" in $dce("span")
Posílání zpráv window.postMessage
Drag-and-drop "draggable" in $dce("span")
Souborové API typeof FileReader != "undefined"
Historie window.history && window.history.pushState && window.history.popState
Undo historie typeof UndoManager !== 'undefined'
<iframe sandbox> "sandbox" in $dce("iframe")
Vložené SVG
function() {
  var e = $dce("div");
  e.innerHTML = "<svg></svg>";
  if (!window.SVGSVGElement) { return false; }
  return e.firstChild instanceof window.SVGSVGElement;
}