HTML5 a CSS3 pro webové designéry

Page 1

E N C Y K L O P E D I E

W E B D E S I G N E R A

HTML5 a CSS3 pro webové designéry

Alexis Goldsteinová Louis Lazaris Estelle Weylová



HTML5 a CSS3 pro webové designéry

Alexis Goldsteinová, Louis Lazaris a Estelle Weylová


HTML5 & CSS3 for the Real World Alexis Goldstein, Louis Lazaris a Estelle Weyl © 2011, ZONER software, a.s. Authorized Czech translation of the English edition of HTML5 & CSS3 for The Real World, First Edition, ISBN 9780980846904 © 2011 SitePoint Pty. Ltd. This translation is published and sold by permision of O'Reilly Media, Inc., the owner of all rights to publish and sell the same. No part of this book may be reproduced or transmitted in any form or by any means, electronic or mechanical, including photocopying, recording or by any information storage retrieval system, without permission from O'Reilly Media Inc. © 2011, ZONER software, a.s. Autorizovaný překlad originálního anglického vydání knihy HTML5 & CSS3 for The Real World, First Edition, ISBN 9780980846904 © 2011 SitePoint Pty. Ltd. Překlad je vydán a prodáván s výslovným svolením O'Reilly Media Inc., vlastníkem veškerých práv na vydání i prodej tohoto titulu. Žádná část této publikace nesmí být reprodukována nebo předávána žádnou formou nebo způsobem, elektronicky ani mechanicky, včetně fotokopií, natáčení ani žádnými jinými systémy pro ukládání bez výslovného svolení O'Reilly Media Inc.

HTML5 a CSS3 pro webové designéry Autor: Alexis Goldsteinová, Louis Lazaris a Estelle Weylová Copyright © ZONER software, a.s. Vydání první, v roce 2011. Všechna práva vyhrazena. Zoner Press Katalogové číslo: ZR1136 ZONER software, a.s. Nové sady 18, 602 00 Brno Překlad: RNDr. Jan Pokorný Odpovědný redaktor: Miroslav Kučera Šéfredaktor: Ing. Pavel Kristián DTP: Miroslav Kučera a Dan Zůda Obálka: Dan Zůda a Lenka Křížová (fotografie použitá na obálce © iStockphoto; #17509017) Zdrojové soubory ke stažení: http://zonerpress.cz/download/html5-a-css3-pro-webove-designery.zip

Informace, které jsou v této knize zveřejněny, mohou byt chráněny jako patent. Jména produktů byla uvedena bez záruky jejich volného použití. Při tvorbě textů a vyobrazení bylo sice postupováno s maximální péčí, ale přesto nelze zcela vyloučit možnost výskytu chyb. Vydavatelé a autoři nepřebírají právní odpovědnost ani žádnou jinou záruku za použití chybných údajů a z toho vyplývajících důsledků. Všechna práva vyhrazena. Žádná část této publikace nesmí být reprodukována ani distribuována žádným způsobem ani prostředkem, ani reprodukována v databázi či na jiném záznamovém prostředku či v jiném systému bez výslovného svolení vydavatele, s výjimkou zveřejnění krátkých částí textu pro potřeby recenzí. Veškeré dotazy týkající se distribuce směřujte na: Zoner Press ZONER software, a.s Nové sady 18, 602 00 Brno tel.: 532 190 883 e-mail: knihy@zoner.cz www.zonerpress.cz

ISBN: 978-80-7413-166-0


Stručný obsah Kapitola 1

Úvod do HTML5 a CSS3

23

Kapitola 2

Značkování ve stylu HTML5

31

Kapitola 3

Více sémantiky v HTML5

49

Kapitola 4

HTML5 a formuláře

63

Kapitola 5

HTML5 audio a video

85

Kapitola 6

Úvod do CSS3

107

Kapitola 7

Gradienty a vícenásobná pozadí CSS3

125

Kapitola 8

Transformace a přechody CSS3

147

Kapitola 9

Vkládané fonty a vícesloupcové layouty

165

Kapitola 10

Geolokace, off-line webové aplikace a Web Storage

187

Kapitola 11

Canvas, SVG a Drag and Drop

219

Dodatek A

Knihovna Modernizr

259

Dodatek B

WAI-ARIA

263

Dodatek C

Microdata

267

Rejstřík

271


Mým rodičům, kteří mi stále dodávali odvahu a věřili ve mne. A mé talentované, výkonné a milující babičce Joan. Vždycky jsi mě nechala kreslit, ať už jsem měla dělat cokoliv jiného. – Alexis

Melánii, nejlepší kuchařce na celém světě. A mým rodičům, že mi zaplatili počáteční kurz, díky němuž jsem pronikl do tohoto jedinečného odvětví. – Louis

Amie, že se mnou všechno vydržela, a Spazzo a Puppers, že se ke mně tulili, když jsem se nemohla odtrhnout od práce. – Estelle


5

Podrobný obsah O tvůrcích knihy

14

Alexis Goldsteinová

14

Louis Lazaris

14

Estelle Weylová

14

Odborný recenzent

14

Vydavatelství SitePoint

14

Poděkování

15

Předmluva

16

Úvod

17

Komu je tato kniha určena?

17

Co naleznete v této knize?

17

Kde hledat pomoc?

20

Newslettery SitePointu

21

Podcast SitePointu

21

Konvence používané v této knize

21

Poděkování

Kapitola 1

Úvod do HTML5 a CSS3

Co je HTML5?

23 23

Jak jsme se sem dostali? Kdy se dočkáme opravdové specifikace HTML5?

24 25

Proč bychom se měli zabývat HTML5?

25

Co je CSS3?

26

Proč bychom se měli zabývat CSS3?

26

Co rozumíme slovy "skutečný svět"?

27

Rozmanitost prohlížečů na trhu

27

Rostoucí mobilní trh

28

Jak je to v realitě

Kapitola 2

29

Značkování ve stylu HTML5

31

Představujeme "The HTML5 Herald"

31

Základní šablona HTML5

32

Deklarace doctype

33


6 Prvek html

34

Prvek head

34

Nastolení stejných podmínek

35

Zbytek je historie

36

Často kladené otázky k HTML5

37

Jak to, že HTML5 nemá problém se staršími prohlížeči?

37

Neměly by být všechny značky uzavřeny?

38

Je syntaxe HTML5 odlišná od syntaxe XHTML?

39

Prvky pro definici struktury stránky

40

Prvek header

41

Prvek section

41

Prvek article

42

Prvek nav

43

Prvek aside

44

Prvek footer

44

Vytvoření struktury pro "The HTML5 Herald"

45

Shrnutí

47

Kapitola 3

Více sémantiky v HTML5

49

Nový pohled na typy obsahu

49

Osnova dokumentu

50

Hlavní titulky pro The HTML5 Herald Prvek hgroup Další nové prvky a funkcionality HTML5

52 52 54

Prvky figure a figcaption

54

Prvek mark

55

Prvky progress a meter

55

Prvek time

56

Prvek details

57

Přizpůsobené uspořádané seznamy

57

Styly jen pro daný obor

58

Atribut async pro skripty

58

Změny již existujících prvků

58

Slovo "zavržený" bylo zavrženo

59

Blokové prvky uvnitř odkazů

59

Tučný text

59

Text kurzívou

59


7 Velký a malý text

60

Prvek cite

60

Seznamy popisů (nikoli definic)

60

Validace XHTML vs HTML5

61

Shrnutí

62

Kapitola 4

HTML5 a formuláře

63

Kód formuláře pro The HTML5 Herald

63

Atributy pro HTML5 formuláře

65

Atribut required

65

Atribut placeholder

69

Atribut pattern

71

Atribut disabled

72

Atribut readonly

73

Atribut multiple

73

Atribut form

73

Atribut autocomplete

73

Prvek datalist a atribut list

74

Atribut autofocus Nové formulářové vstupní typy v HTML5 Vstupní typ search

74 75 76

E-mailové adresy

76

Adresy URL

77

Telefonní čísla

78

Čísla

78

Rozsahy

79

Barvy

80

Datum a čas

80

Ostatní formulářové prvky v HTML5

83

Prvek output

83

Prvek keygen

83

Změny v existujících prvcích a atributech pro formuláře

83

Prvek form

83

Prvek optgroup

84

Prvek textarea

84

Shrnutí

84


8 Kapitola 5

HTML5 audio a video

85

Stručný výlet do minulosti

85

Současný stav přehrávání

86

Formáty kontejneru videa

86

Kodeky videa

86

Kodeky audia

86

Které kombinace fungují v současných prohlížečích?

86

Značkování pro video

87

Zobrazení nativních ovládacích prvků

88

Atribut autoplay

88

Atribut loop

89

Atribut preload

89

Atribut poster

90

Atribut audio

90

Podpora pro několik formátů videa

90

Pořadí prvků source

91

A co Internet Explorer 6 až 8?

92

Typy MIME

93

Kódování souborů videa pro použití na webu

94

Vytváření vlastních ovládacích prvků

94

Něco značkování a stylování pro začátek

94

Úvod do API mediálních prvků

96

Přehrávání a pozastavování videa

97

Zapínání a vypínání audio stopy videa

100

Reakce na konec přehrání videa

101

Aktualizace času při přehrávání videa

101

Další schopnosti API mediálních prvků

103

Prvek audio

104

Přístupnější média

104

Shrnutí

105

Kapitola 6

Úvod do CSS3

Vraťme staré prohlížeče do hry Selektory CSS3

107 107 108

Relační selektory

108

Selektory atributů

109


HTML5 a CSS3 pro webové designéry

9

Pseudotřídy

110

Strukturální pseudotřídy

111

Pseudoprvky a generovaný obsah

113

Barvy v CSS3

114

RGBA

114

HSL a HSLA

115

(Ne)průhlednost

116

Dejme všechno dohromady

116

Zakulacené rohy: border-radius

118

Vržený stín: box-shadow Vnitřní stíny a několik stínů najednou Stínovaný text: text-shadow

120 122 123

Dokončení ostatních stínů

124

Shrnutí

124

Kapitola 7

Gradienty a vícenásobná pozadí CSS3

Lineární gradienty Syntaxe W3C

125 125 127

Stará syntaxe WebKitu

130

Dejme všechno dohromady

131

Lineární gradient ve formátu SVG

133

Lineární gradienty pro starší IE

135

Nástroje pro vytváření kódu gradientů

135

Radiální gradienty

136

Syntaxe W3C

136

Stará syntaxe WebKitu

138

Dejme všechno dohromady

139

Opakování gradientů

140

Vícenásobné obrázky na pozadí

141

Velikost pozadí

144

Shrnutí

145

Kapitola 8

Transformace a přechody CSS3

Transformace

147 147

Posun prvku

148

Změna velikosti

149


10 Rotace

151

Zešikmení

152

Změna počátku transformace

152

Podpora transformací pro IE8 a dřívější

153

Přechody

153

Vlastnost transition-property

154

Vlastnost transition-duration

155

Vlastnost transition-timing-function

156

Vlastnost transition-delay

157

Vlastnost transition: zkrácený zápis

157

Vícenásobné přechody

158

Animace

159

Klíčové snímky

159

Animační vlastnosti

161

Zkrácený zápis animačních vlastností

162

Shrnutí

Kapitola 9

163

Vkládané fonty a vícesloupcové layouty

Vkládané fonty s @font-face

165 165

Implementace @font-face

166

Deklarace zdrojů fontů

167

Deskriptory vlastností fontu

169

Rozsah Unicode

170

Aplikování fontu

171

Poznámky k legálnosti

171

Font Squirrel – převod fontu do různých formátů

172

Závěrem k fontům

174

Vícesloupcové layouty CSS3

175

Vlastnost column-count

176

Vlastnost column-gap

176

Vlastnost column-width

177

Zkrácený zápis s vlastností columns

178

Sloupce a vlastnost height

179

Další vlastnosti pro novinové sloupce

179

Závěrem ke sloupcům

181

Progressive Enhancement

182

Dotazy na média

182


11 Co jsou dotazy na média?

183

Syntaxe

183

Flexibilita dotazů na média

184

Podpora v prohlížečích

184

Další čtení

185

Shrnutí

Kapitola 10

185

Geolokace, off-line webové aplikace a Web Storage

API pro geolokaci

187 188

Otázka soukromí

188

Geolokační metody

189

Kontrola podpory s Modernizr

189

Získání aktuální polohy

190

Objekt Position geolokačního API

190

Získání zeměpisné šířky a délky

191

Načtení mapy

192

Starší mobilní zařízení?

196

Off-line webové aplikace

196

Jak to funguje – aplikační cache HTML5

196

Nastavení webu, aby fungoval off-line

197

Udělení povolení ukládat web off-line

199

Otestování funkčnosti

199

Jak na The HTML5 Herald dostupný off-line?

201

Limit úložiště pro off-line webové aplikace

202

Sekce FALLBACK

202

Aktualizace cache

204

Je uživatel on-line, nebo off-line?

205

Další čtení

206

Web Storage

206

Dva druhy úložišť

206

Formát dat pro Web Storage

208

Získávání a nastavování dat

208

Konverze uložených dat

208

Zkrácený zápis

209

Odstraňování položek a vyprázdnění dat

209

Limity úložiště

209

Otázky bezpečnosti

210


12 Web Storage pro The HTML5 Herald

210

Prohlídka hodnot Web Storage s nástrojem Web Inspector

214

Další zajímavá API HTML5

215

Web Workers

215

Web Sockets

216

Web SQL a IndexedDB Shrnutí

Kapitola 11

217 217

Canvas, SVG a Drag and Drop

API Canvas

219 219

Špetka historie o Canvas

220

Vytvoření prvku canvas

220

Kreslení na plátno

221

Získání kontextu

222

Namočení štětce do barvy

222

Nakreslení obdélníku na plátno

223

Souřadnicový systém plátna

224

Variace na styl výplně

224

Kreslení jiných tvarů vytvářením cest

227

Ukládání kreseb nakreslených na plátno

230

Kreslení obrázků na plátno

231

Manipulace s obrázky

233

Konverze barevného obrázku na černobílý

234

Bezpečnostní chyba u getImageData

236

Využití Canvas pro manipulaci s videi

237

Zobrazování textu na plátno

239

Přístupnost Canvas

243

Další četba

243

Formát SVG

244

Kreslení v SVG

244

Nástroj Inkscape pro snadnější vytváření SVG

247

SVG filtry

247

Knihovna Raphaël

248

Canvas versus SVG

250

API Drag and Drop

251

Krmení pro kočku WAI-ARIA

252

Atribut draggable

253


13 Objekt dataTransfer

254

Přijímání pouštěných prvků

254

Další informace

257

Shrnutí

Dodatek A

257

Knihovna Modernizr

259

Modernizr s CSS

259

Modernizr s JavaScriptem

261

Podpora pro stylování HTML5 prvků v IE8 a dřívějších

262

Další četba

262

Dodatek B

WAI-ARIA

263

Jak WAI-ARIA doplňuje sémantiku

263

Současný stav WAI-ARIA

264

Další četba

265

Dodatek C

Microdata

267

Sémantika HTML5 je nedostatečná?

268

Syntaxe Microdat

268

Co jsou páry název-hodnota?

269

Jmenné prostory Microdat

269

Další četba

269


14

O tvůrcích knihy Alexis Goldsteinová Alexis Goldsteinová se poprvé setkala s HTML někdy uprostřed devadesátých let minulého století, když navštěvovala střední školu. Poté pokračovala ve studiu na Kolumbijské univerzitě, kde absolvovala obor se zaměřením na počítačové vědy. Provozuje vlastní softwarovou vývojářskou a školicí firmu Aut Faciam LLC. Než začala Alexis podnikat, strávila sedm let v oblasti technologií na Wall Streetu, kde se u tří velkých firem zabývala peněžními vklady vlastníků a deriváty pro nákup a prodej cenných papírů. Zde se naučila mít kladný vztah k denním revizím kódu. Je lektorkou a spoluorganizátorkou Girl Develop It, což je skupina, která vede nízkonákladové programovací kurzy pro ženy a je hrdou členkou NYC Resistor v Brooklynu, stát New York. Alexis najdete na jejím webu na http://alexisgo.com/.

Louis Lazaris Louis Lazaris je webový designér na volné noze a vývojář front-endů. Pochází z Toronta v Kanadě. Problematikou webového designu se zabývá už od roku 2000. Louis pracuje na webech už od těch časů, kdy webovému designu dominovaly tabulkový layout a jednopixelové obrázky ve formátu GIF. V posledních pěti letech přijal za své webové standardy a snaží se propagovat "nejlepší doporučené postupy", které pomáhají jak vývojářům, tak i jejich klientům snadněji dosahovat cílů, které si stanovili ve svých projektech. Louis pravidelně píše články pro mnoho prvořadých blogů se zaměřením na webový design včetně svého vlastního webu s názvem Impressive Webs (http://www.impressivewebs.com/).

Estelle Weylová Estelle Weylová je front-endová inženýrka ze San Franciska, která už od roku 1999 vyvíjí dobře přístupné weby založené na standardech. Estelle si začala pohrávat s CSS3 někdy v roce 2007, kdy byl vydán první iPhone, a po čtyřech letech vývoje webových aplikací pro mobilní WebKit ví (téměř) o všech výstřednostech CSS3 na WebKitu. Má obrovské zkušenosti s implementováním komponent HTML5. Vytváří odborný blog Standardista (http://www.standardista.com/) se zaměřením na HTML5 a CSS3 (a jejich podporu v prohlížečích). Protože Estellinou vášní je vyučovat problematiku webového vývoje, na konferencích po celých USA přednáší o CSS3, HTML5, JavaScriptu a webovém vývoji pro mobily.

Odborný recenzent Russ Weakley pracuje v designu už přes 18 let, především ve webovém designu, vývoji a výuce. Russ je spolupředsedajícím Web Standards Group a zakládajícím členem Web Industry Professionals Association v Austrálii (WIPA). Russ je autorem nadšeně přijaté série tutoriálů o CSS a díky svým prezentacím a workshopům je populární i v zahraničí. Spravuje web Max Design (http://maxdesign.com.au/).

Vydavatelství SitePoint SitePoint se specializuje na publikování zábavného, praktického a snadno srozumitelného obsahu pro webové profesionály. Pokud se chcete dostat k blogům, knihám, časopisům, článkům a komunitním fórům vydavatelství SitePoint, navštivte http://www.sitepoint.com/.


15

Poděkování Mé díky zasluhují Lisa Langová, Russ Weakley a Louis Simoneau. Vaše soustředění na detaily, zodpovědnost a imponující odborná expertíza způsobily, že má práce na knize byla opravdovým potěšením. Děkuji také svým spoluautorům, Louisovi a Estelle, kteří mě neustále překvapovali svými hlubokými znalostmi, nesmírnými zkušenostmi a zázračnou schopností nalézat chyby v nejnovějších prohlížečích. Zvláštní dík patří Estelle za její povzbuzování, za něž jsem hluboce vděčná. Nakonec chci poděkovat své přítelkyni Tabathe, která nyní ví o různých API JavaScriptu pro HTML5 více než většina mých našprtaných přátel. Dík za tvou trpělivost, názory a veškerou tvou podporu. Pomohla jsi mi brát věci méně vážně, což, jak dobře ví každý, kdo mě zná, je neskonale obtížná úloha. Díky, že jsi mě vždy dokázala rozveselit. – Alexis Goldsteinová

Děkuji své ženě, že to se mnou vydržela v době, kdy jsem se dlouhé hodiny účastnil prací na tomto skvělém projektu. Děkuji svým talentovaným spoluautorkám, Estelle a Alexis, že mě poctily privilegiem mít své jméno uvedené společně s jejich. Samozřejmě také děkuji našemu odbornému recenzentovi Russovi za jeho skvělý odborný vhled, který projevoval v průběhu prací na této knize. Speciální díky patří talentovanému týmu z vydavatelství SitePoint za jejich velice profesionální zpracování tohoto projektu a za všechnu tu námahu, který je s takovým projektem vždy neodmyslitelně spojena. – Louis Lazaris

Velký dík patří celé open source komunitě. Díky volbě "Zobrazit zdrojový kód" jsem se učila od každého vývojáře, který se rozhodl při tvorbě stránky použít značkování a ne zásuvné moduly, jako je Flash. Ráda bych poděkovala zejména Jen Mei Wuové a Sandi Watkinsové, které mne vedly správným směrem, když jsem začínala svou kariéru. Děkuji také Dave Gregorymu a Laurie Vossovi, kteří mi pomáhali nacházet patřičná slova, když mi unikala. Děkuji Stephanie Sullivanové za brainstorming kódu až do časných ranních hodin. A děkuji také svým vývojářským přátelům u Opery, Mozilly a Googlu, že vytvořili fascinující prohlížeče a dali nám tak příležitost si nejenom pohrávat s HTML5 a CSS, ale také napsat tuto knihu. – Estelle Weylová


16

Předmluva Víte, kdo je Sjoerd Visscher? Troufnu si odhadnout, že nikoliv, ale to, co on sám považuje jen za drobný objev, není v zásadě nic menšího než schopnost používat HTML5 pro webové stránky už dnes. V roce 2002, v Haagu, v Holandsku, se pan Visscher snažil vylepšit výkon svého XSL výstupu. Když ale zkusil přejít od volání createElement k nastavování vlastnosti innerHTML, zjistil, že všechny neznámé prvky, které nepatří do HTML, už nebylo možné stylovat prostřednictvím kaskádových stylů. Rychle přeskočme do roku 2008, kdy HTML5 nabralo rychlý spád a kdy byly specifikovány nové prvky. V praxi se ale projevovaly problémy s Internet Explorerem verze 6, 7 a 8, které tyto nové prvky HTML5 nedokázaly rozpoznat. Tyto prvky nemohly mít dceřiné prvky a stylové předpisy na ně neměly žádný vliv. Tato deprimující skutečnost bránila tomu, aby mohlo být HTML5 akceptován v širokém měřítku. A v tuto chvíli, pět let po svém objevu, Sjoerd nenápadně zmínil svůj trik Samovi Rubymu v diskuzi na blogu HTML Working Group W3C následovně: "BTW, pokud chceš aplikovat CSS pravidla na neznámé prvky v IE, stačí k tomu document.createElement(elementName). Tohle nějakým způsobem umožňuje enginu CSS dozvědět se, že existuje prvek s daným názvem." Iana Hicksona, vůdčího editora HTML5 specifikace, něco takového velice překvapilo, stejně jako zbytek webu. Protože nikdy předtím o tom triku neslyšel, s nadšením reportoval: "Tato nenápadná informace umožňuje vybudovat kompatibilní záplatu HTML5 pro IE7 mnohem snadněji, než se původně předpokládalo." Hned další den vytvořil John Resig příspěvek, v němž se poprvé objevil termín "HTML5 shiv". A zde máte stručný časový přehled toho, co všechno se dělo dál: Leden 2009. Remy Sharp vytváří první distribuovatelný skript, který umožňuje v IE zapnout podporu

nových prvků HTML5. Červen 2009. Faruk Ateş zahrnuje HTML5 shiv do počátečního vydání knihovny Modernizr. Únor 2010. Spolupráce několika superhvězdných vývojářů JavaScriptu, mezi něž patřili Remy, Kangax,

John-David Dalton a PorneL, umožnila zredukovat velikost souboru skriptu. Březen 2010. Mathias Bynens a další si povšimli, že HTML5 shiv neovlivňuje stránky, které jsou tištěny

z IE. To byl neradostný den. Vydala se neformální výzva k vývojářům, aby našli nějaké řešení. Duben 2010. Jonathan Neal odpověděl na tuto výzvu s IE Print Protector (IEPP), který pokrýval obor

HTML5 shiv a navíc přidával podporu pro tisk prvků. Duben 2010. Remy nahrazuje poděděné řešení HTML5 shiv novým IEPP. Únor 2011. Alexander Farkas přebírá pochodeň, přesouvá projekt IEPP do GitHub, přidává sadu pro

testování, opravuje chyby a vylepšuje výkon. Duben2011. Přichází IEPP verze 2. Knihovna Modernizr a HTML5 shiv získávají tento nejnovější kód,

zatímco vývojáři již používají nové prvky HTML5 napříč prohlížeči bez jakýchkoliv potíží. Tento příběh o HTML5 shiv je pouze jednou ukázkou z mnoha, jak dokáže komunita spolupracovat pro dosažení pokroku v otevřeném webovém vývoji. Není to pouze W3C nebo výrobci prohlížečů, kteří přímo ovlivňují, jak bude web fungovat – mohou to dělat i lidé jako vy a já. Doufám, že vás tato kniha podnítí, abyste i vy přispívali v obdobném duchu. Nejlepší způsob, jak vylepšovat své dovednosti, je aktivně sdílet to, co umíte. Akceptovat HTML5 a CSS3 je dnes jednodušší než kdykoliv předtím a je to opravdu zábavné. Kniha, kterou právě držíte v ruce, obsahuje spoustu praktických informací, které by vám měly poskytnout všechno, co potřebujete znát k tomu, abyste hned teď mohli začít využívat všechny přednosti HTML5.


17 Autoři této knihy – Alexis, Louis a Estelle – jsou respektovaní weboví vývojáři, kteří vám předkládají opravdu realistickou učící křivku, abyste byli schopni snadno absorbovat nejlepší doporučené postupy vývoje se standardem HTML5. Doufám, že tato kniha vám bude dobře sloužit a že budete z nové generace webu vzrušeni a nadšeni stejně jako já. – Paul Irish jQuery Dev Relations, vůdčí vývojář Modernizr a HTML5 Boilerplate duben 2011

Úvod Vítejte v HTML5 a CSS3 pro webové designéry. Jsme rádi, že jste se rozhodli připojit se k nám na cestu, na které odhalíte něco z nejnovější a nejskvělejší technologie pro budování front-endu webů. Protože jste si zakoupili tuto knihu, přepokládáme, že o HTML a CSS patrně už něco víte. Možná jste dokonce příležitostní profíci v některých oblastech značkování, stylování či skriptování a nyní si chcete dále rozšířit své dovednosti tím, že se ponoříte do nových funkcí a technologií sdružených s HTML5 a CSS3. Učit se nové věci může být někdy obtížné. Možná nemáte času nazbyt, takže si nemůžete dovolit podrobně prostudovat oficiální dokumentaci a specifikace těchto webově založených jazyků. Možná vás také odradily některé až přespříliš odborně zaměřené knihy, které jsou sice dobré jako referenční příručky, nicméně poskytují jen málo, pokud jde o konkrétní praktické příklady ze skutečného světa. Protože cílem této knihy je učit vás tak, abyste si mohli všechno hned vyzkoušet a otestovat, poskytneme vám i praktické pokyny, které přijdou vhod, až se budete potýkat s problémy skutečného světa, jimž musíte v současnosti čelit při vytváření webových stránek – a zejména se soustředíme na problematiku HTML5 a CSS3. Kniha je ale mnohem více než návod ve stylu krok za krokem. Průběžně vám totiž poskytneme spoustu teoretických a odborných informací, abyste mohli zaplnit jakékoliv případné mezery v porozumění danému výkladu, ale současně jsme se pečlivě snažili, abychom vás nezahltili příliš velkým objemem nových skvělých schopností. Začněme tedy!

Komu je tato kniha určena? Kniha je zaměřena na webové designéry a front-endové vývojáře, kteří se chtějí dozvědět informace o nejnovější generaci technologií založených na webovém prohlížeči. Znalosti o HTML a CSS byste měli mít alespoň na mírně pokročilé úrovni, protože vůbec nebudeme ztrácet čas výkladem základů značkování a stylování. Soustředíme se na to, abychom vás naučili nové věci, které máte nyní k dispozici ve formě HTML5 a CSS3. V posledních dvou kapitolách této knihy se probírají některá z nových API JavaScriptu, která úzce souvisejí s HTML5. Tyto kapitoly samozřejmě vyžadují jisté základní povědomí o JavaScriptu, nicméně k celkovému pochopení výkladu o HTML5 nejsou nutné. Pokud nejste dobře obeznámeni s JavaScriptem, můžete je prozatím přeskočit a vrátit se k nim později, až budete na jejich zvládnutí lépe vybaveni.

Co naleznete v této knize? Kniha se skládá z jedenácti kapitol a tří dodatků. Protože většina kapitol navazuje na předchozí, bude nejlepší číst knihu od začátku do konce, nicméně si můžete tu a tam odskočit, pokud si potřebujete oživit nějaké téma.


18

Kapitola 1 – Úvod do HTML5 a CSS3 Než se začneme potýkat s probíranou látkou, uvedeme vás trochu do historie a předložíme několik pádných argumentů, proč byste měli už dnes začít používat HTML5 a CSS3. Podíváme se také na současný stav implementace těchto nových technologií do webových prohlížečů a pokusíme se vás přesvědčit, že valná většina z nich je už v takové fázi, že je můžete hned začít používat – ale samozřejmě až po zralé úvaze.

Kapitola 2 – Značkování ve stylu HTML5 V této kapitole si popíšeme některé strukturální a sémantické prvky, které jsou nové v HTML5. Také vás seznámíme s naším ukázkovým webem The HTML5 Herald, na němž budeme v průběhu celé této knihy pracovat. Myslíte si, že jsou prvky div nudné? My taky. Na HTML5 je pěkné, že vám nabízí mnohem více voleb: article, section, nav, footer, aside a header!

Kapitola 3 – Více sémantiky v HTML5 Třetí kapitola těsně navazuje na předchozí kapitolu – budeme se zde věnovat novému způsobu, jímž HTML5 konstruuje osnovy dokumentů. Poté se podíváme na několik dalších sémantických prvků, které umožňují být při značkování trochu expresivnější.

Kapitola 4 – HTML5 a formuláře Mezi nejvíce užitečné a aktuálně pro praxi i nejvíce aplikovatelné funkce v HTML5 patří formuláře. Celá řada prohlížečů už nyní zahrnuje nativní podporu pro validaci formulářových prvků určených pro zadávání e-mailů a URL adres. Některé prohlížeče dokonce nativně podporují i prvky pro výběr data (date pickers), posuvníky (sliders) a číselníky (spinner boxes). Implementace formulářů v HTML5 je už téměř v takovém stavu, že je budete kódovat s potěšením. V této kapitole se probírá vše, co potřebujete vědět pro rychlé vytváření formulářů v HTML5. Také se zde zmiňují nouzová řešení, která jsou určena pro starší prohlížeče.

Kapitola 5 – HTML5 audio a video HTML5 je vhodná technologie pro prezentaci multimediálního obsahu, což je pozice, kterou tak dlouho držel Flash. Důvodem pro toto tvrzení jsou nové prvky audio a video, které slouží jako nativní a skriptovatelné kontejnery pro vaše multimediální soubory, takže se už nemusíte spoléhat na nějaký externí plugin jako Flash. V této kapitole se dozvíte všechna pro i proti, pokud přemýšlíte o použití těchto prvků ve vašich stránkách. (Tato kapitola samozřejmě pokrývá jen základy, takže pokud to s prvky audio a video myslíte vážně, doporučujeme nahlédnout do knihy "HTML5 – audio a video, kompletní průvodce", která jde více hloubky. Kniha vyšla v roce 2011 ve vydavatelství Zoner Press, další informace viz http://zonerpress.cz.)

Kapitola 6 – Úvod do CSS3 Když jsme probrali téměř všechno, co potřebujete znát o HTML5, je načase přesunout se k jeho blízkému příbuznému, kterým je CSS3. Projížďku po CSS3 začneme tím, že se nejprve podíváme na některé nové selektory, které umožňují zacilovat se na prvky na stránce s bezprecedentní flexibilitou. Následně budeme pokračovat pohledem na některé nové způsoby pro zadávání barev v CSS3 (včetně průhlednosti). Tuto kapitolu pak zakončíme popisem několika drobností, které ale potěší snad každého webového designéra. Jedná se o stínovaný text, vržené stíny a zakulacené rohy, což jsou mimořádně užitečné funkcionality CSS3, které můžete implementovat do svých webových stránek s minimem úsilí.


19

Kapitola 7 – Gradienty a vícenásobná pozadí CSS3 Ruku na srdce – kdy jste naposledy pracovali na nějakém webu, který neobsahoval gradient nebo obrázek na pozadí? CSS3 poskytuje (pravda, trochu opožděnou) podporu vývojářům, kteří trávili až příliš mnoho času tím, že zápasili s Adobe Photoshopem, když se pokoušeli vytvořit perfektní gradienty nebo obrázky pro pozadí webové stránky a současně zajistit, aby výsledný soubor nebyl příliš velký. Nyní můžete specifikovat lineární nebo radiální gradient přímo ve svém kódu CSS a nepotřebujete k tomu žádné obrázky. Dále můžete prvkům na stránce přidělit libovolné množství obrázků na pozadí.

Kapitola 8 – Transformace a přechody CSS3 Ačkoliv animace byly dlouhodobě považovány za něco, co je zcela v kompetenci JavaScriptu, CSS3 nově umožňuje přenést něco z jejich zátěže na webový prohlížeč. Transformace umožňují otáčet, překlápět, kroutit a jinak deformovat prvky. Přechody umožňují přidat jistou nápaditost do jinak prudkých změn stavu, které běžně vídáme na webech. Kapitola je zakončena letmým pohledem do budoucna. I když u animací CSS založených na klíčových snímcích (keyframes) stále postrádáme podporu v dostatečně širokém měřítku, myslíme si, že budete rozhodně souhlasit, že jsou opravdu kouzelné.

Kapitola 9 – Vkládané fonty a vícesloupcové layouty Máte radši písmo Arial, nebo Verdana? Georgia, nebo Times? A co když nechcete ani jedno z nich? V této kapitole se podíváme, jak můžete překročit omezení "webově bezpečných fontů" z nedávné minulosti a vkládat libovolné fonty přímo do stránek, aby si je návštěvníci mohli stahovat společně s našimi stylovými předpisy a obrázky. Také se podíváme na novou slibnou funkcionalitu CSS, která umožňuje rozvrhnout obsah do několika sloupců, aniž bychom museli použít nějaké dodatečné značkování nebo tu hroznou vlastnost float.

Kapitola 10 – Geolokace, off-line webové aplikace a Web Storage Nejnovější generace webových prohlížečů je vybaveny širokým výběrem nových standardních API JavaScriptu. Ačkoliv mnohá z nich jsou specificky zaměřená na prohlížeče v mobilních zařízeních, mohou být prospěšné i pro uživatele stolních počítačů. V této kapitole se podrobněji podíváme na tři API, které jsou podle našeho názoru nejvíce vzrušující: geolokace, off-line webové aplikace a Web Storage. Stručně se zmíníme i o některých dalších API, která ale podrobně probírat nebudeme (protože mají buď nevalnou podporu, nebo omezené případy užití). Tato API ale naznačují směry, kterými byste se mohli v případě dalšího zájmu vydat.

Kapitola 11 – Canvas, SVG a Drag and Drop Závěrečnou kapitolu knihy věnujeme především dvěma do jisté míry soupeřícím technologiím pro kreslení a zobrazování grafiky. Nová v HTML5 je technologie Canvas, která poskytuje "plátno pro kreslení" a javascriptové API pro kreslení obrazců. Oproti tomu je technologie SVG k dispozici už mnoho let, teprve nyní ovšem dosáhla velmi dobré úrovně z hlediska podpory v prohlížečích, takže je to stále životaschopnější alternativa. Nakonec probereme jedno z dalších nových API JavaScriptu s názvem Drag and Drop (táhni a pusť), které poskytuje nativní rozhraní pro přetahovací akce.

Dodatek A – Knihovna Modernizr Klíčovou zbraní, která nesmí chybět za opaskem žádného superhrdiny HTML5, je Modernizr. Je to malá, ale velmi šikovná knihovna JavaScriptu, která detekuje podporu téměř všech funkcí HTML5 a CSS3 a umožňuje


20 selektivně stylovat web nebo aplikovat nouzové strategie. Rychlý úvodní kurz, jak používat Modernizr, jsme zařadili až do tohoto dodatku, přestože Modernizr používáme v průběhu celé knihy. Díky tomu ale máte stručnou referenční příručku k dispozici na jediném místě, takže v ostatních kapitolách se můžeme více soustředit na hlavní předmět našeho výkladu, kterým je HTML5 a CSS3.

Dodatek B – WAI-ARIA WAI-ARIA je samostatná specifikace, která se často jedním dechem zmiňuje společně s HTML5. Je to nejnovější sada nástrojů pomáhající zajistit, aby sofistikované webové aplikace byly přístupné i těm uživatelům, kteří používají nějakou asistenční technologii. I když je WAI-ARIA téma, které by rozhodně zasloužilo celou vlastní knihu, myslíme si, že bude prospěšné sem zařadit alespoň stručný přehled o tom, co je a co všechno umí, a samozřejmě uvést i několik odkazů, pokud byste se o ní chtěli dozvědět víc.

Dodatek C – Microdata Microdata je část specifikace HTML5, která se zabývá anotacemi ve značkování určenými pro stroje (strojově čitelné jmenovky). Ačkoliv stále ještě probíhá její vývoj, myslíme si, že už teď stojí za to ji ilustrovat na několika příkladech.

Kde hledat pomoc? Vydavatelství SitePoint má k dispozici velmi úspěšnou komunitu webových designérů a vývojářů, kteří vám mohou pomoci, pokud se dostanete do nějakých potíží. Občas také nahlédněte do seznamu s případnými opravami chyb v této knize (errata).

Fóra SitePointu Fóra SitePointu1 jsou diskusní fóra, na nichž můžete klást otázky o čemkoliv, co se nějak vztahuje k webovému vývoji a můžete samozřejmě odpovídat na i dotazy jiných. Toto je všeobecný princip diskusních fór: někteří lidé se ptají, jiní lidé jim odpovídají a většina lidí dělá oboje. Když sdílíte své znalosti, ostatní z nich mohou těžit a naopak. Tato diskusní fóra navíc sleduje mnoho zkušených webových designérů a vývojářů, kteří vám rádi pomohou, když se dostanete do nesnází. Je také dobré klást otázky, na které získáte rychle odpovědi, když se snažíte proniknout do nějaké nové problematiky související s webovým vývojem.

Webové stránky pro tuto knihu Webové stránky pro tuto knihu jsou umístěny na http://sitepoint.com/books/rw1/. Co zde naleznete?

Zdrojové kódy V průběhu práce s touto knihou se setkáte s mnoha odkazy na zdrojové kódy. Jedná se o ZIP archiv, který obsahuje veškerý zdrojový kód příkladů použitých v této knize. Pokud tedy nechcete přepisovat kódy ručně, rozhodně si jej stáhněte.2 Zdrojové kódy ke knize si můžete stáhnout i ze serveru vydavatelství Zoner Press (http://zonerpress.cz/download/html5-a-css3-pro-webove-designery.zip).

1 2

http://www.sitepoint.com/forums/ http://www.sitepoint.com/books/rw1/code.php


21 Aktualizace a errata Je všeobecně známo, že žádná kniha není perfektní, takže i v případě této knihy očekáváme, že pozorní čtenáři odhalí jednu či dvě chybičky, které jsme nedopatřením přehlédli. Na stránce s erraty3 naleznete informace o zjištěných typografických chybách nebo chybách v kódu.

Newslettery SitePointu Kromě knih, jako je tato, vydává SitePoint zdarma dostupné e-mailové newslettery. Abychom uvedli alespoň několik z nich, jedná se například o SitePoint Tech Times, SitePoint Tribune nebo SitePoint Design View. Dočtete se v nich o všelijakých žhavých novinkách a vydáních nových produktů. Nechybí články o různých trendech. Také v nich naleznete užitečné tipy a postupy pro všechny aspekty webového vývoje. Pokud máte zájem o jejich odebírání, můžete tak učinit na adrese http://www.sitepoint.com/newsletter/.

Podcast SitePointu Zapojte se do týmu SitePoint Podcast určeného webovým designérům a vývojářům se svými zprávami, rozhovory, výměnami názorů či zajímavými myšlenkami. Diskutujeme zde o nejnovějších tématech webového průmyslu, prezentujeme hostující řečníky a děláme zajímavé rozhovory s některými známými osobnostmi tohoto průmyslu. K nejnovějším podcastům se dostanete prostřednictvím iTunes nebo si je můžete přehrát přímo ve svém prohlížeči na adrese http://www.sitepoint.com/podcast/.

Konvence používané v této knize V knize používáme několik typografických stylů a stylů pro rozvržení, abyste mohli snadněji rozlišit různé druhy informací. Jedná se konkrétně o tyto prvky:

Příklady kódu Kód v knize zobrazujeme neproporcionálním písmem jako zde: <h1>A Perfect Summer's Day</h1> <p>It was a lovely day for a walk in the park. The birds were singing and the kids were all back at school.</p>

Pokud je kód k dispozici v archivu se zdrojovým kódy (http://zonerpress.cz/download/html5-a-css3-pro-webove-designery.zip), je nad výpisem uveden název příslušného souboru:

example.css .footer { background-color: #CCC; border-top: 1px solid #333; }

3

http://www.sitepoint.com/books/rw1/errata.php


22 Pokud je zobrazena jen část daného souboru, je to indikováno slovem výňatek:

example.css (výňatek) border-top: 1px solid #333;

Pokud se do daného příkladu vkládá nějaký dodatečný kód, je tento nový kód zvýrazněn tučně: function animate() { new_variable = "Hello"; }

Pokud je někde potřebný kód, který byste už ale měli znát z kontextu, pro úsporu místa ho ve výpisu neopakujeme a nahrazujeme třemi tečkami: function animate() { ... return new_variable; }

Tipy, poznámky, upozornění a varování Následující prvky používáme pro všelijaké tipy, poznámky, upozornění nebo varování.

Hej, ty! Tipy připomínají užitečné drobnosti!

Ehm, promiňte … Poznámky jsou užitečné odbočky vztahující se probíranému tématu, nejsou ale kriticky důležité. Chápejte je spíše jako zajímavé informace navíc.

Nezapomeňte vždycky... … věnovat pozornost těmto důležitým bodům.

Pozor! Upozorněními zvýrazňujeme různá úskalí, na něž byste mohli narazit na své pouti.


63

KAPITOLA 4 HTML5 a formuláře V tuto chvíli víte prakticky všechno, co byste měli vědět o nových prvcích HTML5 a jejich sémantice. Než ovšem začneme pracovat na vzhledu našeho ukázkového webu (což budeme dělat v kapitole 6), udělejme rychlou odbočku od titulní stránky našich novin The HTML5 Herald a podívejme se na přihlašovací stránku, která dobře ilustruje, co všechno nabízí HTML5 v oblasti webových formulářů. HTML5 pro oblast webových formulářů představilo nové formulářové prvky, vstupní typy, atributy a další funkcionality. Mnohá užitečná vylepšení používáte ve svých rozhraních už léta – jmenujme například validaci formulářových údajů, zástupné texty a podobné věci. Rozdíl je v tom, že zatímco předtím jste se museli pro jejich vytvoření uchylovat k JavaScriptu, nyní jsou dostupné přímo v prohlížeči a nemusíte dělat nic víc, než ve svém značkování nastavit příhodný atribut. HTML5 nicméně nemyslí jenom na usnadnění práce vývojářů při vytváření formulářů. Je také lepší z hlediska koncových uživatelů. Protože validace na straně klienta je nativně zpracovávána samotným prohlížečem, bude vypadat konzistentněji napříč různými webovými stránkami a to ani nemluvíme o tom, že stránky se načtou rychleji, když nebudou obsahovat všechen ten JavaScript pro validační funkcionalitu. Pojďme s chutí na to!

Kód formuláře pro The HTML5 Herald Formuláře jsou často tím posledním, co vývojáři zařazují do svých stránek. Je to kvůli tomu, že mnozí z nich považují formuláře za příšerně otravné a nudné. Dobrá zpráva je, že HTML5 vstřikuje trochu šťávy do kódování formulářů, takže by se mělo jednat o větší zábavu. Doufáme, že po přečtení této kapitoly se začnete nedočkavě těšit, až budete moci svého značkování zařazovat patřičné formulářové prvky. Kód našeho vzorového formuláře (se základními HTML značkami) pro projekt The HTML5 Herald vypadá takto:

Soubor register.html (výňatek) <form id="register" method="post">


Kapitola 4 – HTML5 a formuláře

64 <hgroup>

<h1>Sign Me Up!</h1> <h2>I would like to receive your fine publication.</h2> </hgroup> <ul> <li> <label for="register-name">My name is:</label> <input type="text" id="register-name" name="name"> </li> <li> <label for="address">My email address is:</label> <input type="text" id="address" name="address"> </li> <li> <label for="url">My website is located at:</label> <input type="text" id="url" name="url"> </li> <li> <label for="password">I would like my password to be:</label> <p>(at least 6 characters, no spaces)</p> <input type="password" id="password" name="password"> </li> <li> <label for="rating">On a scale of 1 to 10, my knowledge of HTML5 is:</label> <input type="text" name="rating" id=rating"> </li> <li> <label for="startdate">Please start my subscription on:</label> <input type="text" id="startdate" name="startdate"> </li> <li> <label for="quantity">I would like to receive <input type="text" name="quantity" id="quantity"> copies of <cite> The HTML5 Herald</cite>.</label> </li> <li> <label for="upsell">Also sign me up for <cite>The CSS3 Chronicle</cite></label> <input type="checkbox" id="upsell" name="upsell"> </li> <li> <input type="submit" id="register-submit" value="Send Post Haste"> </li> </ul> </form>


HTML5 a CSS3 pro webové designéry

65

Jak už jsme napsali dříve, tento ukázkový registrační formulář používá formulářové prvky, které máme k dispozici už od nejranějších verzí HTML. Formulář uživateli napovídá (prostřednictvím prvků label a p), jaký typ dat očekává v jednotlivých polích, takže i když vaši uživatelé používají Netscape 4.7 nebo IE5 (to měl být vtip!), formuláři porozumí a snad ho i dobře vyplní. Funguje, ale rozhodně se dá vylepšit. V této kapitole vylepšíme tento formulář tím, že do něj doplníme funkcionalitu HTML5. Standard HTML5 například poskytuje nové vstupní typy, například pro e-mailové adresy, URL, čísla, datum a další. Kromě těchto nových vstupních typů HTML5 představuje i atributy, které se mohou používat jak s novými, tak i existujícími vstupními typy. Umožňují například dodat zástupný text, označit některá pole za povinná, nebo deklarovat, jaký typ dat je akceptovatelný – a to všechno bez JavaScriptu. Všechny nově přidané vstupní typy probereme v této kapitole později. Než tak ale učiníme, podíváme se na nové atributy, které HTML5 poskytuje pro formuláře.

Atributy pro HTML5 formuláře Pokud chtěli vývojáři na straně klienta ověřovat platnost vstupních dat (například zdali uživatel vyplnil povinné položky formuláře, zdali použil správný typ dat atd.), museli si k tomu napsat vlastní skript, který by tyto kontroly prováděl. HTML5 ovšem obsahuje několik atributů, které umožňující stanovit, jaká hodnota je přijatelná, a informovat uživatele o chybách. A to bez toho, abyste museli pracovat s JavaScriptem. Prohlížeče, které podporují tyto atributy HTML5, budou porovnávat údaje zadané uživatelem na základě regulárních výrazů dodaných tvůrcem stránky. Poté zkontrolují, zda jsou všechna povinná pole opravdu vyplněná, zpřístupní výběr dalších hodnot, pokud je to povoleno atd. Ještě lepší na tom všem je, že použitím těchto atributů nijak neublížíte starším prohlížečům – ty budou prostě ignorovat atributy, jimž nerozumějí. Ve skutečnosti dokonce můžete tyto atributy a jejich hodnoty používat pro svá nouzová skriptovací řešení, nemusíte explicitně kódovat validační vzory ve svém kódu JavaScriptu, ani přidávat do značkování nadbytečné třídy. Na to, jak se dělá tohle, se podíváme později, protože nejprve musíme probrat jednotlivé nové atributy.

Atribut required Booleovský atribut required říká prohlížeči, aby odeslal formulář jen tehdy, pokud je dané pole správně vyplněno. Je evidentní, že to znamená, že pole nesmí zůstat prázdné, nicméně to také znamená (v závislosti na dalších atributech tohoto pole nebo jeho typu), že jsou akceptovatelné jen určité typy hodnot. Později v této kapitole probereme různé způsoby umožňující dát vědět prohlížeči, jaký druh dat má ve formuláři očekávat. Je-li pole s atributem required ponecháno prázdné, nebo je neplatné, formulář se neodešle a focus získá první neplatný formulářový prvek. Prohlížeče Opera, Firefox a Chrome poskytují uživateli chybové zprávy ve stylu "Please fill out this field" (Vyplňte prosím toto pole) nebo " You have to specify a value" (Musíte specifikovat hodnotu), pokud se povinné pole ponechá prázdné a zprávu "Please enter an email address" (Vložte prosím platnou e-mailovou adresu) nebo "xyz is not in the format this page requires" (xyz není ve formátu, který stránka požaduje), když je zadaný údaj nesprávného datového typu nebo nevyhovuje specifikovanému vzoru. Atribut required je možné nastavit u všech vstupních typů s výjimkou button, range, color a hidden (všechny tyto vstupní typy obecně mají nějakou výchozí hodnotu). Podobně jako u jiných booleovských atributů, s nimiž jste se doposud setkali, je jeho syntaxe buď prostě required, nebo v případě použití XHTML required="required".


Kapitola 4 – HTML5 a formuláře

66

Focus? Toto je vhodná chvíle na osvěžení vědomostí: prvek formuláře získá focus (někdy se říká, že je aktivní) tehdy, když uživatel klikne kurzorem myši na tento prvek formuláře nebo se na toto pole dostane s klávesou tab. U prvků input se při následném psaní na klávesnici zadávají data do tohoto prvku. V terminologii JavaScriptu se událost focus odpálí na prvku formuláře tehdy, když získává focus, a událost blur, když focus ztratí. V CSS lze prvky, které mají focus, stylovat pseudotřídou :focus.

Přidejme nyní atribut required do našeho přihlašovacího formuláře. Za povinné položky prohlásíme jméno, e-mailovou adresu, heslo a datum, od kdy chcete zahájit své předplatné:

register.html (výňatek) <ul> <li> <label for="register-name">My name is:</label> <input type="text" id="register-name" name="name" required aria-required="true"> aria-required="true" </li> <li> <label for="email">My email address is:</label> aria-required="true" <input type="text" id="email" name="email" required aria-required="true"> </li> <li> <label for="url">My website is located at:</label> <input type="text" id="url" name="url"> </li> <li> <label for="password">I would like my password to be:</label> <p>(at least 6 characters, no spaces)</p> <input type="password" id="password" name="password" required aria-required="true"> aria-required="true" </li> <li> <label for="rating">On a scale of 1 to 10, my knowledge of HTML5 is:</label> <input type="text" name="rating" type="range"> </li> <li> <label for="startdate">Please start my subscription on: </label> <input type="text" id="startdate" name="startdate" required aria-required="true"> aria-required="true" </li> <li> <label for="quantity">I would like to receive <input type="text" name="quantity" id="quantity"> copies of <cite> The HTML5 Herald</cite>


HTML5 a CSS3 pro webové designéry

67

</label> </li> <li> <label for="upsell">Also sign me up for <cite>The CSS3 Chronicle</cite></label> <input type="checkbox" id="upsell" name="upsell"> </li> <li> <input type="submit" id="register-submit" value="Send Post Haste"> </li> </ul>

Povšimněte si, že vždy, když jsme použili atribut required, přidali jsme i atribut aria-required="true", který slouží pro vylepšení přístupnosti. Ačkoliv mnoho čtenářů obrazovky (screen readers) stále postrádá podporu pro nové atributy HTML5, mnohá tato zařízení podporují role WAI-ARIA, takže existuje jistá šance, že přidáním této role budou schopny dát uživateli na vědomí, že je dané pole povinné. Stručný úvod do této problematiky naleznete v příloze B. Efekt atributu required poté, co se pokusíte formulář odeslat nevyplněný, vidíte na obrázcích 4.1, 4.2 a 4.3.

Obrázek 4.1. Validační zpráva pro povinné pole v prohlížeči Firefox 4.

Obrázek 4.2. Takhle vypadá v prohlížeči Opera.

Obrázek 4.3. A tohle je Google Chrome.


Kapitola 4 – HTML5 a formuláře

68

Stylování povinných formulářových polí Formulářové prvky, které jsou označeny jako povinné, můžete ostylovat pomocí pseudotřídy :required. Dále je možné ostylovat pole, která obsahují platné nebo neplatné hodnoty prostřednictvím pseudotříd :valid a :invalid. S využitím těchto pseudotříd a pár kouzel CSS dokážete poskytnout vizuální vodítka vidomým uživatelům, protože jim dáte najevo, která pole jsou povinná, a současně jim poskytnete i nesmírně cennou zpětnou vazbu, zda se jim podařilo pole vyplnit úspěšně: input:required { background-image: url('../images/required.png'); } input:focus:invalid { background-image: url('../images/invalid.png'); } input:focus:valid { background-image: url('../images/valid.png'); }

Pro povinná pole formuláře zde přidáváme na obrázek v pozadí, což je obligátní hvězdička. Další obrázky na pozadí jsou určeny pro správně a nesprávně vyplněná vstupní pole. Změna se ovšem projeví pouze tehdy, pokud dané pole formuláře získá focus, aby se formulář nestal příliš nepřehledným.

Pozor na výchozí styly Připomínáme, že Firefox 4 aplikuje na neplatné prvky formuláře své vlastní stylování (červený stín), viz obrázek 4.1 uvedený výše. Nativní vržený stín můžete odstranit prostřednictvím tohoto CSS: :invalid { box-shadow: none; }

Zpětná kompatibilita Ačkoliv starší prohlížeče s největší pravděpodobností nebudou podporovat pseudotřídu :required, s využitím selektoru atributu je přesto možné poskytnout žádané styly: input:required, input[required] { background-image: url('../images/required.png'); }

Tento atribut můžete i využít jako tzv. hák (hook), na který zavěsíte validaci formuláře pro webové prohlížeče, které nepodporují HTML5. Váš kód JavaScriptu může u prázdných polí zkontrolovat, zda je přítomen atribut required, a odmítnout odeslání formuláře, pokud nějaké takové pole najde.


147

KAPITOLA 8 Transformace a přechody CSS3 Naše stránka je dost statická. Vlastně je zcela statická. V kapitole 4 jste se dozvěděli něco málo o tom, jak lze prostřednictvím pseudotříd :invalid a :valid měnit vzhled formuláře na základě jeho stavu. Co kdybychom ale skutečně chtěli něco někam přemístit? A co když chceme změnit vzhled prvků – třeba je otočit nebo zkosit? Celá léta se weboví designéři spoléhali na JavaScript, pokud chtěli mít ve stránce nějaké animace, přičemž jediný způsob, kterým bylo možné zobrazit text v nějakém úhlu, bylo použít obrázek. To mělo k ideálu hodně daleko. V CSS3 je to ale jinak. Jeho prostřednictvím můžete prvky snadno naklánět, měnit jim měřítko, přesouvat je nebo dokonce je překlápět. A to všechno bez JavaScriptu nebo dodatečných obrázků. Pojďte se podívat, jak se to dělá.

Transformace Vlastnost transform z CSS3, kterou podporuje Firefox 3.5+, Opera 10.5, WebKit od verze 3.2 (Chrome 1) a dokonce i Internet Explorer 9, umožňuje posunout, natočit, zkosit nebo změnit měřítko libovolného prvku na stránce. I když některé z těchto efektů bylo možné udělat s využitím již dříve existujících funkcionalit CSS (jako bylo relativní a absolutní pozicování), CSS3 vám poskytuje bezprecedentní kontrolu nad mnoha dalšími aspekty vzhledu prvku. Se vzhledem prvku manipulujeme pomocí transformačních funkcí. Hodnota vlastnosti transform je jedna nebo více transformačních funkcí oddělovaných mezerami, které se budou aplikovat v tom pořadí, v jakém jsou uvedeny. V této knize probereme všechny dvourozměrné transformační funkce. Ačkoliv jádro WebKit podporuje i transformace prvků v trojrozměrném prostoru – tzv. 3D transformace – toto téma dalece přesahuje zaměření této knihy. Pro ilustraci toho, jakým způsobem transformace fungují a jak se používají, budeme pracovat s dalším reklamním blokem z novin The HTML5 Herald, viz obrázek 8.1.


148

Kapitola 8 – Transformace a přechody CSS3

Obrázek 8.1. Tento reklamní blok využijeme k předvádění CSS3 transformací.

Posun prvku Posouvací funkce umožňují přesouvat prvky doleva, doprava, nahoru nebo dolů. Tyto funkce mají obdobné chování jako deklarace position: relative, kde deklarujete top a left. Když použijete nějakou posouvací funkci, přesouváte prvky, aniž by to mělo nějaký dopad na tok dokumentu. Na rozdíl od position: relative je možné pozicovat prvek oproti jeho aktuální pozici, rodiči nebo jinému předkovi. Prvek může byt posunut pouze relativně vzhledem k jeho aktuální pozici. Funkce translate(x,y) posune prvek o x zleva a o y shora: -webkit-transform: translate(45px,-45px); -moz-transform: translate(45px,-45px); -ms-transform: translate(45px,-45px); -o-transform: translate(45px,-45px); transform: translate(45px,-45px);

Chcete-li prvek posunout pouze svisle nebo pouze vodorovně, použijte translatex nebo translatey: -webkit-transform: translatex(45px); -moz-transform: translatex(45px); -ms-transform: translatex(45px); -o-transform: translatex(45px); transform: translatex(45px); -webkit-transform: translatey(-45px); -moz-transform: translatey(-45px); -ms-transform: translatey(-45px); -o-transform: translatey(-45px); transform: translatey(-45px);

Předpokládejme, že v naší reklamě chceme přesunout slovo "dukes" (zaťaté pěsti) doprava, když na něj uživatel najede kurzorem myši. Ve značkování máme toto: <h1>Put your <span>dukes</span> up sire</h1>

Požadovaný efekt vytvoříme tak, aby se projevil vždy, když se najede kurzorem myši na h1. Díky tomu bude pravděpodobnější, že uživatel tento efekt najde, než kdyby se spouštěl pouze při najetí kurzorem myši na slovo "dukes", které je obklopeno v prvku span.


HTML5 a CSS3 pro webové designéry

149

css/styles.css (výňatek) #ad3 h1:hover span { color: #484848; -webkit-transform: translateX(40px); -moz-transform: translateX(40px); -ms-transform: translateX(40px); -o-transform:translateX(40px); transform: translateX(40px); }

Efekt bude funkční ve většině prohlížečů, s výjimkou prohlížečů založených na WebKitu. Proč? Jádro WebKit totiž povoluje pouze transformace blokových prvků – řádkové (inline) prvky jsou mimo. Tohle lze ovšem snadno napravit přidáním display: inline-block k prvku span.

css/styles.css (výňatek) #ad3 h1 span { font-size: 30px; color: #999999; display:inline-block; ...

Výsledek vidíte na obrázku 8.2.

Obrázek 8.2. Výsledek naší první transformace. Pěkné! Pojďme to ještě vylepšit a ukažme si, jak změnou měřítka zařídíme, aby se text zároveň zvětšil.

Změna velikosti Funkce scale(x,y) slouží ke změně velikosti prvku ve vodorovném a svislém směru podle nadefinovaných parametrů. Je-li uvedena pouze jedna hodnota, použije se pro x i y. Například scale(1) ponechá prvek v původní velikosti, scale(2) zdvojnásobí jeho rozměry, scale(0.5) je zmenší na polovinu atd. Když uvedete dvě různé hodnoty, prvek se zdeformuje, přesně podle očekávání: -webkit-transform: scale(1.5,0.25);


150

Kapitola 8 – Transformace a přechody CSS3

-moz-transform: scale(1.5,0.25); -ms-transform: scale(1.5,0.25); -o-transform: scale(1.5,0.25); transform: scale(1.5,0.25);

Podobně jako tomu bylo u funkce translate, i zde používáme funkce s názvy scalex(x) nebo scaley(y). Mění pouze vodorovné, resp. svislé rozměry. Znamenají totéž co scale(x,1), resp. scale(1,y). Prvek, jemuž jste změnili rozměry, se buď zvětšuje směrem ven od svého středu, nebo se zmenšuje dovnitř ke svému středu. Jinak řečeno, když se mění rozměry prvku, střed prvku zůstává vždy na stejném místě. Chcete-li změnit toto výchozí chování, můžete zařadit vlastnost transform-origin, kterou probereme za chvíli. Přidejme teď našemu prvku span transformaci scale:

css/styles.css (výňatek) #ad3 h1:hover span { color: #484848; scale(1.5) -webkit-transform: translateX(40px) scale(1.5); scale(1.5); -moz-transform: translateX(40px) scale(1.5) scale(1.5); -ms-transform: translateX(40px) scale(1.5) -o-transform: translateX(40px) scale(1.5) scale(1.5); scale(1.5); transform: translateX(40px) scale(1.5) }

Povšimněte si, že není potřeba deklarovat novou transformaci – novou transformační funkci jednoduše přidáte do již existující deklarace a oddělíte mezerou. Stojí za to si také zapamatovat, že změna velikosti prostřednictvím scale (podobně jako posun) nemá žádný dopad na tok dokumentu. To znamená, že pokud změníte velikost textu, například ho zvětšíte, okolní text se neodsune a neudělá mu místo. Obrázek 8.3 ukazuje, jaké potíže to může způsobovat. V případech, jako je tento, zkuste spíše pouvažovat, zdali by místo transformace velikosti nebylo lepší patřičně upravit výšku nebo šířku prvku nebo eventuálně změnit velikost písma (nicméně si uvědomte, že tyto vlastnosti ovlivňují prostor, který prohlížeč pro prvek alokuje).

Obrázek 8.3. Aplikujete-li funkci scale na inline text, může to mít nežádoucí výsledky. V našem příkladu ovšem chceme, aby text v reklamě svým zvětšením upoutal pozornost, přičemž nechceme měnit tok okolního textu, takže transformace pro změnu velikosti dělá přesně to, co zde potřebujeme udělat. Obrázek 8.4 (na protější stránce knihy) ukazuje, jak to vypadá, když uživatel najede kurzorem myši na reklamu poté, co jsme k již existujícímu posunu (translateX) přidali transformační funkci scale. Vypadá to dobře, ale stále se dá leccos přidat.


HTML5 a CSS3 pro webové designéry

151

Obrázek 8.4. Dva transformační efekty současně – posun a změna velikosti.

Rotace Funkce rotate() otočí daný prvek kolem bodu počátku (standardně se jedná o střed prvku, jako tomu bylo u u scale) o specifikovaný úhel. Úhly se obvykle deklarují ve stupních. Kladné hodnoty znamenají otáčení po směru hodinových ručiček, záporné pak proti směru hodinových ručiček. Kromě stupňů lze hodnoty zadávat v gradech, radiánech nebo otočkách – my zde vystačíme se stupni. Přidejme ke slovu "dukes" ještě transformaci rotate: #ad3 h1:hover span { color: #484848; -webkit-transform:rotate(10deg) translateX(40px) scale(1.5); -moz-transform:rotate(10deg) translateX(40px) scale(1.5); -ms-transform:rotate(10deg) translateX(40px) scale(1.5); -o-transform:rotate(10deg) translateX(40px) scale(1.5); transform:rotate(10deg) translateX(40px) scale(1.5); }

Prostřednictvím tohoto pravidla definice natočíme span o deset stupňů po směru hodinových ručiček – přidáváme tím efekt, který vyjadřuje, že text právě dostal od boxera děsnou ránu pěstí, až se zakymácel. Rotaci deklarujeme před translate, aby se aplikovala jako první – zapamatujte si, že transformace se aplikují v tom pořadí, v jakém jsou uvedeny. Někdy na pořadí nezáleží, jindy ale ano, takže pokud je efekt vašich transformací jiný, než jste původně očekávali, možná postačí upravit pořadí nadefinovaných transformací. Finální transformovaný text vidíte na obrázku 8.5.

Obrázek 8.5. Text jsme posunuli, změnili mu velikost a ještě ho natočili – to je pořádná rána.


152

Kapitola 8 – Transformace a přechody CSS3

Existuje ovšem ještě jeden typ transformace, kterou ještě poctíme svou návštěvou. Ačkoliv v našich novinách The HTML5 Herald tuto transformaci nepoužíváme, přesto vám ji předvedeme.

Zešikmení Funkce skew(x,y) specifikuje zešikmení podle osy X a osy Y. Jak asi předpokládáte, x specifikuje zešikmení na ose X, y pak zešikmení na ose Y. Není-li uveden druhý parametr, k zešikmení dojde pouze na ose X: -webkit-transform: skew(15deg, 4deg); -moz-transform: skew(15deg, 4deg); -ms-transform: skew(15deg, 4deg); -o-transform: skew(15deg, 4deg); transform: skew(15deg, 4deg);

Pokud bychom styly uvedené výše aplikovali na nějaký nadpis, jeho zešikmená podoba by mohla vypadat jako na obrázku 8.6.

Obrázek 8.6. Text, na který jsme aplikovali transformaci skew. Podobně jako tomu bylo u tranformací translate a scale, i v tomto případě existují transformace, které jsou specifické pro jednotlivé osy. Jak jste asi uhodnuli, jedná se o skewx() a skewy().

Změna počátku transformace V jednom příkladu výše jsme už naznačili, že máte kontrolu nad počátkem, od něhož se odvíjejí transformace. Slouží k tomu vlastnost transform-origin, která má stejnou syntaxi jako background-position. Výchozí je střed objektu, takže změny velikosti a rotace se standardně dějí kolem středu boxu. Předpokládejme, že chcete transformovat kružnici. Protože výchozím nastavení transform-origin je střed kružnice, transformace rotate nebude mít na kružnici žádný viditelný účinek. Kružnice otočená o 90 stupňů vypadá přesně stejně jako původní nenatočená kružnice. Když ovšem pro tuto kružnici specifikujete vlastnost transform-origin s hodnotami 10% 10%, povšimnete si už zřetelného natočení kružnice. Efekt můžete vidět na obrázku 8.7.

Obrázek 8.7. Rotace kružnice je viditelná jen tehdy, pokud změníme počátek transformace.


HTML5 a CSS3 pro webové designéry

153

Vlastnost transform-origin se podporuje s prefixy výrobce v prohlížečích WebKit, Firefox a Opera: -webkit-transform-origin: 10% 10%; -moz-transform-origin: 10% 10%; -o-transform-origin: 10% 10%; transform-origin: 10% 10%;

Podpora transformací pro IE8 a dřívější Protože transformace CSS nejsou podporovány v IE6, IE7 a IE8, můžete tyto efekty napodobit jinými vlastnostmi CSS, včetně filtrů. Pro "posun" použijte position: relative s hodnotami top a left: .translate { position: relative; top: 200px; left: 200px; }

Velikost prvku je možné změnit úpravou jeho šířky (vlastnost width) a výšky (vlastnost height). Zapamatujte si ovšem, že zatímco transformované prvky pořád zabírají na stránce stejný prostor, jaký zabíraly před transformací změny velikosti, když změníte jejich šířku a výšku pomocí width a height, změníte tím i velikost prostoru, který prohlížeč alokoval pro prvek, což může mít vliv na layout webu jako takový. V Internet Exploreru můžete k rotaci dokonce použít filtry, je to ale dost ošklivé: .rotate { transform: rotate(15deg); filter: progid:DXImageTransform.Microsoft.Matrix( sizingMethod='auto expand', M11=0.9659258262890683, M12=-0.25881904510252074, M21=0.25881904510252074, M22=0.9659258262890683); -ms-filter: "progid:DXImageTransform.Microsoft.Matrix( M11=0.9659258262890683, M12=-0.25881904510252074, M21=0.25881904510252074, M22=0.9659258262890683, sizingMethod='auto expand')"; zoom: 1; }

Myslíme si, že nemá cenu se pouštět do podrobnějšího výkladu syntaxe tohoto filtru pro rotace. Pokud chcete otáčet prvky i v Internet Exploreru, navštivte stránku http://css3please.com/, která podle vašich požadavků vytvoří kód pro požadovanou rotaci, která bude fungovat napříč prohlížeči. Prostě editujte jednu z hodnot pro CSS funkci rotate a ostatní části kódu pro ostatní prohlížeče se už aktualizují automaticky.

Přechody Přechody (transitions) umožňují, aby se hodnoty CSS vlastností průběžně měnily v čase, což umožňuje vytvářet jednoduché animace. Pokud má například odkaz měnit barvu, když na něj uživatel najede kurzorem


Alexis Goldsteinová, Louis Lazaris, Estelle Weylová

HTML5 a CSS3 PRO WEBOVÉ DESIGNÉRY

Kniha HTML5 a CSS3 pro webové designéry (v originále HTML5 & CSS3 for the Real World) je praktickým zdrojem informací o nejnovější generaci technologií webového vývoje. V prvních kapitolách 1–5 se dozvíte vše důležité o HTML5 – od nezbytného úvodního představení tohoto nového standardu a detailního popisu všech nových značek přes záležitosti týkající se sémantiky až k novinkám v oblasti webových formulářů a práce s multimédii (nové prvky <audio> a <video>; této problematice je věnována samostatná publikace z produkce Zoner Press: HTML5 – audio a video, kompletní průvodce).

ZONER software, a.s. významný producent softwaru v oblasti digitální fotogra¿e, poþítaþové gra¿ky a multimédií, poskytovatel internetových služeb, souvisejících s prezentací na internetu a e-komercí, a nakladatelství odborné literatury.

Následující kapitoly 6–9 se věnují blízkému příbuznému HTML5, kterým není nic jiného než CSS3. Projížďka pro CSS3 začíná nezbytným úvodem, v němž se mj. popisují nové selektory či vlastnosti umožňující implementovat stínovaný text, vržené stíny nebo zakulacené rohy. Kniha se samozřejmě věnuje i dalším funkcionalitám v CSS3, což jsou například gradienty, vícenásobná pozadí, transformace, vkládané fonty, přechody nebo vícesloupcové layouty. Poslední dvě kapitoly opouštějí oblast HTML5 a CSS3 a věnují se trochu pokročilejším (a stále velmi užitečným) záležitostem, jako je geolokace, off-line webové aplikace, Web Storage, Canvas, SVG či Drag and Drop. Tři dodatky na konci knihy zahrnují informace o knihovně Modernizr, specifikaci WAI-ARIA a specifikaci Microdata. x Vkládané fonty a vícesloupcové layouty x Geolokace, offline webové aplikace a Web Storage x Canvas, SVG a Drag and Drop x Knihovna Modernizr x WAI-ARIA x Microdata

Zdrojové soubory ke stažení www.zonerpress.cz/download/html5-a-css3-pro-webove-designery.zip

E N C Y K LO P E D I E

W E B D E S I G N E R A

Pod tímto logem vycházejí publikace určené pro každého, kdo se zajímá o tvorbu webových stránek. Od ryze praktických příruček a průvodců až po komplexní publikace o všem, co potřebuje webdesignér při každodenní práci. Na vydavatelský plán a výhody, které můžete získat, se informujte na adrese vydavatelství.

Zoner Press tel.: 532 190 883 e-mail: knihy@zoner.cz www.zonerpress.cz ZONER software, a.s., Nové sady 18, 602 00 Brno

www.zoner.cz © Foto: iStockphoto, #17509017

Seznam kapitol x Úvod do HTML5 a CSS3 x Značkování ve stylu HTML5 x Více sémantiky v HTML5 x HTML5 a formuláře x HTML5 audio a video x Úvod do CSS3 x Gradienty a vícenásobná pozadí CSS3 x Transformace a přechody CSS3

DOPORUČENÁ CENA: 369 KČ KATALOGOVÉ ČÍSLO: ZR1136

ISBN 978-80-7413-166-0

9 7 8 8 0 7 4 1 3 1 6 6 0


Turn static files into dynamic content formats.

Create a flipbook
Issuu converts static files into: digital portfolios, online yearbooks, online catalogs, digital photo albums and more. Sign up and create your flipbook.