HTML5 a CSS3 v praxi
HTML5 – Už tam budeme?
<audio> <video>
<video controls poster="image.png">
<source src="video-small.mp4"
type="video/mp4; codecs='avc1.42E01E, mp4a.40.2'"
media="screen and (max-width:500px)"
/>
<source src="video.mp4" type="video/mp4; codecs='avc1.42E01E, mp4a.40.2'" />
<source src="video.ogv" type="video/ogg; codecs='theora, vorbis'"/>
<source src="video.webm" type="video/webm; codecs='vp8, vorbis'" />
<!-- embed flash jako fallback -->
</video>
<audio> <video> formáty
Klient | WAVE | MP3 | WebM | Ogg Vorbis / Theora | H264 | AAC | Opus
|
---|
Firefox 3.5+ | ✓ | | ✓ | ✓ | | |
|
Firefox 15+ | ✓ | | ✓ | ✓ | | | ✓
|
Chrome 9+ | | ✓ | ✓ | ✓ | ✓ | |
|
Safari 3+ | | ✓ | | | ✓ | ✓ |
|
Opera 10+ | | | ✓ | ✓ | | |
|
IE 9 | ✓ | ✓ | ✓ | | ✓ | ✓ |
|
iPhone / iPad | | ✓ | | | ✓ | ✓ |
|
Android | | ✓ | ✓ | | ✓ | |
|
Flash | | ✓ | ✓ | | ✓ | ✓ |
|
<audio> <video> JS API
var a = new Audio("song.mp3");
a.canPlayType("audio/mpeg"); /* "", "maybe", "probably" */
a.play();
<canvas>
- Ukázka
- Všechny prohlížeče krom IE≤8
- Obstojná rychlost
- WebGL: stále slabá podpora (hardware, ovladače)
SVG
- Ukázka
- Všechny prohlížeče krom IE≤8
- Prehistorický standard z roku 2001
- VML pro IE≤8
- Rozšířený pro vektorovou grafiku
- DOM, události, stylování
- Horší výkon v porovnání s
<canvas>
File API
- IE až od verze 10
- Metadata vybraných souborů
- Přístup k obsahu
/* první soubor vybraný uživatelem */
var file = document.getElementById("fileinput").files[0];
var reader = new FileReader();
reader.addEventListener("load", function() {
alert(reader.result);
});
reader.readAsDataURL(file);
/* readAsText(), readAsBinaryString(), readAsArrayBuffer() */
XMLHttpRequest 2
- IE až od verze 10
- POST obsahu souboru
- Událost
xhr.upload.onprogress
- Nahrávání příloh e-mailu
Application Cache
- IE až od verze 10
- Možnost "uložit" stránku a její data do cache prohlížeče
- Zejména pro mobilní zařízení
- Automatické použití cachovaných hodnot, když je přístroj offline
<html manifest="example.appcache">
CACHE MANIFEST
index.html
stylesheet.css
images/logo.png
scripts/main.js
localStorage
var saveGame = function() {
localStorage.name = "player";
localStorage.hitPoints = 7;
}
if (localStorage.name) { /* load */ }
- Všechny prohlížeče krom IE≤7
- Různá kapacita
- Není info o zbylém prostoru, přiřazení vyvolá výjimku
navigator.geolocation
- Ukázka
- Všechny prohlížeče krom IE≤8
- Přesnost leckdy na houby
- Často nutné připojení k Internetu
WebSockets
- Ukázka
- Vlastní, obousměrný komunikační protokol nad TCP
- Není HTTP ⇒ nutná podpora na backendu
- IE až od verze 10
- Rychlá komunikace klient-server (nikoliv klient-klient)
Media queries
- Všechny prohlížeče krom IE≤8
- Aplikování CSS pravidel podmíněně dle parametrů zobrazovacího zařízení
- Jedna z nejužitečnějších technologií balíku HTML5/CSS3 vůbec!
@media screen and (min-height: 500px) { ... }
<link media="all and (max-device-width: 480px)" ... />
CSS selektory
a:checked, a:not(:target), img:nth-child(3n+2) { ... }
- Všechny prohlížeče krom IE≤8
- Vysoká užitná hodnota
:target
dovoluje měnit styly při navigaci v rámci stránky
:nth-child
a :nth-of-type
pro střídání stylů
CSS transformace
- Ukázka
- Všechny prohlížeče krom IE≤8
- Měřítko, posun, natočení, zkosení
- Design, efekty
- Perspektivní (3D) transformace až v nejnovějších verzích
- Na mnoha zařízeních jsou transformace hardwarově akcelerovány
@font-face
- Vynikající podpora prohlížečů
- Ideální pro ideogramy (ikonky)
- Obtížné sehnat dobrý font
- Často mizerná diakritika (Google Web Fonts)
CSS efekty: stíny, oblé rohy, přechody
- Obdélníkové stíny, oblé rohy: všechny prohlížeče krom IE≤8
- Barevné přechody, stín textu: až IE 10
- Ideální kandidát pro progressive enhancement
- Náročné na výpočetní výkon
CSS transitions & animations
- Ideální a dobře navržené řešení animací
- Žádný JavaScript
- IE až od verze 10
- Problematika tzv. vendor prefixů
.anim li {
-webkit-transition: padding 3s;
-moz-transition: padding 3s;
-o-transition: padding 3s;
transition: padding 3s;
}
.anim li:nth-child(1):hover {
padding-left: 50%;
}