HTML 5 - Tecniche Nuove

Transcript

HTML 5 - Tecniche Nuove
La guida di riferimento
dell’HTML5
HTML (HyperText Markup Language) è il linguaggio di
markup utilizzato per trasformare documenti testuali in pagine web e applicazioni. Lo scopo fondamentale di HTML
come linguaggio di markup è di fornire una descrizione semantica (ossia conforme al significato) dei contenuti e impostare la struttura (ossia una gerarchia di elementi) del documento.
Questa guida di riferimento tascabile fornisce un elenco completo e sintetico degli elementi e attributi secondo la Candidate Recommendation HTML5 gestita dal World Wide
Web Consortium (W3C) pubblicata il 17 Dicembre 2012,
l’HTML 5.1 Editor’s Draft pubblicato il 30 Maggio 2013 e la
specifica “living” HTML gestita dal Web Hypertext Application Technology Working Group (WHATWG) pubblicata
anch’essa il 30 Maggio 2013.
Gli elementi e gli attributi della specifica HTML 4.01 che
sono diventati obsoleti in HTML5 sono stati omessi da questa edizione. Gli elementi e gli attributi contenuti in questo
libro possono essere utilizzati nei documenti HTML 4.01,
XHTML 1.0 o XHTML 1.1, a meno che non sia indicato
esplicitamente “Incompatibili con HTML 4.01” nel qual caso
creerebbero documenti non validi.
1
I documenti HTML5 possono essere scritti con la sintassi
XHTML (formalmente nota come “Serializzazione XML dell’HTML5”), pertanto, ogni volta che saranno applicabili, si
evidenzieranno le considerazioni specifiche per l’XHTML.
Vedere l’Capitolo 3 alla fine di questa guida di riferimento
per i dettagli sui requisiti sintattici.
Questo libro è organizzato nelle seguenti sezioni:
•
Una panoramica dell’HTML5
•
Gli attributi globali dell’HTML5
•
L’elenco alfabetico degli elementi
•
Gli elementi organizzati per funzione
•
Appendice A: Le entità carattere
•
Appendice B: Una panoramica della sintassi XHTML
Una panoramica dell’HTML5
HTML5 mette a disposizione nuove funzionalità (elementi,
attributi, gestori di eventi e API) per facilitare lo sviluppo di
applicazioni web e per una più gestione più sofisticata dei moduli.
La specifica HTML5 è basata sull’HTML 4.01 rigoroso,
ma, a differenza della precedente raccomandazione HTML,
l’HTML5 non utilizza alcun DTD (Document Type Definition). Utilizza invece come base il Document Object Model
(DOM, “l’albero” formato dalla struttura di un documento)
piuttosto che un particolare insieme di regole sintattiche.
Inoltre, si differenzia dalle precedenti raccomandazioni per
il fatto che include istruzioni dettagliate su come i browser
devono gestire il markup malfatto.
2
La guida di riferimento dell’HTML5
W3C e WHATWG
Ci sono due organizzazione che gestiscono specifiche leggermente differenti della specifica HTML al momento della
scrittura di questo libro.
L’HTML5 è stato originariamente scritto dal Web Hypertext
Application Technology Working Group (WHATWG). Nel
2003 alcuni membri di Apple, Mozilla e Opera formarono
il WHATWG per favorire lo sviluppo dell’HTML in una
modo che fosse coerente con le pratiche reali di authoring
e con il comportamento dei browser. I loro documenti iniziali, Web Applications 1.0 e Web Forms 1.0, furono riuniti
nell’HTML5, che è ancora in fase di sviluppo sotto la guida
dell’editor del WHATWG, Ian Hickson. Hanno abbandonato l’aggiornamento del numero di versione ma continuano ad
aggiornare la specifica HTML nel sito whatwg.org.
In 2006, il World Wide Web Consortium (W3C) ha formato il proprio HTML5 Working Group basato sul lavoro del
WHATWG. Nel 2009, ha interrotto il lavoro sull’XHTML
2.0 per concentrarsi sullo sviluppo dell’HTML5. Il W3C
gestiste una versione “snapshot” (numerata) dell’HTML5
(www.w3.org/TR/html5/), che si prevede raggiunga lo stato d
raccomandazione nel 2014. HTML5.1 è anche in fase di sviluppo ed è previsto come raccomandazione nel 2016. I rilasci
periodi dell’HTML5.1 Editor’s Draft sono disponibili all’indirizzo www.w3.org/html/wg/drafts/html/master/.
Le differenze tra la Candidate Recommendation HTML5 e la
versione WHATWG sono minime. Le specifiche WHATWG
e HTML5.1 cambiano frequentemente ma le differenze, al
momento della scrittura di questo libro, comprendono:
Solo WHATWG
L’elemento data
Gli attributi globali itemid, itemprop, itemref, itemscope e
itemtype
Una panoramica dell’HTML5
3
L’attributo download e gli elementi a e area
L’attributo ping e gli elementi a e area
L’attributo srcset dell’elemento img
Solo WHATWG e HTML5.1 W3C
L’elemento menuitem
L’elemento dialog
L’elemento main
L’attributo globale inert
I gestori di eventi globali onclose e onsort
I gestori di eventi onfullscreenchange e onfullscreenerror
dell’elemento body
Solo HTML5 W3C
L’elemento command (sostituito da menuitem)
L’attributo media dell’elemento a
L’attributo pubdate dell’elemento time
I nuovi elementi semantici nell’HTML5
HTML5 include nuovi elementi semantici per contrassegnare il contenuto delle pagine. I dettagli per ciascuno di questi
elementi sono forniti più avanti nella sezione “L’elenco alfabetico degli elementi”:
article
aside
audio
bdi
canvas
command *
data **
datalist
4
figcaption
figure
footer
header
hgroup *
keygen
main ***
mark
output
progress
rp
rt
ruby
section
source
time
La guida di riferimento dell’HTML5
details
dialog ***
embed
menuitem ***
meter
nav
track
video
wbr
* rimosso da HTML5.1
** solo WHATWG
*** solo WHATWG e HTML5.1
I nuovi tipi di input
HTML5 introduce i seguenti nuovi tipi di controllo dell’input
(indicati come valori per l’attributo type dell’elemento input):
color, date, datetime, datetime-local, email, month, number, range, search, tel, time, url, week.
Gli elementi HTML 4.01 obsoleti
I seguenti elementi HTML 4.01 sono obsoleti nell’HTML5
poiché erano di presentazione, creavano confusione o erano
poco supportati: basefont, big, center, font, strike, tt, frame,
frameset, noframes, acronym, applet, isindex, dir.
Le API dell’HTML5
A causa della crescente domanda di contenuti interattivi per
le pagine web, HTML5 introduce diverse API (Application
Programming Interfaces) per la creazione di applicazioni web.
I compiti standardizzati delle API tradizionalmente richiedono plug-in proprietari o una programmazione personalizzata.
Alcuni dispongono di componenti di markup come audio, video e canvas; altri utilizzando JavaScript e/o componenti lato
server.
Le seguenti API fanno parte della specifica HTML5 del W3C:
•
Media API per la riproduzione di file audio e video con sincronizzazione multimediale e sottotitoli,
Una panoramica dell’HTML5
5
utilizzata con i nuovi elementi video e audio (http://
bit.ly/17EC8HT e http://bit.ly/13xEOBr)
•
TextTrack per l’aggiunta di sottotitoli sincronizzati
e didascalie per gli elementi video e audio (http://bit.
ly/16ZQm6S)
•
L’API Session History espone la cronologia del
browser (http://bit.ly/12iDo0Q)
•
L’API Offline Web Applications che permette di utilizzare offline le risorse web (http://bit.
ly/108K1mp)
•
L’API Editing include un nuovo attributo globale
contenteditable (http://bit.ly/11Tw0Tv)
•
L’API Drag and Drop include il nuovo attributo
draggable (http://bit.ly/18sdPhs)
Altre API collegate all’HTML5 che hanno specifiche separate, comprendono:
6
•
L’API Canvas per il disegno bidimensionale unitamente al nuovo elemento canvas (http://bit.ly/17ftf5F)
•
L’API Web Storage consente la memorizzazione di
dati nella cache del browser in modo che le applicazioni possono utilizzarli successivamente (http://bit.
ly/168vZjW)
•
L’API Geolocation permette agli utenti di condividere le informazioni di longitudine e latitudine in
modo che possano essere accessibili tramite script
nelle applicazioni web (http://bit.ly/168w5rQ)
•
L’API Web Workers permette che gli script siano
eseguiti in background per migliorare le prestazioni
(http://bit.ly/17ECwWI)
•
L’API Web Sockets mantiene una connessione aperta tra il client e il server in modo che i dati possano
essere trasferiti in tempo reale. Questo risulta molto
La guida di riferimento dell’HTML5
utile per i giochi multiplayer, la chat e gli stream live
di dati (http://bit.ly/13UfWUK).
•
L’API File consente il caricamento di file tramite un
modulo di input. Abilita l’anteprima del file caricato e permette il caricamento tramite drag-and-drop
(http://bit.ly/11sTkro).
Questa è solo una parte delle decine di API in sviluppo. Le
seguenti risorse forniscono elenchi approfonditi delle API disponibili e delle altre tecnologie web di facile utilizzo:
•
The Web Platform: Browser Technologies, gestita da
Mike Smith del W3C (platform.html5.org)
•
HTML5 Landscape Overview, di Erik Wilde (dret.
typepad.com/dretblog/html5-api-overview.html)
•
Web Platform Docs (docs.webplatform.org/wiki/apis)
La struttura di un documento HTML5
HTML5 dispone di una sola versione e non fa riferimento
a un DTD, ma i documenti HTML5 richiedono ancora una
dichiarazione semplificata DOCTYPE per attivare la modalità standard di rendering nei browser. Quella che segue è la
struttura minima di base raccomandata per un documento
HTML5:
<!DOCTYPE html>
<html>
<head>
<title>Titolo del documento</title>
</head>
<body>
Contenuto del documento . . .
</body>
</html>
I documenti HTML5 scritti nella sintassi XML non richiedono un DOCTYPE ma possono includere una dichiarazione XML. Essi dovrebbero essere serviti come tipo MIME
Una panoramica dell’HTML5
7
application/xhtml+xml o application/xml. Quello che segue è
un semplice documento HTML5 scritto nella sintassi XML:
<?xml version="1.0" encoding="UTF-8"?>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>Titolo del documento</title>
</head>
<body>
Contenuto del documento . . .
</body>
</html>
Il supporto dei browser per HTML5
La maggior parte dei nuovi elementi e attributi semantici di
HTML5 sono supportati dai moderni browser desktop e mobile ( Chrome, Safari, Opera, Firefox e Internet Explorer 9 +).
Per i browser che non supportano i nuovi elementi e le API ,
di solito è disponibile un JavaScript polyfill ( patch) che simula il supporto. Per un elenco completo dei polyfill esistenti,
vedere l’elenco di Modernizr all’indirizzo http://github.com/
Modernizr/Modernizr/wiki/HTML5-Cross-Browser-Polyfills.
Un esempio di un semplice polyfill è lo script “HTML5
Shiv” creato da Remy Sharp. Per fare in modo che un vecchio
browser come Internet Explorer 8 o precedente riconosca i
nuovi elementi HTML5 (e quindi renderli accessibili agli stili
e agli script), si può scrivere JavaScript per creare ciascun elemento nel DOM uno alla volta. Per esempio, questo comando
crea un elemento section:
document.createElement("section");
Lo script HTML5 Shiv, scritto da Remy Sharp, crea tutti i
nuovi elementi in una volta sola. Per utilizzarlo, puntare allo
script ospitato da Google nel seguente modo:
<!--[if lt IE 9]>
<script src="http://html5shiv.googlecode.com/svn/trunk/
html5-els.js"></script>
<![endif]-->
8
La guida di riferimento dell’HTML5
Le seguenti risorse sono molto utili per seguire il reale supporto e utilizzo dell’HTML5:
•
“When Can I Use...” : Un confronto del supporto dei
browser per HTML5, CSS3 e altre tecnologie per il
web gestito da Alexis Deveria.
•
HTML5 Please: Raccomanda quali funzionalità
HTML5 e CSS3 sono pronte per essere utilizzate e
quali fallback scegliere.
•
Wikipedia “Comparison of Layout Engines
(HTML5)”: contiene alcune tabelle che mostrano il
supporto per l’HTML5 da parte dei principali motori di browser.
•
HTML5 Readiness: Un’interessante visualizzazione
del crescente supporto per l’HTML5 e il CSS3 dal
2008 al presente.
La validazione dei documenti HTML5
È possibile verificare che i propri documenti HTML5 sono
validi, tramite il validator online disponibile all’indirizzo
validator.w3.org (il supporto HTML5 è in beta al momento
della scrittura di questo libro) o all’URL html5.validator.nu.
Gli attributi globali dell’HTML5
Alcuni attributi sono condivisi da tutti gli elementi dell’HTML5 e sono riferiti complessivamente come attributi
globali.
accesskey="carattere"
Assegna un tasto di accesso (una scorciatoia) che attiva
l’elemento o gli assegna il focus. Il valore è costituito
da un solo carattere. L’utente può accedere all’elemento
tramite la combinazione di tasti Alt-<tasto> (PC) o Ctrl<tasto> (Mac).
Gli attributi globali dell’HTML5
9
class="stringa di testo"
Assegna uno o più nomi di classificazione all’elemento.
contenteditable="true|false"
Non in HTML 4.01. Indica che l’utente può modificare
l’elemento. Questo attributo è già ben supportato dalle
versioni correnti dei browser.
contextmenu="id dell'elemento menu"
Non in HTML 4.01. Specifica un menu contestuale che
si applica all’elemento. Il menu contestuale deve essere
richiesto dall’utente, per esempio, con un clic destro.
dir="ltr|rtl|auto"
Specifica la direzione dell’elemento. ltr indica da sinistra
a destra; rtl indica da destra a sinistra e auto indica che la
direzione deve essere determinata programmaticamente.
draggable="true|false"
Non in HTML 4.01. Indica che l’elemento è trascinabile,
cioè che può essere spostato facendo clic su di esso e
mantenendo premuto il pulsante del mouse mentre lo si
trascina in un’altra posizione all’interno della finestra
del documento.
dropzone="copy|move|link|string:tipo della stringa di
testo|file:tipo di file"
Non in HTML 4.01. Indica cosa accade quando un dato
è trascinato su un elemento e quale tipo di dati esso può
accettare. copy comporta la copia del dato trascinato;
move sposta il dato in una nuova posizione e link crea un
collegamento al dato originale. Comprende string:text/
plain che gli consente di accettare qualsiasi stringa di
testo. L’attributo file: indica quando tipo di file viene
accettato (per esempio, file:image/png). È possibile fornire
sia l’azione sia il tipo di dato, per esempio dropzone="copy
string:text/plain".
hidden ( hidden="hidden" in XHTML)
Non in HTML 4.01. Evita che l’elemento e i suoi
discendenti possano essere renderizzati nello user agent
10
La guida di riferimento dell’HTML5
(browser). Qualsiasi script o modulo presente nelle
sezioni nascoste sarà ancora eseguito, ma non sarà
visibile all’utente.
id="stringa di testo"
Assegna un identificativo univoco all’elemento.
inert (inert="inert" in XHTML)
Solo WHATWG & HTML5.1. Indica che l’elemento
deve rimanere inerte, che significa che non può essere
selezionato, né cercato, né indirizzato dalle interazioni
dell’utente.
itemid="testo"
Solo WHATWG. Elemento del sistema di microdati
per incorporare dati leggibili dalla macchina; l’attributo
itemid
indica un identificatore universalmente
riconosciuto (come il codice ISBN per i libri). Viene
utilizzato assieme a itemtype nello stesso elemento che
contiene itemscope.
itemprop="testo"
Solo WHATWG. Elemento del sistema di microdati
per incorporare dati leggibili dalla macchina; l’attributo
itemprop fornisce il nome della proprietà. Il contenuto
dell’elemento fornisce il suo valore. Il valore può essere
un URL fornito dall’attributo href in un elemento a o
dall’attributo src in img.
itemref="elenco di ID separati da spazi"
Solo WHATWG. Elemento del sistema di microdati
per incorporare dati leggibili dalla macchina; l’attributo
itemref indica un elenco (per valori ID) di elementi
della pagina corrente da includere in un elemento
item. L’attributo itemref deve essere utilizzato nello
stesso elemento as the attributo itemscope che stabilisce
l’elemento.
itemscope
Solo WHATWG. Elemento del sistema di microdati
per incorporare dati leggibili dalla macchina; l’attributo
Gli attributi globali dell’HTML5
11
itemscope crea un nuovo item, un gruppo di proprietà
(coppie nome/valore).
itemtype="URL o etichetta DNS inversa "
Solo WHATWG. Elemento del sistema di microdati
per incorporare dati leggibili dalla macchina; l’attributo
itemtype indica un tipo di elemento standardizzato
identificato da un URL (per esempio, http://vocab.
example.net/book) o un’etichetta DNS inversa (per
esempio, com.example.person). L’attributo itemtype è
utilizzato nello stesso elemento che contiene l’attributo
itemscope.
lang
Specifica la lingua dell’elemento tramite il relativo codice
di lingua.
xml:lang
Solo XHTML. Specifica la lingua degli elementi nei
documenti XHTML.
spellcheck="true|false"
Non in HTML 4.01. Indica che l’elemento deve avere il
proprio controllo ortografico e sintattico.
style="stile CSS"
Associa le informazioni di stile all’elemento.
tabindex="numero"
Specifica la posizione dell’elemento corrente, nell’ordine
di tabulazione valido per il documento corrente. Il valore
deve essere compreso tra 0 e 32.767. Questo attributo
viene utilizzato per lo spostamento tra i collegamenti di
una pagina (o i campi di un modulo).
title="stringa di testo"
Fornisce un
sull’elemento.
titolo
o
informazioni
riepilogative
translate="yes|no"
Non in HTML 4.01. Indica se il contenuto di testo
dell’elemento e i valori dell’attributo devono essere
12
La guida di riferimento dell’HTML5
tradotti quando il documento viene localizzato. yes
è l’impostazione predefinita; no lascia il contenuto
inalterato.
I seguenti attributi non sono inclusi nell’elenco degli attributi
globali ma sono permessi nei documenti HTML5:
aria-*="stringa di testo o numero"
Non in HTML 4.01. Permette uno degli stati e proprietà
WAI-ARIA per migliorare l’accessibilità applicata a
un elemento, per esempio aria-hidden="true". Il valore
dell’attributo varia con la proprietà. Vedere www.w3.org/
TR/wai-aria/states_and_properties per informazioni
sugli stati e le proprietà supportate.
data-*="stringa di testo o dato numerico"
Non in HTML 4.01. Abilita gli autori a creare attributi
personalizzati collegati ai dati, per esempio, datalength, data-duration, data-speed, etc. in modo che i
dati non visibili possono essere incorporati utilizzando
un’applicazione o script personalizzati.
role="ruolo standardizzato WAI-ARIA"
Non in HTML 4.01. Assegna uno dei ruoli standardizzati
WAI-ARIA a un elemento per rendere più chiaro il suo
scopo agli utenti con disabilità. I ruoli di riferimento
(application, banner, complementary, contentinfo, form,
main, navigation e search) sono molto importanti nella
navigazione e nei dispositivi assistiti. Vedere www.
w3.org/TR/wai-aria/roles#role_definitions per un elenco
completo dei ruoli disponibili.
I gestori di eventi HTML5
A meno che non sia specificato diversamente, gli attributi dei
seguenti gestori di eventi possono essere specificati su qualsiasi elemento HTML:
Gli attributi globali dell’HTML5
13
onabort
onblur*
oncancel
oncanplay
oncanplaythrough
onchange
onclick
onclose **
oncontextmenu
oncuechange
ondblclick
ondrag
ondragend
ondragenter
ondragleave
ondragover
ondragstart
ondrop
ondurationchange
onemptied
onended
onerror*
onfocus*
oninput
oninvalid
onkeydown
onkeypress
onkeyup
onload*
onloadeddata
onloadedmetadata
onloadstart
onmousedown
onmousemove
onmouseout
onmouseover
onmouseup
onmousewheel
onpause
onplay
onplaying
onprogress
onratechange
onreset
onscroll
onseeked
onseeking
onselect
onshow
onsort **
onstalled
onsubmit
onsuspend
ontimeupdate
onvolumechange
onwaiting
onblur, onerror, onfocus e onload si
comportano in modo leggermente differente quando sono applicati all’elemento body poiché l’elemento body condivide questi gestori di eventi con la finestra
genitore.
* Il gestore di eventi per l’oggetto Window quando è utilizzato con
l’elemento body
** Solo WHATWG e HTML5.1. Non nella Candidate Recommendation HTML5.
14
La guida di riferimento dell’HTML5