10.06.2013 Views

XHTML Linguaggi di markup Linguaggi di markup Validazione

XHTML Linguaggi di markup Linguaggi di markup Validazione

XHTML Linguaggi di markup Linguaggi di markup Validazione

SHOW MORE
SHOW LESS

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

<strong>XHTML</strong><br />

Clau<strong>di</strong>o Fornaro<br />

Ver. 1.3<br />

<strong>Linguaggi</strong> <strong>di</strong> <strong>markup</strong><br />

Definiti dal W.W.W. Consortium (W3C)<br />

HTML – HyperText Markup Language:<br />

primo linguaggio <strong>di</strong> <strong>markup</strong> utilizzato<br />

nelle pagine HTML, mescola struttura<br />

del documento e presentazione grafica<br />

<strong>XHTML</strong> – eXtensible HTML:<br />

evoluzione del precedente per ovviare a<br />

sintassi ambigua, si basa su XML, quasi<br />

esclusivamente strutturale (elementi<br />

presentazionali in fogli stile separati)<br />

1<br />

3<br />

<strong>Linguaggi</strong> <strong>di</strong> <strong>markup</strong><br />

Un linguaggio <strong>di</strong> <strong>markup</strong> contiene<br />

blocchi <strong>di</strong> testo organizzati secondo il<br />

loro proprio significato logico e<br />

strutturale:<br />

intestazioni<br />

paragrafi<br />

liste numerate<br />

liste <strong>di</strong> definizioni<br />

etc.<br />

<strong>Validazione</strong><br />

Servizi gratuiti <strong>di</strong> validazione online:<br />

validator.w3.org<br />

www.htmlhelp.com/tools/validator<br />

2<br />

4


Il documento HTML<br />

Nel seguito HTML viene usato col<br />

significato <strong>di</strong> <strong>XHTML</strong> (salvo in<strong>di</strong>cazione)<br />

I file HTML e <strong>XHTML</strong> sono file <strong>di</strong> testo<br />

con estensione .HTML o .HTM<br />

Frammisti al testo vi sono dei TAG che<br />

delimitano porzioni <strong>di</strong> testo (ad esempio<br />

per in<strong>di</strong>care un titolo):<br />

tag <strong>di</strong> apertura: <br />

tag <strong>di</strong> chiusura: (non ha spazi)<br />

Tipi <strong>di</strong> elementi<br />

I tag delimitano blocchi <strong>di</strong> testo <strong>di</strong> tipo:<br />

Block-level: in<strong>di</strong>pendenti tra loro, es.<br />

titoli, paragrafi, liste, etc. in genere<br />

vengono visualizzati preceduti e seguiti da<br />

un ritorno a capo, es. , , <br />

Inline: sono interni a elementi block-level<br />

e non rompono il flusso del blocco stesso<br />

(non introducono ritorni a capo), vengono<br />

usati ad esempio per rendere in grassetto<br />

una parola, es. , <br />

5<br />

7<br />

Il documento HTML<br />

I tag <strong>di</strong> apertura possono contenere<br />

attributi che completano la<br />

specificazione del tag:<br />

<br />

Caratteri speciali<br />

Alcuni caratteri come < e & sono usati<br />

per costituire elementi <strong>di</strong> <strong>markup</strong> e non<br />

possono quin<strong>di</strong> essere utilizzati nel testo<br />

Al loro posto si utilizzano delle sequenze<br />

<strong>di</strong> escape appropriate, ad esempio per<br />

rappresentare il carattere < si può<br />

utilizzare la sequenza &lt; oppure il<br />

co<strong>di</strong>ce ASCII: &#060; mentre per & si<br />

può usare &amp; (notare il ; in fondo)<br />

6<br />

8


Regole <strong>di</strong> <strong>XHTML</strong><br />

Utilizzare solo caratteri minuscoli per<br />

scrivere i nomi dei tag e degli attributi<br />

(HTML invece non fa <strong>di</strong>stinzione)<br />

<br />

Una sequenza <strong>di</strong> white spaces (spazi,<br />

tab, ritorni a capo) viene visualizzata<br />

collassata ad un solo spazio<br />

Regole <strong>di</strong> <strong>XHTML</strong><br />

Gli attributi devono essere sempre tra<br />

virgolette (o apici) :<br />

<br />

Tutti gli attributi devono avere valori,<br />

quelli che non li hanno in HTML devono<br />

avere un valore uguale all’attributo:<br />

<br />

9<br />

11<br />

Regole <strong>di</strong> <strong>XHTML</strong><br />

Tutti i tag <strong>di</strong> apertura devono avere il<br />

corrispondente tag <strong>di</strong> chiusura<br />

I tag che non devono racchiudere testo<br />

devono avere la forma (con spazio):<br />

come ad es. <br />

I tag devono essere annidati<br />

correttamente:<br />

esempio<br />

Regole <strong>di</strong> <strong>XHTML</strong><br />

Nei commenti non si possono usare i<br />

doppi trattini perché usati nel tag stesso<br />

<br />

<br />

<br />

10<br />

12


Stile logico e fisico<br />

Stile logico: i tag identificano la<br />

struttura del documento<br />

testo grassetto<br />

Stile fisico: i tag cambiano l’aspetto <strong>di</strong><br />

alcune parti del documento<br />

testo grassetto<br />

In entrambi i casi in genere si ottiene<br />

un carattere grassetto, ma il secondo è<br />

poco espressivo del contenuto<br />

Il DOCTYPE<br />

In<strong>di</strong>ca ai browser come interpretare (e<br />

visualizzare) i documenti <strong>XHTML</strong>, quale<br />

modello <strong>di</strong> documento (DTD –<br />

Document Type Definition) è stato<br />

usato<br />

Usato dai servizi <strong>di</strong> validazione per<br />

conoscere a quale standard attenersi<br />

13<br />

15<br />

Struttura del documento HTML<br />

<br />

<br />

<br />

Titolo<br />

Altri elementi <strong>di</strong> head<br />

<br />

<br />

Corpo del documento<br />

<br />

<br />

Il DOCTYPE<br />

Transitional – più compatibile con il<br />

vecchio HTML, utile per il supporto <strong>di</strong><br />

browser datati, depreca ma non<br />

impe<strong>di</strong>sce l’uso <strong>di</strong> tag presentazionali e<br />

altri (es. attributo target nei link)<br />

Strict – più rigoroso, non tollera tag<br />

presentazionali, no per browser datati<br />

Frameset – permette l’uso <strong>di</strong> frame,<br />

stile anni ’90<br />

14<br />

16


Aspetti grafici <strong>di</strong> HTML<br />

Nel seguito, i tag vengono descritti nella<br />

loro forma standard e nel loro aspetto<br />

grafico tipico (peraltro variabile a<br />

seconda dei browser)<br />

Tutti gli aspetti relativi alla forma<br />

grafica sono mo<strong>di</strong>ficabili tramite i fogli<br />

stile CSS e attualmente questa è la<br />

scelta preferita anche quando non si<br />

usa un DTD Strict<br />

Il tag <br />

Il tag delimita l’inizio e la fine<br />

del documento HTML<br />

E’ l’elemento ra<strong>di</strong>ce del documento in<br />

quanto da esso <strong>di</strong>scendono tutti gli altri<br />

In<strong>di</strong>ca il namespace in uso e la lingua del<br />

documento e dell’ XML:<br />

<br />

<br />

17<br />

19<br />

Il DOCTYPE<br />

Si deve in<strong>di</strong>care all’inizio <strong>di</strong> ogni pagina<br />

(X)HTML<br />

Esempio <strong>di</strong> DOCTYPE <strong>XHTML</strong> 1.0<br />

Transitional:<br />

<br />

<br />

Il tag <br />

L’attributo opzionale lang specifica la<br />

lingua in cui è scritta la pagina<br />

<br />

Ha solo due elementi “<strong>di</strong>scendenti”:<br />

<br />

<br />

18<br />

20


Il tag <br />

Descrive il contenuto del documento:<br />

titolo <br />

metadati : parole chiave, l’autore,<br />

etc. utilizzabili per la classificazione (ad<br />

esempio dai motori <strong>di</strong> ricerca)<br />

script : programmi per rendere<br />

interattiva la pagina<br />

style sheet : istruzioni relative<br />

all’aspetto grafico<br />

altri tag, ad es. <br />

Il tag <br />

Tra gli altri tag in si deve<br />

in<strong>di</strong>care il Content Type che specifica il<br />

tipo del documento e il Character Set:<br />

<br />

<br />

Questo può essere sostituito da questa<br />

prima riga del documento HTML:<br />

<br />

<br />

ma in molti browser non funziona<br />

21<br />

23<br />

Il tag <br />

Dà un titolo alla pagina del documento<br />

Viene usato come titolo della finestra<br />

del browser<br />

Viene usato per farne un<br />

bookmark/favorite<br />

Viene usato dai motori <strong>di</strong> ricerca per<br />

l’in<strong>di</strong>cizzazione e come link alla pagina<br />

Non può essere formattato in alcun<br />

modo<br />

Il tag <br />

Racchiude il contenuto che ha una<br />

forma grafica nella pagina HTML:<br />

Titoli<br />

Paragrafi<br />

Immagini<br />

Liste<br />

…<br />

Ha parametri che si applicano all’intera<br />

pagina (trattati più avanti)<br />

22<br />

24


Attributi <strong>di</strong> base (core) dei tag<br />

Quasi tutti i tag hanno i seguenti attributi<br />

(quin<strong>di</strong> non verranno più citati):<br />

id: assegna un identificatore ad un elem.<br />

del documento (ad es. ad un paragrafo)<br />

class: in<strong>di</strong>ca a quale classe o classi<br />

appartiene un elemento (es. un paragrafo)<br />

style: permette <strong>di</strong> specificare regole CSS<br />

per la formattazione <strong>di</strong> un singolo elemento<br />

title: permette <strong>di</strong> aggiungere un testo<br />

descrittivo ad un tag (visualizzato come tip)<br />

Titoli<br />

NON si devono usare con il solo scopo<br />

<strong>di</strong> cambiare la <strong>di</strong>mensione del carattere,<br />

ma per il solo scopo <strong>di</strong> in<strong>di</strong>care un titolo<br />

In HTML e <strong>XHTML</strong> Transitional si può<br />

aggiungere l’attributo <strong>di</strong> allineamento<br />

align con valori: left, right,<br />

center, justify:<br />

Centrato<br />

Con DTD Strict si deve ricorrere ai CSS<br />

25<br />

27<br />

Titoli<br />

Sei livelli, il testo è incluso nei tag:<br />

Titolo <strong>di</strong> importanza massima<br />

…<br />

Titolo <strong>di</strong> importanza minima<br />

I livelli superiori hanno <strong>di</strong>mensioni<br />

maggiori dei livelli inferiori<br />

Sono <strong>di</strong> tipo block-level<br />

Allineati a sinistra<br />

Paragrafi<br />

Il testo viene sud<strong>di</strong>viso in paragrafi<br />

racchiusi dal tag :<br />

Inizio <strong>di</strong> un paragrafo…<br />

…fine del paragrafo<br />

E’ un elemento <strong>di</strong> tipo block-level<br />

Allineati a sinistra<br />

Attributo align<br />

Lascia spazio extra prima <strong>di</strong> ciascun<br />

paragrafo<br />

26<br />

28


Paragrafi<br />

Non è una buona idea (e tipicamente<br />

non funziona perché il browser li<br />

collassa) ottenere righe vuote con<br />

trucchetti quali<br />

<br />

Non ha senso che contenga sezioni <strong>di</strong><br />

tipo block-level come ad esempio liste e<br />

<br />

Esercizi<br />

Scrivere una pagina <strong>XHTML</strong> Transitional<br />

con DOCTYPE, , , il<br />

con il Content Type, i titoli con<br />

gli attributi align, paragrafi e ritorni a<br />

capo. Visualizzarla con IE e con Mozilla.<br />

Validarla su validator.w3.org<br />

Mo<strong>di</strong>ficare la pagina precedente in modo<br />

che sia validata come <strong>XHTML</strong> Strict<br />

29<br />

31<br />

Ritorni a capo<br />

Si utilizza il tag <br />

Per inserire più righe vuote si ripete:<br />

<br />

Ha un significato non strutturale<br />

Con DTD Strict il tag può<br />

comparire solo tra tag , ,<br />

, , o <br />

Divisioni <br />

Il testo può essere sud<strong>di</strong>viso in sezioni<br />

generiche dai tag e <br />

Salvo l’allineamento a sinistra, non ha<br />

alcuna forma grafica predefinita, viene<br />

usato per la formattazione me<strong>di</strong>ante CSS<br />

E’ un elemento <strong>di</strong> tipo block-level<br />

Attributo align<br />

equivale a<br />

(non strutturale, non Strict)<br />

30<br />

32


Divisioni <br />

Piccole porzioni <strong>di</strong> testo possono essere<br />

raggruppate tra e <br />

Non ha alcuna forma grafica<br />

predefinita, viene usato per la<br />

formattazione me<strong>di</strong>ante CSS<br />

E’ un elemento <strong>di</strong> tipo inline<br />

Citazioni<br />

Per citare una frase si possono usare i<br />

tag e <br />

E’ un elemento <strong>di</strong> tipo inline<br />

In genere viene visualizzato tra<br />

virgolette<br />

L’attributo cite può essere usato per<br />

una breve descrizione o la citazione<br />

della fonte (anche un sito Web)<br />

Non è supportato da molti browser (IE6)<br />

33<br />

35<br />

Citazioni<br />

Per citare un blocco <strong>di</strong> testo si usano i<br />

tag e <br />

E’ un elemento <strong>di</strong> tipo block-level<br />

In genere viene visualizzato con una<br />

indentazione a sinistra e a destra<br />

L’attributo cite può essere usato per<br />

una breve descrizione o la citazione<br />

della fonte (anche un sito Web)<br />

In<strong>di</strong>rizzi<br />

Blocco <strong>di</strong> testo strutturale contenente<br />

un in<strong>di</strong>rizzo (utile per i motori <strong>di</strong> ricerca)<br />

E’ racchiuso dai tag e<br />

<br />

E’ un elemento <strong>di</strong> tipo block-level<br />

Visivamente ha un carattere corsivo<br />

Non può contenere altri elementi <strong>di</strong> tipo<br />

block-level<br />

34<br />

36


In<strong>di</strong>rizzi<br />

<br />

Pinco Pallino<br />

Corso Duca 24<br />

Torino 10129<br />

+39-011-1234567<br />

pinco.pallino@polito.it<br />

<br />

Liste<br />

Tre tipi <strong>di</strong> liste:<br />

ordered <br />

unordered <br />

definition <br />

Sono strutture <strong>di</strong> tipo block-level e<br />

quin<strong>di</strong> non devono essere in paragrafi<br />

Gli elementi della lista possono anche<br />

contenere altri elementi block-level<br />

quali paragrafi e altre liste<br />

37<br />

39<br />

Testo pre-formattato<br />

Per non collassare spaziature multiple,<br />

TAB e ritorni a capo (es. co<strong>di</strong>ce <strong>di</strong><br />

programmazione) si racchiude il testo<br />

nei tag e <br />

Non è soggetto a word-wrapping e il<br />

browser inserisce delle scroll-bar<br />

In genere viene utilizzato un font<br />

monospaziato (es. Courier)<br />

Può contenere tag <strong>di</strong> mo<strong>di</strong>fica font quali<br />

e tag <strong>di</strong> tipo link <br />

Liste or<strong>di</strong>nate<br />

Liste in cui l’or<strong>di</strong>ne è importante<br />

Racchiuse tra i tag e <br />

L’or<strong>di</strong>namento viene rappresentato<br />

me<strong>di</strong>ante numerazione che inizia da 1<br />

Gli elementi sono racchiusi tra i tag<br />

e e sono indentati<br />

L’attributo compact richiede <strong>di</strong><br />

compattare visivamente la lista (spesso<br />

ignorato dai browser)<br />

38<br />

40


Liste or<strong>di</strong>nate<br />

L’attributo type specifica il tipo <strong>di</strong><br />

numerazione (valori possibili:<br />

1 – numerico, è il default<br />

a e A – lettere minuscole e maiuscole<br />

i e I – numeri romani minusc./maiusc.<br />

L’attributo type può anche essere<br />

inserito in e mo<strong>di</strong>fica il tipo <strong>di</strong><br />

numerazione della lista per quel solo<br />

item<br />

Liste or<strong>di</strong>nate<br />

<br />

Item 1<br />

<br />

Item a<br />

…<br />

Item z<br />

<br />

<br />

…<br />

Item n<br />

<br />

41<br />

43<br />

Liste or<strong>di</strong>nate<br />

L’attributo start specifica il valore<br />

iniziale della numerazione, deve essere<br />

un numero anche se il tipo è letterale<br />

L’attributo value può essere usato in<br />

per mo<strong>di</strong>ficare il valore della<br />

numerazione della lista da quel punto in<br />

avanti<br />

Liste or<strong>di</strong>nate<br />

42<br />

44


Liste non or<strong>di</strong>nate<br />

Liste in cui l’or<strong>di</strong>ne non è importante<br />

Racchiuse tra i tag e <br />

Gli elementi sono preceduti da un<br />

elemento grafico quale il pallino<br />

Gli elementi sono racchiusi tra i tag<br />

e e sono indentati<br />

L’attributo type specifica il tipo <strong>di</strong><br />

pallino (<strong>di</strong>sc, circle e square)<br />

type può anche essere inserito in <br />

Liste <strong>di</strong> definizioni<br />

Liste <strong>di</strong> descrizioni <strong>di</strong> termini<br />

Racchiuse tra i tag e <br />

Ogni elemento della lista è composto da<br />

almeno una delle seguenti parti:<br />

termine da definire tra e ,<br />

mostrato non indentato<br />

definizione del termine tra e ,<br />

mostrato indentato nella riga successiva<br />

45<br />

47<br />

Liste non or<strong>di</strong>nate<br />

Liste <strong>di</strong> definizioni<br />

46<br />

48


Esercizi<br />

Mo<strong>di</strong>ficare la pagina dell’esercizio<br />

precedente in modo da aggiungere<br />

Citazioni<br />

In<strong>di</strong>rizzi<br />

Testo pre-formattato<br />

Liste semplici<br />

Liste annidate<br />

Visualizzarla con altri browser<br />

Validarla<br />

Separatori orizzontali<br />

L’attributo align (left, right,<br />

center) in<strong>di</strong>ca la posizione della linea<br />

quando non è larga quanto la finestra<br />

<br />

L’attributo noshade elimina<br />

l’ombreggiatura<br />

Si preferisce utilizzare i fogli stile CSS<br />

49<br />

51<br />

Separatori orizzontali<br />

Linee orizzontali ombreggiate che<br />

separano visivamente e logicamente<br />

regioni <strong>di</strong> testo<br />

Si ottiene con il tag: <br />

E’ un elemento <strong>di</strong> tipo block-level<br />

Attributo size: spessore in pixel<br />

Attributo width: larghezza in pixel o in<br />

percentuale sulla finestra (default:<br />

100%)<br />

Separatori orizzontali<br />

50<br />

52


Elementi del testo<br />

Elementi inline, fisici (non logici, quin<strong>di</strong><br />

possibilmente da evitare):<br />

… Corsivo<br />

… Grassetto<br />

… Macchina da scrivere<br />

(Courier)<br />

… Sottolineato (no Strict)<br />

… Barrato (no Strict)<br />

… Barrato (noStrict)<br />

Elementi del testo<br />

53<br />

55<br />

Elementi del testo<br />

Elementi inline fisici (seguito):<br />

… Pe<strong>di</strong>ce<br />

… Esponente<br />

… Font più grosso <strong>di</strong> 1<br />

incremento<br />

… Font più piccolo <strong>di</strong> 1<br />

incremento<br />

Elementi del testo<br />

Elementi inline logici:<br />

… Abbreviazione (Sig.),<br />

graficamente normale<br />

… Acronimo,<br />

graficamente normale<br />

… Citazione, corsivo<br />

… Listato, Courier<br />

… Definizione, corsivo<br />

.. tasto <strong>di</strong> tastiera, Courier<br />

54<br />

56


Elementi del testo<br />

Elementi inline logici:<br />

… Quotazione, tra virgolette<br />

… Esempio, Courier<br />

… Enfatizzato, corsivo<br />

… Forte enfasi,<br />

grassetto<br />

… Variabile <strong>di</strong> programma,<br />

corsivo<br />

Caratteri speciali<br />

Alcuni caratteri con co<strong>di</strong>fica alternativa:<br />

&#034; &quot; " Virgolette<br />

&#039; &apos; ' Apostrofo<br />

&#038; &amp; & E commerciale<br />

&#060; &lt; < Minore <strong>di</strong><br />

&#062; &gt; > Maggiore <strong>di</strong><br />

&#153; &trade; Trademark<br />

&#160; &nbsp; Non-breakable space<br />

&#8364;&euro; € Euro<br />

57<br />

59<br />

Elementi del testo<br />

Caratteri speciali<br />

Alcuni caratteri accentati:<br />

&Agrave; À &agrave; à<br />

&eacute; é &egrave; è<br />

&igrave; ì &ograve; ò<br />

&ugrave; ù &brvbar; ¦<br />

&laquo; « &raquo; »<br />

&ordf; ª &ordm; º<br />

&middot; · &deg; °<br />

&sup2; ² &sup3; ³<br />

58<br />

60


Commenti<br />

Note non mostrate nella visualizzazione<br />

della pagina<br />

Racchiusi tra i tag <br />

Spesso usati per:<br />

introdurre note <strong>di</strong> copyright delle pagine<br />

(in )<br />

nascondere parti <strong>di</strong> co<strong>di</strong>ce non riconosciuta<br />

dai vecchi browser (ad esempio ,<br />

, etc.)<br />

Esercizi<br />

Mo<strong>di</strong>ficare la pagina dell’esercizio<br />

precedente in modo da aggiungere<br />

Separatori orizzontali<br />

Elementi fisici e logici del testo<br />

Caratteri speciali e accentati<br />

Commenti<br />

Visualizzarla con altri browser<br />

Validarla<br />

61<br />

63<br />

Commenti<br />

Esempio<br />

<br />

<br />

<br />

Un browser riconosce i CSS controlla<br />

l’interno dei commenti nei tag <br />

Gli hyperlink<br />

Puntatori uni<strong>di</strong>rezionali detti anchor a<br />

oggetti esterni al documento HTML<br />

L’oggetto (testo, immagine, …) racchiuso<br />

dai tag a è sensibile al click e<br />

viene visualizzato sottolineato e <strong>di</strong> colore<br />

blu (violetto se già visitato)<br />

L’attributo href specifica l’URL<br />

dell’oggetto a cui si riferisce (target)<br />

W3C<br />

62<br />

64


Gli hyperlink<br />

L’URL target può essere assoluto:<br />

http://www.w3.org<br />

oppure relativo alla posizione sul server<br />

del file HTML che contiene il link:<br />

altrofile.html<br />

../images/bullet.gif<br />

Gli hyperlink<br />

I colori dei link possono essere<br />

mo<strong>di</strong>ficati me<strong>di</strong>ante i seguenti attributi<br />

del tag (ma è preferibile usare<br />

i fogli stile CSS che permettono <strong>di</strong><br />

mo<strong>di</strong>ficare anche il colore dei link<br />

quando il mouse vi è sopra):<br />

link: colore dei link non visitati<br />

vlink: colore dei link visitati<br />

alink: colore dei link quando si fa click<br />

65<br />

67<br />

Gli hyperlink<br />

Il tag nella sezione <br />

può essere usato per specificare un URL<br />

assoluto da usare per completare un<br />

URL relativo invece dell’URL della pagina<br />

corrente<br />

<br />

Gli hyperlink<br />

L’attributo target specifica dove aprire<br />

la pagina o l’oggetto riferito da href<br />

Entrambi gli attributi id e name <strong>di</strong> <br />

definiscono un fragment identifier: un<br />

identificatore <strong>di</strong> una posizione nel testo,<br />

in questo caso non si in<strong>di</strong>ca href e non<br />

si ha una resa grafica particolare (in<br />

genere il contenuto è vuoto)<br />

<br />

66<br />

68


Gli hyperlink<br />

Un fragment viene utilizzato preceduto<br />

dal carattere #: #top<br />

Un fragment permette ad un anchor <strong>di</strong><br />

saltare <strong>di</strong>rettamente alla visualizzazione<br />

del paragrafo che lo contiene:<br />

Back to top<br />

Il fragment in<strong>di</strong>cato in href può essere<br />

relativo ad un altro documento:<br />

<br />

Go to the top of cnn<br />

Gli hyperlink<br />

Attributo title: permette <strong>di</strong> associare<br />

qualche informazione al target link, si<br />

presenta sotto forma <strong>di</strong> tooltip<br />

Attributo accesskey: associa il link ad<br />

uno shortcut da tastiera, al posto <strong>di</strong> fare<br />

click sul testo si premono i tasti<br />

ALT+quello_specificato:<br />

Yahoo!<br />

Alcuni tasti sono riservati: F, E, V, T, H…<br />

69<br />

71<br />

Gli hyperlink<br />

L’attributo id permette <strong>di</strong> definire un<br />

anchor in qualsiasi tag:<br />

Inizio<br />

Se il tag deve essere usato sia<br />

come anchor sia come fragment,<br />

oppure se si vuole applicare al testo su<br />

cui fare click una formattazione tramite<br />

regola CSS, allora possono esserci sia<br />

href sia id/name (meglio entrambi)<br />

Gli hyperlink<br />

Attributo target: permette <strong>di</strong> in<strong>di</strong>care<br />

il nome <strong>di</strong> quale finestra o frame il link<br />

deve essere aperto, <strong>di</strong> default<br />

Oltre ai nomi delle finestre si possono<br />

usare:<br />

_blank (finestra nuova)<br />

_self (sé stessa)<br />

_parent e _top (solo con i frame)<br />

70<br />

72


Gli hyperlink<br />

Un’immagine può essere associata ad<br />

un anchor e appare riquadrata da un<br />

bordo (le immagini sono trattate più<br />

avanti)<br />

<br />

<br />

<br />

border="0" elimina il bordo<br />

Caratteri<br />

Il testo tra i tag e <br />

viene visualizzato mo<strong>di</strong>ficato in base<br />

agli argomenti:<br />

color: colore del testo<br />

size: <strong>di</strong>mensione del testo:<br />

valore da 1 (piccolo) a 7 (grande)<br />

valore incrementale (+/–1, +/–6) rispetto al<br />

valore corrente, il valore iniziale è 3<br />

face: nomi dei font da utilizzare in or<strong>di</strong>ne<br />

<strong>di</strong> preferenza (se il browser non li trova)<br />

73<br />

75<br />

Gli hyperlink<br />

Attenzione: se tra la chiusura del tag<br />

e il tag c’è un white space<br />

(spazio, tab, ritorno a capo), si forma<br />

una piccola riga in basso a destra<br />

dell’immagine detta “tick” che è in<strong>di</strong>ce<br />

<strong>di</strong> poca cura dei dettagli: eliminare il<br />

white space<br />

Caratteri<br />

Esempio<br />

<br />

Testo mo<strong>di</strong>ficato<br />

Testo non mo<strong>di</strong>ficato<br />

Se il browser non trova nessuno dei<br />

fonti elencati, usa un font <strong>di</strong> default (in<br />

genere tipo Times)<br />

74<br />

76


Caratteri<br />

Per cambiare tutto il font <strong>di</strong> un<br />

documento si può usare il tag<br />

nella sezione <br />

Attributi:<br />

color<br />

size<br />

face<br />

Colori<br />

Attributo color in quasi tutti i tag<br />

Attributo text nel tag per il<br />

colore del testo della pagina<br />

Attributo bgcolor nel tag per<br />

il colore <strong>di</strong> sfondo della pagina<br />

Attributi link, vlink e alink nel tag<br />

per il colore dei link (ve<strong>di</strong> link)<br />

77<br />

79<br />

Colori<br />

E’ possibile cambiare i colori <strong>di</strong> quasi<br />

ogni elemento grafico<br />

Modalità duramente contrastata a<br />

favore dei CSS<br />

I colori si possono esprimere me<strong>di</strong>ante i<br />

loro nomi o me<strong>di</strong>ante i co<strong>di</strong>ci RGB in<br />

esadecimale preceduti da #: #FFAA22<br />

I co<strong>di</strong>ci esadecimali del tipo xxyyzz si<br />

possono abbreviare in xyz: #FA2<br />

Colori<br />

Principali colori<br />

Black (#000000)<br />

Green (#008000)<br />

Silver (#C0C0C0)<br />

Lime (#00FF00)<br />

Gray (#808080)<br />

Olive (#808000)<br />

White (#FFFFFF)<br />

Yellow (#FFFF00)<br />

Maroon (#800000)<br />

Navy (#000080)<br />

Red (#FF0000)<br />

Blue (#0000FF)<br />

Purple (#800080)<br />

Teal (#008080)<br />

Fuchsia (#FF00FF)<br />

Aqua (#00FFFF)<br />

78<br />

80


Esercizi<br />

Mo<strong>di</strong>ficare la pagina dell’esercizio<br />

precedente in modo da aggiungere<br />

Hyperlink<br />

Caratteri<br />

Colori<br />

Visualizzarla con altri browser<br />

Validarla<br />

Immagini<br />

Per inserire un immagine in un punto<br />

della pagina HTML si usa il tag <br />

E’ un elemento <strong>di</strong> tipo inline (!!!)<br />

L’attributo src identifica l’URL (assoluto<br />

o relativo) da cui prelevare l’immagine<br />

<br />

Le immagini sono in genere raccolte in<br />

una o più <strong>di</strong>rectory (es. images)<br />

81<br />

83<br />

Immagini<br />

Gli unici due formati supportati dallo<br />

standard sono:<br />

GIF (8 bit, con trasparenza, animate)<br />

JPEG (24 bit, resa fotografica)<br />

Altri formati non standard supportati da<br />

molti browser:<br />

BMP<br />

PNG (tipo GIF)<br />

molti altri me<strong>di</strong>ante plug-in<br />

Immagini<br />

L’attributo alt fornisce un testo<br />

alternativo alla visualizzazione (per<br />

browser non grafici) o quando manca<br />

l’immagine o quando il cursore è sopra<br />

l’immagine (tip)<br />

<br />

Poiché alcuni browser (FF) usano<br />

title per il tip, utilizzare sia alt (per<br />

IE) sia title (che ha priorità su alt)<br />

Se l’immagine è solo decorativa si usa<br />

un attributo vuoto (alt="")<br />

82<br />

84


Immagini<br />

L’attributo align può essere usato per<br />

allineare l’immagine con il testo:<br />

top, middle, bottom: allineano la riga<br />

precedente e quella successiva del testo<br />

top top top top top top top top<br />

con l’immagine<br />

right, left: spostano l’immagine nella<br />

<strong>di</strong>rezione in<strong>di</strong>cata, il testo seguente<br />

avvolge l’immagine dall’altra parte<br />

Immagini<br />

middle middle<br />

bottom bottom<br />

middle middle<br />

bottom bottom<br />

Per interrompere il flusso del testo che<br />

avvolge l’immagine (quin<strong>di</strong> per andare a<br />

capo sotto l’immagine), si usa il tag<br />

con l’attributo clear avente<br />

valori left, right, both o none:<br />

<br />

85<br />

87<br />

Immagini<br />

Immagini<br />

Qui c’è un<br />

<br />

86<br />

88


Immagini<br />

In un’immagine avente attributo align<br />

con valori left o right si possono<br />

aggiungere gli attributi:<br />

hspace per aggiungere un margine (in<br />

pixel) a destra e a sinistra dell’immagine<br />

vspace per aggiungere un margine (in<br />

pixel) sopra e sotto l’immagine<br />

Immagini<br />

L’immagine viene normalmente<br />

mostrata nelle sue <strong>di</strong>mensioni originali<br />

Si possono dare le <strong>di</strong>mensioni con gli<br />

attributi width e height (in pixel o %<br />

sulla larghezza del contenitore-finestra)<br />

Le <strong>di</strong>mensioni esplicite:<br />

ri<strong>di</strong>mensionano l’immagine (se necessario)<br />

permettono al browser <strong>di</strong> mostrare la<br />

pagina prima che tutte le immagini<br />

vengano scaricate dal server (pre-layout)<br />

89<br />

91<br />

Immagini<br />

Immagini<br />

Un’immagine all’interno <strong>di</strong> tag <br />

<strong>di</strong>venta un link (ossia cliccabile)<br />

Si può impostare il bordo dell’immagine<br />

a 0 con l’attributo border<br />

<br />

<br />

90<br />

92


Immagine <strong>di</strong> sfondo<br />

Per aggiungere una immagine <strong>di</strong> sfondo<br />

ad una pagina HTML si utilizza<br />

l’attributo background nel tag <br />

riferendolo ad un URL assoluto o<br />

relativo contenente un’immagine<br />

L’immagine viene ripetuta<br />

orizzontalmente e verticalmente (tiled )<br />

Image map<br />

Immagine contenente più punti sensibili<br />

al click, corrispondenti a <strong>di</strong>versi URL<br />

Due tipi:<br />

server-side image maps<br />

client-side image maps<br />

93<br />

95<br />

Esercizi<br />

Mo<strong>di</strong>ficare la pagina dell’esercizio<br />

precedente in modo da aggiungere<br />

Immagini <strong>di</strong> vario tipo<br />

Uno sfondo alla pagina<br />

Visualizzarla con altri browser<br />

Validarla<br />

Image map<br />

Nelle server-side IM:<br />

1. L’utente fa click in un punto dell’immagine<br />

2. Il browser manda al server Web le<br />

coor<strong>di</strong>nate del punto su cui si è fatto il click<br />

3. Il server determina quale URL sia associato<br />

a quelle coor<strong>di</strong>nate e lo manda al browser<br />

4. Il browser richiede l’URL che il server gli ha<br />

mandato<br />

Poco usate, lente, poco user-feedback<br />

(mostra solo le coor<strong>di</strong>nate x e y nella<br />

barra <strong>di</strong> status)<br />

94<br />

96


Image map<br />

Nelle client-side IM il browser:<br />

carica l’immagine,<br />

carica il file con la descrizione delle zone<br />

sensibili dell’immagine<br />

associa le zone agli URL corrispondenti<br />

Veloce: il browser conosce gli URL<br />

User-feedback: l’URL <strong>di</strong> destinazione<br />

viene mostrato quando il mouse è sopra<br />

Lo sviluppo e test non richiede un server<br />

Image map<br />

Client-side IM<br />

L’immagine viene dotata<br />

dell’attributo usemap che identifica un<br />

tag che definisce le zone attive<br />

<br />

L’immagine <strong>di</strong>venta un link nonostante<br />

non ci sia alcun tag <br />

Conviene impostare border a 0<br />

97<br />

99<br />

Image map<br />

Server-side IM<br />

Un tag con attributo href punta al<br />

file delle zone sul server (o ad un cgi)<br />

Il tag contiene un tag con<br />

attributo vuoto ismap<br />

<br />

<br />

<br />

Image map<br />

Client-side IM<br />

Il tag può essere collocato in<br />

qualsiasi punto del documento (spesso<br />

alla fine, documentare con commenti!) e<br />

può essere anche in un file separato<br />

E’ necessario che abbia l’attributo<br />

name e/o id (meglio entrambi) perché<br />

possa essere referenziato dall’attributo<br />

usemap <strong>di</strong> <br />

98<br />

100


Image map<br />

Client-side IM<br />

I tag e racchiudono le<br />

forme geometriche che definiscono le<br />

zone attive dell’immagine<br />

Ogni forma geometrica è descritta da<br />

un tag <br />

Image map<br />

Client-side IM<br />

Valori per shape e relative coords:<br />

rect: rettangolo (default), coords<br />

contiene 4 valori: gli angoli top-left e<br />

bottom-right<br />

circle: cerchio, coords contiene 3<br />

valori: il centro e il raggio<br />

poly: poligono qualsiasi, coords<br />

contiene 2xn valori: ciascuno è un angolo<br />

default: la restante area dell’img (no IE)<br />

101<br />

103<br />

Image map<br />

Client-side IM<br />

Attributi principali <strong>di</strong> :<br />

href: URL associato alla zona<br />

shape: forma della zona (rect, circle,<br />

poly)<br />

coords: coor<strong>di</strong>nate x,y dei punti che<br />

definiscono la shape, separati da virgole, il<br />

punto 0,0 è il top-left, x e y possono essere<br />

in pixel o in percentuale su <strong>di</strong>m. immagine<br />

alt: testo alternativo per quella zona<br />

Image map<br />

Client-side IM<br />

<br />

<br />

<br />


Image map<br />

Client-side IM<br />

Altri attributi principali <strong>di</strong> :<br />

105<br />

target: frame o finestra in cui aprire il link<br />

nohref: in<strong>di</strong>ca che la zona non deve essere<br />

attiva (es. all’interno <strong>di</strong> una zona attiva)<br />

<br />

<br />

<br />

<br />

<br />

Tabelle<br />

Griglie rettangolari <strong>di</strong> celle organizzate<br />

in righe e colonne<br />

Utilizzate nella modalità Transitional<br />

anche per <strong>di</strong>sporre gli elementi <strong>di</strong> una<br />

pagina (layout), deprecato<br />

Strict non ne accetta l’uso per il layout,<br />

ma solo per la presentazione <strong>di</strong> dati<br />

tabulari<br />

107<br />

Esercizi<br />

Mo<strong>di</strong>ficare la pagina dell’esercizio<br />

precedente in modo da aggiungere<br />

Imagemap server-side (non essendoci il<br />

server a rispondere, mostra solo le<br />

coor<strong>di</strong>nate del punto su cui è)<br />

Imagemap client-side (per stabilire le<br />

coor<strong>di</strong>nate, utilizzare temporanemanente<br />

un’Imagemap server-side identica)<br />

Visualizzarla con altri browser<br />

Validarla<br />

Tabelle<br />

Ogni tabella è racchiusa nei tag<br />

e <br />

E’ un elemento <strong>di</strong> tipo block-level<br />

Ogni riga è racchiusa nei tag e<br />

<br />

Ogni riga contiene celle <strong>di</strong> tipo:<br />

intestazione: racchiuse da tag e<br />

, centrate, in grassetto<br />

dato: racchiuse da tag e ,<br />

allineate a sinistra, font normale<br />

106<br />

108


Tabelle<br />

109<br />

La <strong>di</strong>mensione delle celle <strong>di</strong>pende dal<br />

contenuto<br />

Ogni cella può contenere anche elementi<br />

<strong>di</strong> tipo block-level (e altre tabelle)<br />

I tag e <br />

aggiungono una <strong>di</strong>dascalia alla tabella,<br />

hanno attributo align con valori top,<br />

bottom, left, right<br />

L’attributo border <strong>di</strong> in<strong>di</strong>ca lo<br />

spessore delle linee<br />

Tabelle<br />

Alcuni browser non mostrano i contorni<br />

<strong>di</strong> una cella se questa non contiene<br />

valori, per mostrarla correttamente si<br />

può utilizzare &nbsp;<br />

111<br />

Tabelle<br />

<br />

Basic Fruit Comparison<br />

Chart<br />

FruitColor<br />

AppleRed<br />

KiwiGreen<br />

WatermelonPink<br />

<br />

Tabelle<br />

Per far occupare ad una cella lo spazio<br />

<strong>di</strong> più celle, si aggiunge nel tag o<br />

corrispondente alla cella da<br />

espandere l’attributo:<br />

rowspan="n_righe" per estendersi in<br />

verticale su un n. <strong>di</strong> righe pari a n_righe<br />

colspan="n_col" per estendersi in<br />

orizzontale su un n. <strong>di</strong> colonne pari a n_col<br />

110<br />

112


Tabelle<br />

<br />

<br />

Element 1<br />

Element 2<br />

<br />

<br />

Element 3<br />

<br />

<br />

Tabelle<br />

Dove è sbagliato il seguente co<strong>di</strong>ce?<br />

<br />

<br />

Element 1<br />

Element 2<br />

Element 3<br />

<br />

<br />

Element 4<br />

Element 5<br />

Element 6<br />

<br />

<br />

113<br />

115<br />

Tabelle<br />

<br />

<br />

Element 1<br />

<br />

<br />

Element 2<br />

Element 3<br />

Element 4<br />

<br />

<br />

Esercizi<br />

Riprodurre la seguente tabella 4x4<br />

(introducendo testo per le celle)<br />

114<br />

116


Tabelle<br />

Attributo width per:<br />

table: <strong>di</strong>mensione della tabella in pixel o<br />

in percentuale<br />

th e td: <strong>di</strong>mensione della cella in pixel<br />

Tabelle<br />

Allineamento testo nelle singole celle,<br />

attributi <strong>di</strong> e :<br />

align: allineamento orizzontale (left,<br />

right, center, justify, char)<br />

valign: allineamento verticale (top,<br />

middle, bottom, baseline)<br />

117<br />

119<br />

Tabelle<br />

Spazio tra le celle: attributo<br />

cellspacing in , in pixel o %<br />

Spazio tra le linee delle celle e il<br />

contenuto: attributo cellpad<strong>di</strong>ng in<br />

, in pixel<br />

Tabelle<br />

<br />

<br />

Left<br />

Center<br />

Right<br />

<br />

<br />

Top<br />

Middle<br />

Bottom<br />

<br />

<br />

118<br />

120


Tabelle<br />

L’attributo bgcolor si può applicare a:<br />

, , e <br />

Lo spazio lasciato da cellspacing ha<br />

in genere il colore dello sfondo<br />

L’attributo background si può<br />

applicare a: , e <br />

Tabelle<br />

Esercizi. Riprodurre l’aspetto delle<br />

seguenti pagine (centrate)<br />

121<br />

123<br />

Tabelle<br />

L’attributo align in posiziona<br />

la tabella nella pagina<br />

I valori right e left fanno avvolgere<br />

la tabella (<strong>di</strong>dascalia inclusa) dal testo<br />

che segue ( per<br />

ripristinare il normale flusso)<br />

Tabelle<br />

Soluzioni<br />

<br />

<br />

Hea<strong>di</strong>ng<br />

<br />

…<br />

122<br />

124


Tabelle<br />

Soluzioni<br />

<br />

<br />

DemoSite<br />

<br />

<br />

Link 1<br />

...<br />

<br />

<br />

<br />

Page Hea<strong>di</strong>ng<br />

<br />

Lorem ipsum dolor ...<br />

Tabelle<br />

Design fluido (stretchable)<br />

Si ri<strong>di</strong>mensiona per occupare tutta la<br />

finestra del browser<br />

Possibile grazie alle tabelle (meglio se si<br />

usano i CSS)<br />

Si definiscono le <strong>di</strong>mensioni <strong>di</strong> solo<br />

alcune parti della tabella<br />

125<br />

127<br />

Esercizi<br />

Top-Left-Bottom “TLB” Layout<br />

Tabelle<br />

<br />

<br />

&nbsp;<br />

Barra sinist.<br />

…<br />

Contenuto principale<br />

Barra dest.<br />

&nbsp;<br />

<br />

<br />

126<br />

128


Tabelle<br />

Esempio ottenuto con tabelle<br />

Tabelle<br />

Suggerimenti:<br />

Indentazione per leggibilità<br />

Usare sempre con gli attributi<br />

border, cellpad<strong>di</strong>ng e cellspacing<br />

Verificare che le somme dei width <strong>di</strong><br />

e sia pari a quella <strong>di</strong> <br />

Non annidare troppe tabelle (co<strong>di</strong>ce<br />

complesso e più lento da visualizzare)<br />

Commentare le parti delle tabelle e le<br />

tabelle stesse quando sono annidate<br />

129<br />

131<br />

Tabelle<br />

Photoshop e altri lo producono automat.<br />

Tabelle<br />

La struttura logica della tabella può<br />

opzionalmente essere evidenziata<br />

sud<strong>di</strong>videndola in sezioni:<br />

intestazione: tra e ,<br />

opzionale e unica<br />

corpo: tra e , possono<br />

esserci più sezioni nella stessa<br />

tabella<br />

terminazione: tra e ,<br />

opzionale e unica<br />

130<br />

132


Tabelle<br />

Per definire le caratteristiche relative a<br />

gruppi <strong>di</strong> colonne della tabella, prima <strong>di</strong><br />

si raggruppano le colonne<br />

stesse con i tag <br />

Ciascuna colonna viene identificata da<br />

un tag generico , nell’or<strong>di</strong>ne<br />

da sinistra a destra<br />

Tabelle<br />

133<br />

L’attributo rules <strong>di</strong> permette<br />

<strong>di</strong> specificare quali linee debbano essere<br />

<strong>di</strong>segnate intorno alle celle/colonne/righe<br />

(none, groups, rows, cols, all)<br />

L’attributo frames <strong>di</strong> <br />

permette <strong>di</strong> specificare quali linee<br />

debbano essere <strong>di</strong>segnate intorno alla<br />

tabella (box, above, below, hsides,<br />

vsides, lhs, rhs, void, border)<br />

135<br />

Tabelle<br />

Esempio<br />

gruppo 1<br />

colonna 1<br />

<br />

gruppo 2<br />

colonna 2<br />

colonna 3<br />

<br />

Tabelle<br />

Esercizio<br />

Riprodurre la seguente tabella<br />

134<br />

136


Tabelle<br />

Soluzione<br />

<br />

Fun with Food<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

…<br />

I frame<br />

137<br />

Un documento HTML visualizzare nella<br />

stessa finestra più pannelli (frame)<br />

in<strong>di</strong>pendenti, ma collegabili<br />

Ogni pannello può contenere documenti<br />

<strong>di</strong>versi e avere scrollbar<br />

Attualmente non più molto usati per<br />

alcuni problemi <strong>di</strong> “usability”<br />

Vantaggio: poter operare su un panel e<br />

tenerne un altro aperto in consultazione<br />

139<br />

Tabelle<br />

Esercizio<br />

Riprodurre le tabelle<br />

I frame<br />

138<br />

140


I frame<br />

Il documento principale:<br />

non contiene un tag , ma una<br />

coppia e <br />

141<br />

contiene soltanto l’in<strong>di</strong>cazione e la<br />

<strong>di</strong>sposizione dei singoli frame<br />

ha un DTD <strong>di</strong> tipo particolare:<br />

<br />

I frame<br />

Per separare la finestra del browser in<br />

porzioni orizzontali:<br />

<br />

essendo valori un elenco separato da<br />

virgole delle percentuali <strong>di</strong> spazio da<br />

assegnare a ciascun frame<br />

<br />

143<br />

I frame<br />

Per separare la finestra del browser in<br />

porzioni verticali:<br />

<br />

essendo valori un elenco separato da<br />

virgole delle percentuali <strong>di</strong> spazio da<br />

assegnare a ciascun frame<br />

<br />

I frame<br />

All’interno dei tag , vari tag<br />

specificano i documenti da<br />

visualizzare in ciascun frame<br />

Attributi <strong>di</strong> :<br />

src: URL da visualizzare nel frame<br />

name: nome del frame (per vecchi browser)<br />

id: identificatore del frame (nuovi browser)<br />

(sia name sia id allo stesso valore)<br />

frameborder: spessore del bordo<br />

142<br />

144


I frame<br />

Altri attributi <strong>di</strong> :<br />

scrolling: presenza o no <strong>di</strong> scrollbar,<br />

valori: auto (default), yes, no<br />

145<br />

noresize="noresize": impe<strong>di</strong>sce che il<br />

frame possa essere ri<strong>di</strong>mensionato<br />

marginheight: <strong>di</strong>stanza del contenuto dai<br />

bor<strong>di</strong> superiore e inferiore<br />

marginwidth: <strong>di</strong>stanza del contenuto dai<br />

bor<strong>di</strong> sinistro e destro<br />

I frame<br />

<br />

<br />

Example<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

Yahoo<br />

Microsoft<br />

<br />

<br />

<br />

<br />

147<br />

I frame<br />

Per supportare i browser che non<br />

supportano i frame (vecchi browser, ma<br />

anche PDA, cellulari, etc.), dopo i<br />

e prima <strong>di</strong> <br />

si può aggiungere una sezione tra i tag<br />

e <br />

Qui viene riportato il co<strong>di</strong>ce HTML (da<br />

a ) da visualizzare in<br />

alternativa<br />

I frame<br />

Per aprire un link presente in un frame<br />

in un altro frame:<br />

dare un name e un id al frame destinatario<br />

aggiungere nel tag l’attributo target<br />

con il nome/id del frame destinatari<br />

Esempio<br />

<br />

146<br />

148


I frame<br />

Valori predefiniti <strong>di</strong> target:<br />

_blank: carica la pagina in una nuova<br />

finestra<br />

_self: carica la pagine nel frame corrente<br />

_top: elimina la struttura a frame della<br />

finestra e vi carica la pagina intera<br />

_parent: come _top ma limitato alla<br />

finestra genitore, nel caso <strong>di</strong> frame<br />

annidati<br />

I frame<br />

149<br />

I frameset posso essere annidati:<br />

<br />

<br />

<br />

<br />

<br />

<br />

<br />

151<br />

I frame<br />

Si possono usare i frame per creare<br />

layout come con le tabelle<br />

I valori per gli attributi cols e rows<br />

possono essere:<br />

valori percentuali<br />

valori in pixel<br />

l’asterisco * (lo spazio che resta)<br />

I frame<br />

Riprodurre la seguente schermata, a<br />

sinistra un elenco <strong>di</strong> link a motori <strong>di</strong><br />

ricerca, a destra un titolo fisso e sotto lo<br />

spazio dove vengono aperte le pagine<br />

150<br />

152


I frame<br />

Riprodurre la seguente schermata, i<br />

frame laterali sono larghi 100 pixel,<br />

quello superiore è alto 100 pixel, tutti i<br />

frame devono avere un contenuto<br />

I frame<br />

Attributi <strong>di</strong> :<br />

width: larghezza in pixel o percentuale<br />

height: altezza in pixel o percentuale<br />

src: URL da cui prelevare il contenuto<br />

align: allineamento (come )<br />

marginheight: <strong>di</strong>stanza del contenuto<br />

dai bor<strong>di</strong> superiore e inferiore<br />

marginwidth: <strong>di</strong>stanza del contenuto dai<br />

bor<strong>di</strong> sinistro e destro<br />

153<br />

155<br />

I frame<br />

Frame flottanti o “inline frame”<br />

Si comportano come ogni altro oggetto<br />

oggetto inline (il testo lo avvolge come<br />

un’immagine)<br />

Sono interni ad un documento con un<br />

normale (DTD non Frameset)<br />

Racchiuso tra i tag e<br />

(notare che ha il tag <strong>di</strong><br />

chiusura)<br />

I frame<br />

All’interno dei tag e<br />

si inserisce testo HTML da<br />

visualizzare se il browser non supporta<br />

gli Iframe ( implicito)<br />

L’attributo target <strong>di</strong> può riferirsi<br />

ad un Iframe<br />

154<br />

156


I frame<br />

Multime<strong>di</strong>a in Flash<br />

157<br />

Tag non standard, ma<br />

utilizzato da quasi tutti i browser<br />

<br />

<br />

<br />

<br />

<br />

159<br />

I frame<br />

Esercizio<br />

Google Maps fornisce il co<strong>di</strong>ce HTML<br />

per includere in un Iframe la mappa <strong>di</strong><br />

un luogo, provare a inserire una in una<br />

propria pagine HTML.<br />

Multime<strong>di</strong>a in Flash<br />

Tag standard, ma non<br />

sempre funzionante correttamente<br />

<br />

<br />

<br />

<br />

<br />

158<br />

160


Multime<strong>di</strong>a in Flash<br />

161<br />

Tag standard, qui utilizzato<br />

con gli ActiveX <strong>di</strong> Microsoft<br />

<br />

<br />

<br />

<br />

<br />

I form<br />

Permettono <strong>di</strong> ricevere input dall’utente<br />

Le informazioni vengono inviate al<br />

server web che:<br />

le fa elaborare ad una applicazione<br />

pre<strong>di</strong>sposta (CGI) che produce dei risultati<br />

invia questi risultati al browser<br />

163<br />

Multime<strong>di</strong>a in Flash<br />

In genere si utilizzano entrambe le<br />

modalità<br />

<br />

<br />

<br />

<br />

… <br />

<br />

<br />

I form<br />

Un form è racchiuso tra i tag e<br />

<br />

Contiene co<strong>di</strong>ce HTML e speciali tag<br />

detti “field” o “controlli” (es. )<br />

I field sono elementi <strong>di</strong> tipo inline e<br />

sono identificati dagli attrib. id e name<br />

Le informazioni vengono passate al<br />

server come coppie del tipo<br />

field-name/valore o field-id/valore<br />

162<br />

164


I form<br />

Attributi <strong>di</strong> :<br />

action: URL del programma CGI che<br />

deve ricevere i dati<br />

I form<br />

165<br />

assoluto o relativo (se il CGI è nello stesso<br />

server)<br />

per fare prove usare:<br />

<br />

oppure (non funziona bene con le checkbox):<br />

<br />

Attributi <strong>di</strong> :<br />

enctype: metodo <strong>di</strong> co<strong>di</strong>fica dei dati:<br />

application/x-www-form-urlencoded:<br />

default, cambia gli spazi in + e i caratteri non<br />

alfanumerici in %nn (nn è il co<strong>di</strong>ce ASCII)<br />

text/plain: trasmette senza co<strong>di</strong>fica,<br />

preferibile se action è<strong>di</strong> tipo mailto in<br />

quanto produce un testo strutturato a righe:<br />

First Name=Pinco<br />

Last Name=Pallino<br />

Sex=m<br />

Submit=Invia<br />

167<br />

I form<br />

Attributi <strong>di</strong> :<br />

method: protocollo <strong>di</strong> trasmissione dei<br />

dati, principali valori:<br />

get: default, passa i dati insieme all’URL<br />

http://www.demo.com/cgi/programma.p<br />

hp?Name=Pinco+Pallino&Age=92&Sex=m<br />

Pochi dati, posso essere inseriti in un link<br />

post: trasmette i dati nella stessa connessione<br />

attraverso cui ha mandato la richiesta per l’URL<br />

Name=Pinco+Pallino&Age=92&Sex=m<br />

I form<br />

Attributi <strong>di</strong> :<br />

enctype (continua):<br />

multipart/form-data:<br />

separa i campi trasmessi con dei delimitatori<br />

speciali, permette inoltre <strong>di</strong> trasmettere uno o<br />

più file al server passandone anche il nome, i<br />

dati inviati hanno questo aspetto:<br />

Content-type: multipart/form-data;<br />

boundary=---------------------------2988412654262<br />

Content-Length: 5289<br />

-----------------------------2988412654262<br />

Content-Disposition: form-data; name="nomeutente"<br />

Joe<br />

-----------------------------2988412654262<br />

Content-Disposition: form-data; name="myfile";<br />

166<br />

168


I form<br />

Attributi <strong>di</strong> :<br />

id e name: identificano il form, in genere<br />

si utilizzano entrambi con gli stessi valori.<br />

<strong>XHTML</strong>-Strict depreca l’uso <strong>di</strong> name ma<br />

alcuni browser riconoscono solo quello<br />

I form<br />

Campo TEXT<br />

Una sola riga <strong>di</strong> input<br />

<br />

Attributi:<br />

name<br />

id (lo stesso <strong>di</strong> name)<br />

size: ampiezza (n. <strong>di</strong> caratteri)<br />

maxlength: contenuto massimo (n. caratteri)<br />

value: contenuto iniziale<br />

169<br />

171<br />

I form<br />

Attributi comuni a tutti i field:<br />

name: identifica il field, viene usato per<br />

l’elaborazione lato server dei form e anche<br />

per i JavaScript<br />

id: identifica il field, in genere viene usato<br />

per i CSS e i JavaScript<br />

Si utilizzano entrambi e, ove possibile,<br />

assegnando gli stessi valori (con eccezioni)<br />

<strong>XHTML</strong>-Strict depreca name, ma alcuni<br />

browser lo richiedono per l’uso con script<br />

I form<br />

Campo PASSWORD<br />

Una sola riga <strong>di</strong> input<br />

I caratteri inseriti non vengono visualizzati,<br />

al loro posto vengono visualizzati degli<br />

asterischi o altri caratteri neutri<br />

<br />

Attributi: come per il campo TEXT<br />

Attenzione: i dati non vengono trasmessi<br />

cifrati grazie a questo tipo <strong>di</strong> input (si<br />

usano altri meto<strong>di</strong>, ad es. connessioni SSL)<br />

170<br />

172


I form<br />

Campo TEXTAREA<br />

Area <strong>di</strong> input multilinea<br />

…<br />

Attributi:<br />

I form<br />

rows: numero <strong>di</strong> righe<br />

cols: numero <strong>di</strong> caratteri per ogni riga<br />

name, id (uguali)<br />

Il contenuto iniziale viene definito scrivendolo<br />

tra i due tag (è testo semplice, non HTML)<br />

…<br />

Campo MENU A DISCESA<br />

Attributi <strong>di</strong> :<br />

size: numero <strong>di</strong> righe visibili (default=1), se<br />

maggiore <strong>di</strong> 1 si parla <strong>di</strong> “liste”<br />

name, id (uguali)<br />

173<br />

multiple="multiple": permette <strong>di</strong><br />

selezionare più <strong>di</strong> un elemento (Control-click); al<br />

server viene mandata una coppia field/valore<br />

per ciascun elemento selezionato; in questo<br />

caso l’attributo selected (prossima slide) può<br />

essere usato su più elementi<br />

175<br />

I form<br />

Campo MENU A DISCESA<br />

Gli elementi del menu sono<br />

racchiusi in tag :<br />

<br />

Super Gadget<br />

Mega Gadget<br />

Gadget<br />

<br />

Al server viene mandata la coppia:<br />

gadg/stringa tra dell’elemento selezionato<br />

I form<br />

Campo MENU A DISCESA<br />

Attributi <strong>di</strong> :<br />

value: valore che viene inviato al server<br />

quando viene selezionato l’elemento<br />

corrispondente, se value non è presente viene<br />

mandato il testo compreso tra e<br />

<br />

selected="selected": preseleziona un<br />

elemento<br />

174<br />

176


I form<br />

Campo MENU A DISCESA<br />

177<br />

Il tag <br />

dà un titolo alle sezioni <strong>di</strong> <br />

<br />

<br />

Super Gadget<br />

<br />

<br />

Mega Gadget<br />

Mongo Gadget<br />

<br />

Gadget<br />

<br />

I form<br />

Campo CHECKBOX<br />

Super-magneto<br />

Kryptonite Coating<br />

Anti-gravity<br />

Al server viene mandata una coppia<br />

name/valore per ciascun elemento<br />

selezionato (valore è on oppure quello<br />

in<strong>di</strong>cato con value nell’elemento selez.)<br />

179<br />

I form<br />

Campo CHECKBOX<br />

Elementi da spuntare<br />

Non mutuamente esclusivi<br />

<br />

Attributi:<br />

I form<br />

name: uguale per tutte le ckbox collegate tra<br />

loro (come se fossero gli elementi <strong>di</strong> una lista)<br />

id: <strong>di</strong>verso per identificare ciascuna checkbox<br />

value: valore che viene inviato al server, se<br />

non esiste, viene inviato on<br />

checked="checked": preseleziona la ckbox<br />

Campo CHECKBOX<br />

Per <strong>di</strong>stinguere i vari elementi o si usa<br />

value in ciascun elemento (in<strong>di</strong>spensabile<br />

nel caso precedente) o si utilizza un name<br />

<strong>di</strong>verso per ciascun elemento:<br />

Super-magneto<br />

Kryptonite Coating<br />

Anti-gravity<br />

178<br />

180


I form<br />

Campo RADIO-BUTTON<br />

Elementi da spuntare<br />

Mutuamente esclusivi<br />

<br />

Attributi:<br />

I form<br />

name: uguale per tutti i ra<strong>di</strong>o-button<br />

mutuamente esclusivi<br />

id: <strong>di</strong>verso per identificare ciascuna checkbox<br />

value: valore che viene inviato al server, se<br />

non esiste, viene inviato on<br />

selected="selected": preseleziona il ra<strong>di</strong>o<br />

Bottone <strong>di</strong> invio<br />

Richiede al browser <strong>di</strong> inviare all’URL<br />

specificato in action i contenuti <strong>di</strong> tutti i<br />

campi del form<br />

<br />

Attributi:<br />

name<br />

id (lo stesso <strong>di</strong> name)<br />

value: scritta sul bottone, inviata al server<br />

(per avere <strong>di</strong>versi bottoni associati allo stesso<br />

form ma richiedenti operazioni <strong>di</strong>verse)<br />

181<br />

183<br />

I form<br />

Campo RADIO-BUTTON<br />

Per <strong>di</strong>stinguere i vari elementi si usa<br />

value in ciascun elemento:<br />

Super-magneto<br />

Kryptonite Coating<br />

Anti-gravity<br />

I form<br />

Bottone <strong>di</strong> reset<br />

Azzera o riporta al valore <strong>di</strong> default tutti i<br />

campi del form<br />

<br />

Attributi:<br />

name<br />

id (lo stesso <strong>di</strong> name)<br />

value: scritta sul bottone, inviata al server<br />

182<br />

184


I form<br />

Bottone generico<br />

Mostra un bottone cliccabile<br />

<br />

185<br />

Deve essere associato me<strong>di</strong>ante linguaggi<br />

<strong>di</strong> scripting a un evento che faccia eseguire<br />

un’azione, ad es. con l’attributo onclick:<br />

onclick="alert('Hello!');"<br />

Altri attributi:<br />

name<br />

id (lo stesso <strong>di</strong> name)<br />

value: scritta sul bottone<br />

I form<br />

Bottone grafico<br />

Immagine che si comporta come un<br />

bottone, ma invia anche le coor<strong>di</strong>nate <strong>di</strong><br />

dove è stato cliccato<br />

<br />

Attributi:<br />

name, id (uguali)<br />

src: URL dell’immagine da visualizzare<br />

alt, align, vspace, hspace: come per<br />

<br />

187<br />

I form<br />

Bottone generico 2<br />

Metodo alternativo per mostrare un bottone<br />

Press Me!<br />

Il testo tra i due tag è la scritta sul bottone,<br />

ma a <strong>di</strong>fferenza <strong>di</strong> può essere<br />

composto da elementi in-line e block (es.<br />

immagini, ma non trasmette le coor<strong>di</strong>nate)<br />

Attributi:<br />

name, id (uguali)<br />

value: valore (stringa) da trasmettere al server<br />

type: valoributton, submit e reset<br />

I form<br />

File upload<br />

Permette <strong>di</strong> caricare un file sul server<br />

<br />

E’ necessario un enctype <strong>di</strong> tipo<br />

multipart/form-data<br />

Crea un bottone che apre una finestra <strong>di</strong><br />

<strong>di</strong>alogo per selezionare il file<br />

Attributi:<br />

name, id (uguali)<br />

maxlength: contenuto massimo (n. caratteri)<br />

size: ampiezza (n. <strong>di</strong> caratteri)<br />

186<br />

188


I form<br />

Etichette<br />

Nome:<br />

Associano un testo ad un campo<br />

Permette <strong>di</strong> formattare tutte le label con<br />

una sola regola CSS<br />

Utile per gli screen reader<br />

1o modo – il campo associato è tra i tag:<br />

Nome:<br />

<br />

<br />

I form<br />

Fieldset<br />

Raggruppano più campi, in genere sono<br />

incorniciati<br />

… <br />

Attributi <strong>di</strong> :<br />

Solo quelli <strong>di</strong> base<br />

Il tag interno … <br />

racchiude il titolo del fieldset<br />

Attributi <strong>di</strong> :<br />

align: top, bottom, left, right<br />

189<br />

191<br />

I form<br />

Etichette<br />

2 o modo – il campo associato è in<strong>di</strong>cato<br />

me<strong>di</strong>ante il suo id nell’attributo for<br />

Nome:<br />

<br />

Questo secondo metodo permette <strong>di</strong><br />

collocare e in 2 celle<br />

<strong>di</strong>verse <strong>di</strong> una tabella usata per il layout<br />

I form<br />

Fieldset<br />

<br />

Customer Identification<br />

Customer Name:<br />

<br />

<br />

<br />

Password:<br />

<br />

<br />

190<br />

192


I form<br />

Informazioni non visibili<br />

Permettono <strong>di</strong> passare dati al server senza<br />

intervento dell’utente<br />

<br />

Attributi:<br />

name, id (uguali)<br />

value: valore (stringa) da trasmettere al<br />

server<br />

Ad es. correlano collegamenti consecutivi<br />

dello stesso utente (trasmettono ai form<br />

successivi i dati accumulati dai precedenti)<br />

I form<br />

Attributi comuni a tutti i campi:<br />

accesskey:<br />

Customer Name:<br />

<br />

tabindex: specifica l’or<strong>di</strong>ne in cui con il<br />

tasto TAB ci si può spostare da campo a<br />

campo (i campi con tabindex <strong>di</strong> valore<br />

pari a 0 vengono considerati dopo tutti<br />

quelli con valore > 0)<br />

title: può essere usato per suggerire<br />

all’utente cosa immettere in un campo<br />

193<br />

195<br />

I form<br />

Informazioni non visibili<br />

Il server crea la pagina<br />

del secondo form<br />

includendo in<br />

campi hidden<br />

i dati ottenuti<br />

dal primo<br />

form, così il<br />

secondo<br />

form può inviarli<br />

tutti insieme al server<br />

I form<br />

Attributi comuni a tutti i campi:<br />

<strong>di</strong>sabled: il campo viene reso<br />

inutilizzabile, in genere è grigio, i suoi dati<br />

non vengono spe<strong>di</strong>ti al server, l’opzione (la<br />

<strong>di</strong>s/ri-abilitazione) viene gestita da script<br />

per renderlo utilizzabile solo in determinati<br />

casi (es. certi campi sono stati completati)<br />

readonly: il campo non è mo<strong>di</strong>ficabile,<br />

ma si comporta come un campo normale<br />

(solo per campi text, password e<br />

textarea), opzione gestibile con script<br />

194<br />

196

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!