Sei sulla pagina 1di 82

Come funzione un browser

Non ho mai previsto che il codice sorgente di HTML (cio la roba con le parentesi
angolate) fosse visibile agli utenti. Un browser/editor avrebbe fatto vedere o editare
all'utente soltanto il linguaggio di una pagina di ipertesto, come se stesse usando un
word processor. Per me, e credevo anche per gli altri, l'idea di chiedere al pubblico di
battere a mano le parentesi era inaccettabile quanto chiedere a qualcuno di scrivere
un documento in Microsoft Word stendendo il formato in codice binario. Ma la
leggibilit dell'HTML si rivel una manna inaspettata. Con mia grande sorpresa molte
persone si familiarizzarono alla svelta con i tag, e iniziarono a scrivere direttamente
propri documenti in HTML

Tim Berners-Lee, L'architettura del nuovo Web, Feltrinelli, Milano, 2001

L'HTML e i browser
L'HTML il linguaggio con cui potete indicare come i vari elementi vanno disposti in una pagina Web. Un
documento html non nient'altro infatti che un file di testo con delle indicazioni sul colore delle scritte, sulla
posizione delle immagini all'interno della pagina, su come far scorrere il testo, e altre cose di questo genere.
Il Browser il programma che usate quando navigate nel Web e svolge principalmente due compiti:

scarica i vari files che si trovano su un computer remoto (il server) e che fanno riferimento a un certo
indirizzo

legge i documenti scritti in html, e a seconda delle indicazioni ivi contenute, visualizza la pagina in un
modo, piuttosto che in un altro; inoltre i vari files associati a quel documento (ad esempio le
immagini, o i filmati in flash) vengono disposti secondo le indicazioni del codice html

Oltre ad Internet Explorer, il browser pi diffuso, esistono altri browser: prima di tutto lo "storico" Netscape
Navigator, con cui la Microsoft ha ingaggiato una vera e propria guerra (vincendola). Poi il browser open
source Mozilla, che nasce da Netscape e ha la particolarit di essere a codice aperto, cio con la possibilit
per gli sviluppatori di vedere com' fatto il programma. Una parte di utenti (si tratta sempre di una minoranza
comunque rispetto allo strapotere di Internet Explorer) utilizza poi Opera, un browser norvegese celebre per
la sua velocit di visualizzazione delle pagine. Ovviamente esistono anche molti altri browser. Per ciascuno
di essi esistono poi differenti versioni a seconda del sistema operativo (Windows, Mac OS, Linux, o altri).
importante sin dall'inizio acquisire una mentalit multi-browser, perch il mestiere del webmaster non
consiste tanto nel conoscere nei minimi dettagli il codice HTML, quanto piuttosto nel sapere come il codice
HTML verr visualizzato sul computer dell'utente: infatti uno dei lavori pi difficili quello di riuscire a far
vedere correttamente il proprio sito con i browser e le piattaforme pi svariate.
I files scaricati dal web vengono memorizzati in una particolare cartella del computer che prende il nome di
cache.
In Internet Explorer possibile visualizzarla utilizzando i comandi:
Strumenti > Opzioni Internet > Generale > Impostazioni > Visualizza file
In Mozilla:
Modifica > Preferenze > Avanzate > Cache
In questo modo verr mostrato il percorso della cartella in cui i documenti vengono temporaneamente
memorizzati.
La visualizzazione di un file html da parte del browser prende il nome di rendering della pagina. Motore di
rendering dunque quella sezione del browser che si occupa di mostrare sul video la pagina.

Il compito del linguaggio HTML dunque quello di spiegare al browser come i vari files relativi al documento
in esame devono essere disposti all'interno della pagina che stiamo visualizzando.
In qualsiasi momento possibile visualizzare il codice HTML delle pagine che stiamo visitando. Con
Internet Explorer:
Visualizza > HTML
Con Mozilla :
Visualizza > Codice Sorgente
oppure si pu effettuare la stessa operazione, utilizzando il tasto destro del mouse per visualizzare il menu a
tendina, e scegliendo poi la voce corrispondente.

Cos HTML
HTML l'acronimo di Hypertext Markup Language ("Linguaggio di contrassegno per gli Ipertesti") e non
un linguaggio di programmazione (sono linguaggi di programmazione il C, il C++, il Pascal, il Java, e sono
linguaggi di scripting il PHP, l'ASP, il PERL, il JavaScript).
Si tratta invece di un linguaggio di contrassegno (o 'di marcatura'), che permette di indicare come disporre
gli elementi all'interno di una pagina: le indicazioni vengono date attraverso degli appositi marcatori, detti
"tag".
Ci significa che l'HTML non ha meccanismi che consentono di prendere delle decisioni ("in questa
situazione fai questo, in quest'altra fai quest'altro"), e non in grado di compiere delle iterazioni ("ripeti
questa cosa, finch non succede questo"), n ha altri costrutti propri della programmazione.
Il linguaggio HTML, pur essendo dotato di una sua sintassi, non presuppone la logica ferrea e
inappuntabile dei linguaggi di programmazione: se vi dimenticate di chiudere un tag, non verranno
prodotti dei messaggi di errore; se non rispettate la sintassi probabilmente non otterrete la visualizzazione
della pagina che desiderate, ma nient'altro. A volte vi troverete persino a dover adottare dei "trucchetti", non
proprio da manuale, pur di visualizzare la pagina correttamente con ogni browser.

Suggerimenti: Pu succedere - soprattutto a chi alle prime armi - di continuare a modificare un file,
ma di non riuscire a vederne le modifiche. Questo succede perch la pagina visualizzare sempre quella
vecchia memorizzata nella cache. Quando state elaborando pagine per il web, ricordatevi di impostare la
cache del vostro browser in modo che il file html venga ricaricato ogni volta che richiamate la pagina.
In Internet Explorer:
Strumenti > Opzioni Internet > Generale > Impostazioni >
Ricerca versioni pi recenti delle pagine memorizzate:
all'apertura della pagina
In Mozilla:
Modifica > Preferenze > Avanzate > Cache >
Confronta la pagina nella cache con la pagina in rete:
ogni volta che vedo una pagina

Prima di cominciare davvero lo standard HTML


L'organizzazione che si occupa di standardizzare la sintassi del linguaggio HTML (il W3C: Word Wide
Web Consortium) ha rilasciato diverse versioni di questo linguaggio (HTML 2.0, HTML 3.2, HTML 4.0); e - da
un certo punto in poi - l'HTML si evoluto in XHTML (si tratta dell'HTML riformulato come linguaggio XML ne sono gi state rilasciate due versioni).

La versione dell'HTML che esamineremo in questo corso l'ultima rilasciata: si tratta dell'HTML 4.01 del 24
dicembre 1999.
Anche se abbiamo detto che l'HTML si evoluto in XHTML ci sono delle ottime ragioni per incominciare a
studiare l'HTML e non l'XHTML:

di fatto l'HTML verr utilizzato ancora per diversi anni come linguaggio principe delle pagine web

alcuni concetti dell'XHTML richiedono gi una certa comprensione dei problemi che si acquisisce
solo con l'esperienza. L'HTML pi immediato e consente di incominciare subito a produrre
documenti web

chi conosce l'XHTML non pu non conoscere l'HTML. La conoscenza dell'HTML infatti il
prerequisito essenziale di ogni webmaster. Comunque le differenze tra i due linguaggi non sono cos
marcate e passare dall'uno all'altro non dovrebbe richiedere molta fatica.

Per gli approfondimenti sulle differenze tra i vari linguaggi vi rimando tuttavia all'appendice di questa
guida.
Un'ultima avvertenza: in molte lezioni presente una sezione denominata "approfondimenti". Chi
inizia adesso a studiare HTML ed alla sua prima lettura pu tranquillamente ignorare quel
paragrafo. Le indicazioni ivi contenute vi torneranno utili a una seconda lettura, o man mano che
prendete confidenza con l'HTML e l'arte di sviluppare siti web.

Le estensioni dei file e le impostazioni del browser


Per iniziare a scrivere pagine web avete bisogno di:

uno o pi browser per visualizzare le pagine

un editor testuale per scrivere il codice HTML (potete usare il blocco note di Windows, o altri editor
testuali come 1Page, che gratuito First Page)

durante questo corso non utilizzeremo editor visuali: n FrontPage, n DreamWeaver, n GoLive, o
altri. Su HTML.it troverete delle guide appositamente scritte per loro.

L'estensione del file


Aprite una pagina con il blocco note, e salvate il file in qualche cartella del vostro computer. Il file
dovr avere estensione "html", ad esempio miaPagina.html.
Fino a qualche tempo fa si era soliti attribuire ai file l'estensione htm, ma questo avveniva perch il
dos e poi Windows 3.1 non erano in grado di gestire i file con nomi di grandezza superiore a 8
caratteri ed estensione superiore alle 3 lettere. Dunque .html era diventato .htm, cos come .jpeg era
diventato .jpg.
Il problema delle estensioni stato ampiamente superato sin dai tempi di Windows 95, e di
conseguenza oggi il webmaster pu decidere se attribuire ai files estensione .html o .htm. Siccome
stiamo parlando di linguaggio HTML, personalmente preferisco l'estensione .html, ma una
questione di gusti (HTML.it, ad esempio, continua con il vecchio metodo).
Se avete dato alla pagina l'estensione .html o .htm, il browser dovrebbe essere in grado di aprire il
file in automatico cliccandoci su due volte. Per modificare la pagina utilizzate i comandi Visualizza >
HTML, cambiate il codice, salvate, utilizzate il pulsante "aggiorna" del browser e dovreste
visualizzare le modifiche.
Se invece il file non associato al browser, ma continua ad apparire come documento di testo,
evidentemente questo avviene perch l'estensione non .html, ma .html.txt, alcuni sistemi operativi
hanno infatti la cattiva abitudine di nascondere l'estensione dei file (con il pretesto di rendere pi
usabile il sistema operativo stesso).

Per visualizzare l'estensione del file in sistemi Windows andate in una cartella e quindi:
Strumenti > Opzioni cartella > Visualizzazione
E poi togliere la spunta da:
"Nascondi le estensioni dei file per i tipi di file conosciuti"
infine premere il pulsante:
"Come cartella corrente"

TAG dellHTML: come scriverli


Struttura di un tag
Abbiamo detto che all'interno di ogni pagina presente una serie di marcatori (i TAG), a cui viene affidata la
visualizzazione e che hanno differenti nomi a seconda della loro funzione. I tag vanno inseriti tra parentesi
uncinate (<TAG>), la chiusura del tag viene indicata con una "/" ( il simbolo comunemente detto "slash".
Quindi: </TAG>). Il contenuto va inserito tra l'apertura e la chiusura del tag medesimo, secondo questa
forma:
<TAG attributi>contenuto</TAG>

Ecco un esempio, con una sintassi che serve a disporre un testo giustificato a destra:
<P align="right">testo</P>

dall'esempio evidente che la struttura di un attributo : attributo="valore"


Quindi in definita la struttura di un tag sar:
<TAG attributo_1="valore1" attributo_2="valore2">contenuto</TAG>

Alcuni particolari tag non hanno contenuto - perch ad esempio indicano la posizione di alcuni elementi
(come il tag delle immagini) -, conseguentemente questi tag non hanno neanche chiusura. La loro forma
sar dunque:
<TAG attributi>

Ecco un esempio di immagine:


<IMG widht="20" height="20" SRC="miaImmagine.gif" ALT="alt">

come si vede il tag non viene chiuso. Questo tipo di tag viene detto "empty", cio "vuoto".

Annidamento e indentazione
Una caratteristica importante del codice HTML che i tag possono essere annidati l'uno dentro l'altro. Anzi
molto spesso necessario farlo.
Ad esempio:
<TAG1 attributi>
contenuto 1
<TAG2>
contenuto 2
</TAG2>
</TAG1>

Potremmo quindi avere ad esempio:


<P align="right">
testo 1
<P align="left">

testo 2
</P>
</P>

L'annidamento ci permette quindi di attribuire formattazioni successive al testo che stiamo inserendo.
Come si pu vedere gi nell'esempio, una buona norma utilizzare dei caratteri di tabulazione (il tasto tab
a sinistra della lettera Q) per far rientrare il testo ogni volta che ci troviamo in presenza di un annidamento e
man mano che entriamo pi in profondit nel documento.
In pratica apertura e chiusura del tag si trovano allo stesso livello, mentre il contenuto viene spostato verso
destra di un tab: non si tratta soltanto di un fattore visivo, ma l'allineamento di apertura e chiusura tag viene
mantenuto anche se scorriamo in verticale il documento con il cursore.
Questa procedura si chiama indentazione, e grazie ad essa il codice HTML risulta pi leggibile. Si confronti
ad esempio:
<P align="right">testo 1<P align="left">

testo 2 </P></P>

con:
<P align="right">
testo 1
<P align="left">
testo 2
</P>
</P>

per il browser i due esempi sono equivalenti, ma per l'utente umano evidente che la differenza notevole:
pensate ad una pagina complessa visualizzata in un unico blocco di testo: sarebbe del tutto illeggibile!

I commenti
Unaltra strategia importante, per rendere il nostro codice pi leggibile quella di inserire dei "commenti"
nei punti pi significativi: si tratta di indicazioni significative per il webmaster, ma invisibili al browser.
Inserendo i commenti in punti specifici del documento ci permette di mantenere lorientamento anche in file
molto complessi e lunghi. La sintassi la seguente:
<!-- questo un commento -->
e ci permette di "commentare" i vari punti della pagina. Ad esempio:
<!-- menu di sinistra -->
<!-- barra in alto -->
<!-- eccetera -->

Maiuscolo o minuscolo?
LHTML case unsensitive, cio indipendente dal formato. Questo significa che del tutto indifferente se
scrivere i tag in maiuscolo o in minuscolo.
<P ALIGN=RIGHT>

e
<p align=right>

vengono letti allo stesso modo dal browser.


Fino a qualche tempo fa, per aumentare la leggibilit del codice, era buona norma scrivere in maiuscolo il
nome del tag (es: <P>) e in minuscolo gli attributi (es: align=right). Quindi:

<P align=right>

Tuttavia oggi, per analogia con l'XHTML (che figlio dellXML e dell'HTML ed case sensitive, sensibile
al formato) consigliabile scrivere tutto in minuscolo, per abituarsi gi al linguaggio che verr. Maiuscolo e
minuscolo, in ogni caso non costituiscono errore.
Fino a questo momento - per rendere pi chiare le differenze - abbiamo utilizzato la vecchia abitudine di
alternare maiuscolo e minuscolo differenziando tag e attributi, dora in poi invece tutta la sintassi HTML della
guida sar in minuscolo.

Struttura della pagina


Basandoci sulle indicazioni precedenti, incominciamo a scrivere la nostra prima pagina html.
Per prima cosa inseriamo una riga che indica che stiamo utilizzando le specifiche del Word Wide Web
Consortium che riguardano il codice HTML:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//IT">

esamineremo ulteriormente questa riga nell'appendice, per ora lasciamola cos.


Poi apriamo il nostro primo tag, che indica che quanto compreso tra apertura e chiusura in codice HTML:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//IT"> <html>
... altri tag ...
</html>

Un documento HTML normalmente diviso in due sezioni:


Contiene informazioni non immediatamente percepibili,
ma che riguardano il modo in cui il documento deve
essere letto e interpretato. Questo il luogo dove
Testa (<head>)
scrivere - ad esempio - i meta-tag (alcuni sono ad
esclusivo beneficio dei motori di ricerca), script
JavaScript o VbScript, fogli di stile, eccetera
Corpo (<body>)

Qui racchiuso il contenuto vero e proprio del


documento

Ci occuperemo in seguito della head (l'argomento verr ripreso poi nella conclusione della guida. Per ora
facciamo riferimento soltanto a due tag che devono essere presenti in questa sezione:
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">

indica al browser che deve caricare il set di caratteri occidentale (e non - ad esempio - il set di caratteri
giapponese).
<title>Nome del sito</title>

Il title il titolo della pagina e compare in alto sulla barra del browser (se guardate in alto a sinistra del
browser noterete la scritta "Struttura della pagina | Guida HTML | HTML.it"). bene compilarlo da subito,
onde evitare poi di avere pagine senza titolo. Da quanto abbiamo detto la nostra prima pagina sar questa,
che consultabile anche nell'esempio allegato:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//IT">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">

<title>HTML.it</title>
</head>
<body>
<!-- Scriveremo qui -->
Qui il nostro contenuto
</body>
</html>

D'ora in poi i vari tag che impareremo all'interno della guida andranno scritti all'interno del body, quando non
sia indicato diversamente.

Separare layout dal contenuto


LHTML in origine nato come linguaggio per formattare i documenti presenti sul Web. Proprio per questo
motivo il contenuto (ad esempio <p>qui il mio testo</p>) e i tag che indicano uno stile o una colorazione
del contenuto (ad esempio <font color=red>, che colora il testo di rosso) si trovavano mischiati allo
stesso livello.
Tuttavia vari anni di Web hanno fatto nascere lesigenza di separare il contenuto dalla presentazione del
contenuto medesimo.
Se per esempio io avessi tutti i titoli del mio documento in rosso e in grassetto, e a un certo punto decidessi
di trasformarli in verde e in corsivo, con lHTML classico (cio lHTML 3.2) dovrei andare a modificarmi a
mano ogni tag contente le indicazioni della formattazione.
Quindi:
<p>
<font color="red">
<b>titolo 1</b>
</font>
</p>

diventerebbe:
<p>
<font color="green">
<i>titolo 1</i>
</font>
</p>

ma se questa operazione non comporta difficolt su una singola pagina, questa operazione diventa
insostenibile (o quantomeno difficoltosa, tanto che converrebbe scrivere un programma che effettuasse la
conversione al posto nostro) su website molto grandi, a volte di centinaia di pagine.
Proprio per questo come dicevamo - da un certo punto in poi nata lesigenza di separare il contenuto (la
scritta titolo 1), dalla formattazione (il colore rosso e il grassetto). Per farlo necessario utilizzare i fogli di
stile, e il contenuto della pagina vista pocanzi diventerebbe qualcosa di questo genere:
<p class="formattaTitoli">
titolo 1
</p>

mentre la colorazione del testo verrebbe poi affidata alla classe formattaTitoli, descritta in unaltra parte del
documento, o anche in un file separato. Dunque basta editare la classe formattaTitoli per cambiare
laspetto anche di centinaia di pagine.
importante sapere da subito che alcune cose che stiamo imparando hanno la possibilit di essere
espresse con una soluzione pi elegante, e che consente al webmaster di gestire pi agevolmente i propri

siti. Alcuni elementi descritti nella guida corrente sono addirittura deprecati dal W3C, cio destinati a
cadere in disuso (come il tag <font>): man mano che li incontreremo (perch allo stato attuale del Web
ancora importante conoscerli) vi avvertir che esistono altre soluzioni applicabili tramite i fogli di stile.
Tuttavia in questo contesto non esamineremo i fogli di stile (detti anche CSS: Cascading Style Sheets),
perch un argomento che presuppone gi la conoscenza del linguaggio HTML. Per questo vi rimandiamo
allapposita guida ai CSS di HTML.it, che se vorrete potrete consultare dopo aver letto la guida allHTML.

Gli elementi HTML e i fogli stile


Un altro concetto importante che gli elementi vengono classificati nella trattazione a fogli di stile secondo
tre tipologie:
Sono sostanzialmente gli elementi che costituiscono un
Elementi di
blocco attorno a s, e che di conseguenza vanno a capo,
blocco
come i paragrafi, le tabelle, le form.
Elementi
inline

Sono gli elementi che non andando a capo - possono


essere integrati nel testo, come i collegamenti o le
immagini

Liste

Lista numerate, o non numerate

La guida che state leggendo, senza entrare minuziosamente in questa classificazione, ne tiene conto, in
modo da rendere pi agevole il passaggio da una formattazione inserita nel codice HTML, a una
formattazione che utilizzi i fogli di stile. Infatti, man mano che comincerete a costruire siti web, sentirete
lesigenza di passare a una formattazione avanzata. Le due cose tuttavia non vanno sentite in
contrapposizione: i fogli di stile sono semmai un arricchimento e unespansione del codice HTML, viceversa
non possibile apprendere i fogli di stile senza conoscere il codice HTML.

Approfondimenti
Nella lezione della guida CSS dedicata alla Classificazione degli elementi viene approfondito l'argomento da
noi trattato.

Impostare il colore di fondo


In cominciamo a vedere come ottenere la nostra prima pagina HTML nel modo in cui desideriamo
visualizzarla.
Se vogliamo impostare un colore di sfondo necessario impostare il relativo attributo del tag body. Cos:
<body bgcolor="blue">

bgcolor sta per "background color", cio "colore di sfondo". Molti colori sono disponibili utilizzando le
corrispondenti parole chiave in inglese.
Qui potete trovare un esempio della pagina con lo sfondo blu
Tuttavia non consigliabile inserire la notazione del colore facendo riferimento a questo tipo di sintassi, dal
momento che non possiamo sapere esattamente a quale tonalit di colore corrisponda il blu del computer
dellutente. preferibile in molti casi utilizzare la corrispondente codifica esadecimale del colore, che ci
permette tra le altre cose di scegliere anche tonalit di colore non standard. Con la notazione
esadecimale il nostro esempio diventa:
<body bgcolor="#0000FF">

Ecco una tabella con la notazione di alcuni colori (molti di essi sono disponibili anche nelle varianti "dark" e
"light", ad esempio: "darkblue", "lightblue"):

colore

parola chiave

notazione esadecimale

arancione

orange

#FFA500

blu

blue

#0000FF

bianco

white

#FFFFFF

giallo

yellow

#FFFF00

grigio

gray

#808080

marrone

brown

#A52A2A

nero

black

#000000

rosso

red

#FF0000

verde

green

#008000

viola

violet

#EE82EE

Il numero di colori che lutente ha a disposizione dipende dalla scheda video. Oggi si va da una risoluzione
minima di 256 colori a una risoluzione che prevede svariati milioni di colori.
Per capire di cosa stiamo parlando, provate a visualizzare questa pagina cambiando il numero di colori
visualizzati sul monitor. Per fare ci, in Windows, andate in: Pannello di controllo > Schermo >
Impostazioni e cambiate il numero dei colori, applicate i cambiameni e tornate a visualizzare la pagina.
Come si vede la visualizzazione della tonalit di colore sensibilmente diversa passando da 256 a 65.536
colori (16 bit).
Poich non c modo di sapere quale scheda video abbia lutente (o come labbia impostata), i webdesigner
per molto tempo hanno fatto riferimento alla "palette sicura" dei 256 colori che sicuramente lutente in
grado di visualizzare. Si tratta della cosiddetta palette web safe.
C per da dire che oramai la stragrande maggioranza dei computer impostata per visualizzare almeno
migliaia di colori, dunque lutilizzo della palette "web safe" non pi cos strettamente necessaria (lo era nei
primi anni del web).

Inserire una immagine di fondo


Per inserire unimmagine come sfondo sufficiente utilizzare la seguente sintassi:
<body background="imgSfondo.gif">

Per ora presupponiamo che limmagine di sfondo si trovi nella stessa cartella della nostra pagina HTML,
vedremo in seguito (quando parleremo delle immagini) come inserire immagini che si trovano in altre
cartelle.
Limmagine di sfondo verr ripetuta in orizzontale e in verticale.
anche possibile combinare i due attributi, in modo che mentre limmagine di sfondo viene caricata, venga
comunque visualizzata una colorazione della pagina:
<body bgcolor="#0000ff" background="imgSfondo.gif">

Ecco subito un esempio di pagina impostata con lo sfondo.


importante assegnare sempre un colore alla pagina anche quando lo sfondo della pagina bianco (al
massimo assegnare bgcolor="#FFFFFF"). Infatti, come impostazione predefinita, il browser assegna alla
pagina il colore di sfondo che lutente ha impostato nella finestra del sistema operativo: quindi se lutente ha
impostato uno sfondo nero e voi non avete assegnato nessun colore di sfondo alla pagina, la vostra pagina
sar nera.

Se usate Windows, per fare una prova provate a impostare diversamente il tema delle finestre. Dal pannello
di controllo: Schermo > Aspetto > Combinazione e poi scegliere:
"nero a contrasto elevato", oppure "prugna".
Infine visualizzate questa pagina - che senza sfondo e vedrete che la pagina HTML prender la
colorazione che avete impostato nel tema delle finestre.

Eliminare i margini delle pagine


Abbiamo detto allinizio che il lavoro del webmaster consiste non soltanto nel conoscere alla perfezione il
linguaggio HTML, ma soprattutto nellessere un esperto del modo in cui i browser visualizzano le pagine.
Negli esempi precedenti avrete notate che il browser secondo limpostazione predefinita - lascia un po di
margine tra la pagina e il bordo della finestra. Questo in alcune situazioni (ad esempio se volete disporre un
logo in alto a sinistra) pu dare fastidio.
Per eliminare il bordo sufficiente inserire i seguenti attributi del body:
<body leftmargin="0" topmargin="0">

Questa sintassi funziona correttamente con ogni browser moderno (Internet Explorer, Netscape 6 o
superiore, Mozilla, Opera), come possibile vedere nellesempio.
Tuttavia bene sapere che i browser nel corso degli anni hanno introdotto dei tag e degli attributi
"proprietari", con lo scopo di ottenere determinati effetti di visualizzazione, o indicare in qualche modo
particolare il contenuto.
Questa situazione capitava soprattutto nei primi anni del web, quando Microsoft e Netscape lottavano per il
predominio del mercato: in qualche misura la guerra dei browser stata anche guerra di tag proprietari, con
gravi difficolt per gli sviluppatori che si trovavano continuamente di fronte a pagine che non venivano
visualizzate allo stesso modo.
Per questo motivo fino a qualche anno fa per togliere il margine con Netscape 4.x dovevate inserire:
<body marginleft="0" margintop="0">

Mentre per togliere il margine con Internet Explorer:


<body leftmargin="0" topmargin="0">

Se avrete a che fare con pagine web di altri webmaster vi capiter spesso di incontrare questo genere di
sintassi:
<body leftmargin="0" topmargin="0" marginleft="0" margintop="0">

Questa sintassi serviva per eliminare il margine sia con Netscape 4.x, sia con Internet Explorer, specificando
tutti e quattro gli attributi.
Al giorno doggi potete invece limitarvi a scrivere:
<body leftmargin="0" topmargin="0">

Fortunatamente negli ultimi anni lottica della guerra dei browser cambiata, e i produttori di software sono
passati dalla competizione per chi implementa nuove e fantastiche funzionalit proprietarie, al tentativo di
rilasciare browser che aderiscano al meglio agli standard del W3C (non un caso che sia la Netscape, sia la
Microsoft facciano parte del consorzio), senza perdere di vista la velocit nelleffettuare il rendering della
pagina.

Ladesione agli standard non pu che essere un bene, dal momento che potenzialmente significa per noi
sviluppatori la stesura di codice "universale", che funzioni correttamente a prescindere dal browser e dalla
piattaforma (speriamo).

Impostare la lingua del documento


Tramite lattributo "lang" possibile specificare ai motori di ricerca e al browser dellutente quale lingua
stiamo utilizzando. La sintassi per la lingua italiana :
<body lang="it">

Questo attributo non solo una propriet del tag body, ma pu essere riferito alla maggior parte dei tag
HTML che vedremo (come paragrafi, blocchi, tabelle, eccetera). importante sottolineare che questo
attributo non carica automaticamente il set di caratteri necessari alla visualizzazione della lingua, ma si limita
a specificare che il documento (o parte del documento) nella lingua indicata.
Si tratta di un attributo che vi sar utile soprattutto se vi capiter di sviluppare dei siti multilingua (e poi di
doverli inserire nei motori di ricerca).
Ecco il codice che esemplifica gli argomenti appresi finora in questa lezione, visualizzabile anche in questa
pagina:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//IT">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<title>HTML.it</title>
</head>
<body leftmargin="0" topmargin="0" background="imgs/sfondo00006.gif" bgcolor="#66CCFF"
lang="it">
Testo di prova
</body>
</html>

Approfondimenti lo sfondo con i CSS


Tutti gli attributi del body che abbiamo visto finora (da eccezione dellattributo "lang") sono caratteristiche
che riguardano il layout della nostra pagina HTML. Come si pu vedere, con una sintassi di questo genere:
<body leftmargin="0" topmargin="0" background="imgs/sfondo00006.gif" bgcolor="#66CCFF"
lang="it">
Il nostro testo.
</body>

il layout e il contenuto sono mischiati tra loro. Gli attributi "background" e "bgcolor" sono addirittura deprecati
nelle specifiche del W3C: significa che andranno perduti.
In un approccio di impaginazione che utilizzi i fogli di stile, laspetto che riguarda la visualizzazione deve
essere separato dal contenuto.
Il nostro body si ridurr quindi a qualcosa di minimale, come:
<body lang="it">

mentre le regole che indicano come visualizzare lo sfondo saranno visualizzate in una locazione separata
del documento.

Le regole su come impostare lo sfondo con i CSS vengono spiegate dettagliatamente nella relativa lezione
della guida ai CSS.
I fogli di Stile sono estremamente potenti, e dando unocchiata al link che ho segnalato poco sopra si pu
leggere che anche possibile fissare lo sfondo in modo che non si ripeta:
<body style="background-image: url(sfondo.gif); background-repeat: repeat;">

si tratta di una sintassi che funziona bene persino con Netscape 4.x, come si pu vedere nella pagina di
esempio.
Oppure possibile "fissare lo sfondo" in modo da potervi fare scorrere sopra il contenuto della pagina. La
sintassi la seguente:
<body style="background-image: url(sfondo.gif); background-attachment:fixed;">

come si pu vedere anche nellesempio.

Impostare il colore del testo e dei link per tutta la pagina


Impostare il colore del testo e dei link per tutta la pagina

Il testo
Se non impostate nessun colore per il testo, di default il testo di una pagina nero.
Tuttavia il nero non sempre leggibile con tutti i colori di sfondo. Immaginate ad esempio di volere utilizzare
come sfondo il colore nero: con una pagina nera e testo nero non leggeremmo nulla!
Abbiamo allora la possibilit di assegnare un colore per il testo di tutta la pagina, semplicemente utilizzando
questo attributo del tag body:
<body text="red">

Quindi potremo avere, ad esempio:


<body bgcolor="#0000ff" text="#ffffff">

come nellesempio consultabile in questa pagina.

I link
Non c bisogno di spiegare che cosa siano i link: lesperienza della navigazione nel web ci ha infatti
insegnato che il link un collegamento, un ponte tra una pagina laltra.
Non tutti per sanno che i link testuali hanno diversi stati:
Status

Codifica in HTML
4.01

Descrizione

Collegamento
normale

link

Normalmente il link quando si


trova "a riposo" viene
evidenziato in qualche maniera
allinterno della pagina HTML, in
modo che sia facile per lutente
individuarlo. NellHTML
tradizionale il link sempre
sottolineato ( possibile

eliminare la sottolineatura
soltanto usando i CSS). Di
default i link sono blu
(#0000FF).
Collegamento
visitato

visited

Un link visitato, quando lURL


della pagina compare nella
cronologia dellutente. Di
default i link visitati sono di
color violetto (pi esattamente:
#800080).

Collegamento
attivo

active

Il collegamento attivo nel


momento in cui il link stato
cliccato e sta avvenendo il
passaggio da una pagina
allaltra.
Non si tratta di una
caratteristica particolarmente
utile oggi, ma quando i modem
avevano una velocit molto
inferiore a quella odierna,
vedere un link "attivo" era
comunque unindicazione sul
fatto che qualcosa stava
avvenendo.
Con Internet Explorer
possibile vedere anche una
linea tratteggiata attorno al
collegamento attivo.
Un ulteriore condizione in cui
un link si rileva "attivo"
quando si utilizza il tasto destro
del mouse su di lui. Insomma
un link attivo quando "ha il
focus".

Collegamento al
passaggio del
mouse

non presente
("hover" nei CSS)

Con lHTML 4.01 al passaggio


del mouse sul link si pu fare
ben poco, coi fogli di stile
invece possibile creare
qualche effetto di
visualizzazione.

Abbiamo dunque tre stati canonici dei link (link a riposo, link attivo e link visitato) e una condizione aggiuntiva
introdotta dai fogli di stile (status del link al passaggio del mouse):
Anche il colore dei link di tutta la pagina pu essere tramite gli attributi del body:
I link secondo le impostazioni predefinite sono blu, per cambiare colore:
<body link="red">

Per cambiare colore ai link visitati (di default viola):


<body vlink="green">

i link visitati vengono memorizzate nella cronologia del browser, quindi se volete ripristinare il colore
originario dei link, sufficiente cancellare la cronologia.

Per cambiare colore ai link attivi:


<body alink="yellow">

La sintassi completa per impostare i link quindi:


<body link="red" alink="yellow" vlink="green">

Titoli, paragrafi, blocchi di testo e contenitori


Nulla ci vieta di scrivere direttamente allinterno del tag body, come gi abbiamo visto negli esempi
precedenti, senza utilizzare nessun tag.
A dire la verit per pi pratico racchiudere il testo in appositi tag a seconda della funzione che il testo sta
svolgendo. La nostra pagina risulter pi semplice da leggere, quando dovremo modificarla, e inoltre
potremo ottenere la formattazione che desideriamo.
Come abbiamo detto dallinzio, i tag sono infatti dei marcatori che ci permettono di mantenere ordine nella
pagina e ottenere il layout che desideriamo.
I principali tag-contenitori da utilizzare per "racchiudere" il testo sono:
Nome tag

Visualizzazione
codice

<h1>titolo 1 </h1>
<h2>titolo 2 </h2>

titolo 1

<h3>titolo 3 </h3>

titolo 2

<h4>titolo 4 </h4>

titolo 3

<h5>titolo 5 </h5>
<h6>titolo 6 </h6>

titolo 5

paragrafo 1
paragrafo 2

Esempio:
<p>paragrafo 1</p>

"H" sta per


"heading", cio
titolo: le grandezze
previste sono sei.
Dall<h1>, che il
pi importante, si
va via via
degradando fino all
<h6>.

titolo 4

titolo 6

<p>paragrafo </p>

Descrizione

Il tag <hx> (sia


esso h1 o h6)
risulta formattato in
grassetto e lascia
una riga vuota
prima e dopo di s.
Si tratta dunque di
un elemento di
blocco.

Il paragrafo
lunit di base entro
cui suddividere un
testo. Il tag <P>
lascia una riga
vuota prima della
sua apertura e
dopo la sua
chiusura.

<p>paragrafo 2</p>

<div>Blocco di testo</div>

blocco 1
blocco 2

Il blocco di testo va
a capo, ma - a
differenza del
paragrafo non
lascia spazi prima e
dopo la sua
apertura.

contenitore 1
contenitore 2
contenitore 3

Lo span un
contenitore
generico che pu
essere annidato (ad
esempio) allinterno
dei DIV.

Esempio:
<div>blocco 1</div>
<div>blocco 2</div>
<span>contenitore</span>

Esempio:
<span>contenitore
1</span>
<span>contenitore
2</span>
<span>contenitore
3</span>

Si tratta di un
elemento inline,
che cio non va a
capo e continua
sulla stessa linea
del tag che lo
include.
Avrete modo di
utilizzare lo
<SPAN>
soprattutto quando
incomincerete ad
usare i fogli di stile.

Le differenze tra <P>, <DIV> e <SPAN> sono quindi che:

<P> lascia spazio prima e dopo la propria chiusura


<DIV> non lascia spazio prima e dopo la propria chiusura, ma - essendo un elemento di blocco - va
a capo
<SPAN> -essendo un elemento inline - non va a capo

Un esempio dovrebbe chiarire il tutto.


Per quel che riguarda il tag heading (<h1>, , </h6>) da notare che la grandezza del carattere varia a
seconda delle impostazioni che lutente ha sul proprio computer.
Con Internet Explorer, ad esempio, basta andare in: Visualizza > Carattere
Per vedere il titolo crescere o decrescere.

Allineare il testo
Tutti i "tag-contenitori" che abbiamo appena visto (e molti altri tag di quelli che vedremo) permettono di
allineare il testo utilizzando semplicemente lattributo align.

Se avete seguito finora la presente guida, avrete anche indovinato che lattributo "align" disapprovato dal
W3C, dal momento che per allineare il testo bisognerebbe invece utilizzare i fogli di stile.
In ogni caso, vediamo come potremmo ad esempio allineare il testo di un paragrafo:
Allineamento

Sintassi

Visualizzazione codice
HTML

Testo allineato a
sinistra

<p align="left">testo</p> <p align="left">Nel


mezzo del cammin di
nostra vita mi ritrovai per
una selva oscura ch la
diritta via era
smarrita</p>

Testo allineato a
destra

<p
align="right">testo</p>

<p align="right">Nel
mezzo del cammin di
nostra vita mi ritrovai per
una selva oscura ch la
diritta via era
smarrita</p>

Testo giustificato <p


<p align="justify">Nel
align="justify">testo</p> mezzo del cammin di
nostra vita mi ritrovai per
una selva oscura ch la
diritta via era
smarrita</p>

Andare a capo
Per andare a capo molti webmaster utilizzando lapertura arbitraria di paragrafi che non contengono nulla e
che vengono lasciati aperti. Ad esempio:
<p>
<p>
<p>
Si tratta in buona sostanza di un errore, visto che per andare a capo esiste il tag <br> ("break", cio
"interruzione").
Per andare a capo quindi sufficiente scrivere un <br>. Per saltare una riga ne occorrono due:
<br><br>
Un altro valido tag per dividere la pagina in parti il tag <hr> ("horizontal rule"), che serve per tracciare una
linea orizzontale. Ecco il tag in azione:

Questo tag ha anche alcuni attributi (deprecati, perch la formattazione andrebbe fatta con i CSS):
Lattributo "noshade" evita di sfumare la linea, "size" indica laltezza in pixel, "width" la larghezza in pixel
o in percentuale, "align" lallineamento. Con Internet Explorer si riesce persino a impostare il colore:
<hr noshade size="5" width="50%" align="center" color="red">

Risultato:

Scegliere lo stile
Nella grafica cartacea con "stile di un testo" si intende la variante del "tondo", del "corsivo", o del "grassetto"
di un carattere tipografico.
Nel parlare di stili del testo in HTML solitamente si suddividono i tag in grado di attribuire lo stile al testo in
stili fisici e stili logici:

vengono definiti come fisici quei tag che definiscono graficamente lo stile del carattere,
indipendentemente dalla funzione del contenuto del tag
vengono definiti come logici quei tag che forniscono anche informazioni sul ruolo svolto dal
contenuto del tag, e in base a questo adottano uno stile grafico

Gli stili fisici


I principali stili fisici sono:
Codice HTML

Visualizzazione

Descrizione

<b>testo in
grassetto</b>

Questo testo in
grassetto

Formatta il testo in
grassetto.

Questo testo in
corsivo

Formatta il testo in
corsivo. Tuttavia
bisogna evitare di
evidenziare in
corsivo dei blocchi di
lunghezza
considerevole,
perch la leggibilit
del corsivo nel web
lascia a desiderare.

Esempio:
Questo <b>testo</b> in
grassetto
<i>testo in corsivo</i>

Esempio:
Questo <i>testo</i> in
corsivo

Meglio limitarsi a
poche parole.
<pre>testo
preformattato</pre>

Esempio:
<pre>
Nel mezzo del cammin di
nostra vita
mi ritrovai per una selva

Il motore di
rendering del
browser restituisce il
testo cos come
stato inserito nel file
html dallautore
mi ritrovai per
una selva oscura stesso
(preformattato
quindi), senza
ch la diritta
via era smarrita. riformattarlo.

Nel mezzo del


cammin di nostra
vita

Di fatto un tag
poco usato.

oscura
ch la diritta via era
smarrita.
</pre>
<u>testo sottolineato</u> Questo testo
sottolineato
Questo testo sottolineato

Nel web le
sottolineature del
testo sono da
evitare, per non
confondere il lettore
con i link.

Esempio:
Questo <u>testo</u>
sottolineato
<strike>testo
barrato</strike>

Sottolinea il testo
presente nel tag.

Questo testo barrato Con il testo barrato,


vengono indicate (ad
esempio) le
correzioni.

Esempio:
Questo
<strike>testo</strike>
barrato
<sup>testo in
apice</sup>

E=mc2

"Superscript": indica
al browser di portare
il testo al di sopra
della linea di
scrittura. Utile per
formule matematiche
(ad esempio le
potenze)

H2O

"Subscript": indica al
browser di portare il
testo al di sotto della
linea di scrittura
(utile ad esempio per
i simboli chimici)

Esempio:
E=mc<sup>2</sup>
<sub>testo in
pedice</sub>

Esempio:
H<sub>2</sub>O

Di fatto i tag <b> e <i> sono molto utilizzati, perch consentono di cambiare lo stile del testo al volo.
Gli stili logici
Come abbiamo visto gli stili logici forniscono anche informazioni sul contenuto e la loro formattazione
spesso lasciata al browser con risultati a volte deludenti. Proprio per questo gli stili logici sono entrati in
disuso e sono poco usati.
Riportiamo di eseguito i principali stili logici, per completezza, ma non sar necessario ricordarseli.
Codice HTML

Visualizzazione

Descrizione

<abbr>abbreviazione</<abbr>

C/A HTML.it

Indica un
abbreviazione.
Nessun rendering

del testo
particolare
Esempio:
<abbr>C/A</abbr> HTML.it
<acronym>acronimo</acronym> HTML

Indica un
acronimo. Nessun
rendering del
testo particolare

Esempio:
<acronym>HTML</acronym>
<address>indirizzo</address>

HTML.it - via dei


Castani 183/185
00172 Roma

Serve per indicare


gli indirizzi: siano
essi e-mail, o
indirizzi fisici. Il
testo viene
visualizzato in
corsivo

Nel mezzo del


cammin di nostra
vita mi ritrovai
per una selva
oscura ch la
diritta via era
smarrita

Sono blocchi di
citazione.

Nel mezzo del


cammin di
nostra vita mi
ritrovai per una
selva oscura ch
la diritta via era
smarrita

Per citazioni brevi:


il testo
visualizzato in
corsivo.

if (document.all)
alert ("ciao");

Indica un blocco di
codice in
linguaggio di
programmazione.
Nessun rendering
del testo
particolare

LHTML un
linguaggio di
contrassegno

Indica una
definizione: il
testo
visualizzato in

Esempio:
<address>HTML.it - via dei
Castani 183/185 00172
Roma</address>
<blockquote>blocco di
citazione</blockquote>

Esempio:

Il testo viene
rientrato verso
destra.

<blockquote> Nel mezzo del


cammin di
nostra vita mi ritrovai per una
selva oscura ch la diritta via era
smarrita </blockquote>
<cite>citazione</cite>

Esempio:
<cite> Nel mezzo del cammin di
nostra vita mi ritrovai per una
selva oscura ch la diritta via era
smarrita </cite>
<code>codice</code>

Esempio:
<code>if (document.all) alert
(&quot;ciao&quot;);</code>

<dfn>definizione</dfn>

Esempio:

corsivo

<dfn>LHTML un linguaggio di
contrassegno</dfn>
<em>enfasi</em>

Ti ho detto
questo!

Serve per porre


lenfasi su
unespressione: il
testo
visualizzato in
corsivo

digitazione da
tastiera

Indica una
digitazione da
tastiera: il testo
viene visualizzato
a spaziatura fissa

Come diceva Don


Abbondio: "Il
coraggio, uno non
se lo pu dare"

Indica una
citazione breve
allinterno del
testo. Nessun
rendering del
testo particolare

Esempio:
Ti ho detto <em>questo!</em>
<kdb>keyboard</kdb>

Esempio:
<kdb>digitazione da
tastiera</kdb>
<q>citazione allinterno della
frase</q>

Esempio:
Come diceva Don Abbondio:
<q>&quot;Il coraggio, uno non
se lo pu dare&quot;</q>
<samp>esempio</samp>

ecco un esempio Indica un


di "samp"
esempio. Il testo
viene visualizzato
a spaziatura fissa.

Esempio:
<samp>ecco un esempio di
&quot;samp&quot;</samp>
<strong>rafforzamento</strong> Ecco un testo
rafforzato

Inseriamo i dati
nella variabile
temporanea temp

Esempio:
Ecco un <strong>testo
rafforzato</strong>
<var>variabile</var>

Esempio:
Inseriamo i dati nella variabile
temporanea <var>temp</var>

Approfondimenti

Inseriamo i dati
La variabile viene
nella variabile
visualizzata in
temporanea temp corsivo.

Come si pu vedere molti tag (logici e fisici) tradiscono lorigine scientifica e informatica del Web (sono
presenti tag per blocchi di codice di programmazione, per definizioni, per lindicazione delle variabili).
Sorprendentemente nessuno dei tag fisici o logici stato dichiarato "deprecato" dal W3C, ma anzi tutti questi
tag sono passati dallHTML 3.2 originario fino allXHTML (passando illesi attraverso lHTML 4).
Per quel che riguarda i tag fisici: a rigor di logica lo stile "grassetto" dovrebbe essere ottenuto con i fogli di
stile (cos come tutte le formattazioni), ma evidentemente la possibilit di ottenere un testo in grassetto
semplicemente scrivendo "<b>testo</b>" troppo comoda per poter essere considerata obsoleta.
Per quel che riguarda i tag logici: in realt questo tipo di tag offrono un ulteriore aiuto al webmaster anche in
un approccio a fogli di stile. Se infatti si ha laccortezza di ridefinire i tag allinterno della definizione degli stili,
si hanno molte occasioni di utilizzare una formattazione mirate a seconda della funzione del contenuto: in
questottica, il fatto che alcuni tag logici non restituiscano nessun rendering particolare addirittura un invito
a ri-definire lo stile del tag.

Scegliere il font del testo


La presente lezione tratta la scelta del colore, delle dimensioni e del tipo di carattere del testo attraverso
lutilizzo del tag "font". Si tratta di un argomento obsoleto, perch la formattazione del testo in tutti i siti
moderni viene attribuita attraverso i fogli di stile. Lutilizzo del tag <font> inoltre disapprovato dal W3C, e
dunque sta cadendo in disuso. In ogni caso si tratta di un argomento che un buon webmaster non pu
ignorare: come gi detto per studiare i fogli di stile ci sar tempo, e comunque un passo che viene dopo la
conoscenza dellHTML.
Il tipo di carattere (cio il "font") che il browser visualizza di default il "Times".
Purtroppo questo carattere (ottimo per la carta stampata) non adatto a essere visualizzato sul monitor di
un computer: una questione di "grazie" (le grazie sono quegli abbellimenti tipografici delle lettere, che
dovrebbero servire per rendere pi leggibile il carattere).
Dal momento che i caratteri con grazie non ottengono il risultato voluto sul monitor (quello cio di rendere le
lettere maggiormente riconoscibili e di conseguenza il testo pi leggibile), ma anzi ottengono leffetto
contrario, si preferisce di solito utilizzare dei caratteri senza grazie come il "Verdana", l"Arial" o l"Helvetica"
(si veda l'articolo I font e la tipografia del testo).
Per scegliere il tipo di carattere con cui un font deve essere visualizzato sufficiente usare la sintassi:
<font face="Arial">testo in
Arial</font>

testo in Arial

<font face="Verdana">testo in
Verdana</font>

testo in Verdana

<font face="Geneva">testo in
Geneva</font>

testo in Geneva

Tuttavia bene sottolineare da subito che non possibile far s che lutente visualizzi un testo in un
carattere fantasioso scelto da noi. Allo stato attuale dellarte lutente che naviga in internet pu visualizzare
solo i caratteri che sono installati nel suo sistema: in Windows si tratta dei caratteri presenti in: Pannello di
controllo > Tipi di caratteri.

Se ad esempio scarichiamo da http://font.html.it il carattere Hackers, lo scompattiamo e lo inseriamo nella


cartella dei caratteri, saremo poi in grado di visualizzare sul nostro computer il testo in Hackers.
Ma quando metteremo il nostro sito nel web gli utenti visualizzeranno un semplicissimo Times. Come
nellesempio sotto indicato:
<font face="hackers">testo in
hackers</font>

testo in hackers

Per questo motivo bene tener conto di due accorgimenti:

scegliere caratteri "sicuri" , che siano cio senzaltro presenti sul pc dellutente
non indicare un solo carattere, ma una serie di caratteri che gradualmente si allontanano dal risultato
che vorremmo ottenere, ma non di molto, fino ad indicare la famiglia a cui il nostra carattere
appartiene. In questo modo il browser dellutente cercher di trovare nella propria cartella dei fonts il
primo carattere indicato, se non lo trova passer al secondo, e solo come ultima spiaggia sceglier
si utilizzare il carattere predefinito (il famigerato "Times")

Vediamo alcuni esempi di famiglie "sicure" di caratteri:


<font face="Verdana, Arial,
Helvetica, sans-serif">Verdana e
caratteri simili</font><br>

Verdana e caratteri simili


Arial e caratteri simili

<font face="Arial, Helvetica, sansserif">Arial e caratteri


simili</font><br>

Times e caratteri simili


Curier e caratteri simili
Georgia e caratteri simili

<font face="Times New Roman,


Times, serif">Times e caratteri
simili</font> <br>

<font face="Courier New, Courier,


mono">Curier e caratteri
simili</font><br>

<font face="Georgia, Times New


Roman, Times, serif">Georgia e
caratteri simili </font> <br>

<font face="Geneva, Arial, Helvetica,


sans-serif">Geneva e caratteri
simili</font>

Geneva e caratteri simili

vero: limpossibilit di scegliere i caratteri che preferiamo limita terribilmente le nostre possibilit
espressive, ma il bello di sviluppare per il web proprio accettare di creare con delle regole ben definite, e a
volte anche molto vincolanti.
Per i titoli delle pagine, i menu, e quantaltro potremmo poi sempre utilizzare delle immagini con il nostro
carattere tipografico preferito (ad esempio delle "gif").

Scegliere il colore del testo


Adesso che abbiamo scelto il carattere con cui scrivere il nostro testo possiamo scegliere il colore, con la
sintassi:
<font color="blue">testo blu</font>

testo blu

ovvero:

ovvero

<font color="#0000FF">testo
blu</font>

testo blu

La scelta del colore pu essere effettuata nello stesso momento in cui si sceglie il tipo di carattere (dal
momento che "face" e "color" sono entrambi attributi del tag "font"). La sintassi :
<font face="Verdana, Arial,
Helvetica, sans-serif" color="blue">

testo blu in Verdana

testo blu in Verdana


</font>

Una volta scelto il colore possiamo sempre decidere di cambiarlo:


<font face="Verdana, Arial, Helvetica, testo blu in Verdana
sans-serif" color="blue">
testo rosso
testo blu in Verdana</font><br>

o meglio ancora:

testo blu in Verdana


<font face="Verdana, Arial, Helvetica,
testo rosso
sans-serif" color="red">
testo rosso
</font>

o meglio ancora:

<font face="Verdana, Arial, Helvetica,

sans-serif" color="blue">
testo blu in Verdana<br>
<font color="red">
testo rosso
</font>
</font>

La seconda sintassi preferibile alla precedente, perch la scelta del tipo di carattere viene effettuata una
sola volta, evitando cos di scrivere del codice inutile. Da notare che per evitare la ripetizione i due tag sono
annidati luno dentro laltro.

Le dimensioni del testo


Le dimensioni del testo si attribuisco mediante lattributo "size" del tag font.
Ci sono due modi per dare attribuire le dimensioni al testo tramite il tag <font>:

valori interi da 1 a 7
valori relativi alla dimensione di base del tag font (di default "3")

Nel caso dei valori interi, ecco la scala di grandezza:


<font size="1">testo di
grandezza 1</font><br>
<font size="2">testo di
grandezza 2</font><br>
<font size="3">testo di
grandezza 3</font><br>
<font size="4">testo di
grandezza 4</font><br>
<font size="5">testo di
grandezza 5</font><br>
<font size="6">testo di
grandezza 6</font><br>
<font size="7">testo di
grandezza 7</font><br>

testo di grandezza 1

testo di grandezza 2

testo di grandezza 3

testo di grandezza 4

testo di grandezza 5

testo di
grandezza 6

testo di
grandezza
7

Nel caso dei valori relativi alla dimensione di base possibile "spostarsi" nella scala di grandezza del <font>
utilizzando i segni "+" e "-".
Abbiamo detto che la grandezza del font di base di default nel browser 3.
Dunque se utilizziamo un size="+2", vuol dire che la dimensione del font deve essere di 2 misure pi grande
della dimensione del font di base, quindi avremo un font di grandezza 5. Vediamo lesempio:
<font size="+2">
Testo di grandezza +2 rispetto al
font di base (3).<br>
Cio font di grandezza 5.
</font>
<br><br>
<font size="5">
Testo di grandezza 5.
</font>

Testo di grandezza
+2 rispetto al font
di base (3).
Cio font di
grandezza 5.
Testo di grandezza
5.

Come si pu vedere le due sintassi sono equivalenti.


La grandezza del font di base pu anche esser cambiata:
<basefont size="1">
<font size="+2">
Testo di 2 grandezze superiore al font di base, sopra definito.
</font>
<br>
<font size="3">
Testo di grandezza 3.
</font>
<br><br>
<basefont size="2">
<font size="+2">
Testo di 2 grandezze superiore al font di base, sopra ridefinito.
</font>
<br>
<font size="3">
Testo di grandezza 3.
</font>

Come si pu vedere nella pagina esemplificativa.


importante evitare di cadere nellerrore di pensare che la dimensione relativa faccia riferimento al
precedente tag font. La dimensione relativa fa sempre riferimento alla dimensione del font di base:
Ecco un esempio
corretto, ma che non
dar il risultato
desiderato, perch la
dimensione relativa fa
sempre riferimento al

Testo di

<basefont>:

grandezza
7

<font size="7">
Testo di grandezza 7
testo di grandezza inferiore di 1
<font size="-1">
testo di grandezza inferiore
al font di base (che di default 3), NON
di 1 al font di base (che di
al tag precedente
default 3),
NON al tag precedente
</font>
</font>

Anche se non corretto farlo, Internet Explorer consente di utilizzare il tag <basefont> per impostare in una
sola volta il tipo di carattere del testo e il suo colore, come si pu vedere nellesempio.
Tuttavia questo tipo di trucco non funziona correttamente n con Mozilla (e quindi neanche con Netscape 6
o superiore, dal momento che eredita il motore di rendering di Mozilla), n con Opera.

NOTA BENE
Quando state utilizzando il tag <font> - sia che utilizziate il size i valori interi, sia che utilizziate le i valori
relativi al tag di base -, in realt la grandezza del carattere dipende dalle impostazioni del browser
dellutente (come gi abbiamo visto per i tag "heading").
Con Internet Explorer ad esempio andando in: Visualizza > Carattere.
Se cambiate le dimensioni del carattere, vedrete cambiare le dimensioni dei font.
Questo appunto per le grandezze da 1 a 7 sono grandezze anchesse relative.
Questa caratteristica da un lato positiva (permette di ingrandire testi piccoli), dallaltra pu risultare molto
fastidiosa per il webmaster.
Lunico modo per fissare il carattere (ancora una volta) quello di utilizzare i fogli di stile, esprimendo le
dimensioni in pixel.

Gli elenci nellHTML


Se abbiamo la necessit di inserire un elenco di termini, possiamo utilizzare le "liste", che sono
sostanzialmente di tre tipi:

Elenchi ordinati

Elenchi non ordinati

Elenchi di definizioni

Tutti e tre i tipi di elenchi funzionano nel medesimo modo: si apre il tag, si elencano i vari elementi della lista
(ciascuno con il proprio tag), si chiude il tag dellelenco. La sintassi ha quindi questa forma:
<elenco>
<elemento>nome del primo elemento
<elemento>nome del secondo elemento
</elenco>

come si pu vedere, il tag che individua lelemento della lista non ha bisogno di chiusura (la sua chiusura, in
questo caso, opzionale).
Le liste di definizioni hanno una struttura leggermente diversa che vedremo a breve.

Gli elenchi ordinati


Gli elenchi ordinati sono contraddistinti dallenumerazione degli elementi che compongono la lista. Avremo
quindi una serie progressiva ordinata e individuata da lettere o numeri (se utilizzate un programma di
videoscrittura, siete abituati a chiamarli elenchi numerati).
Il tag da utilizzare per aprire un elenco ordinato <ol> ("ordered list") e gli elementi sono individuati dal tag
<li> ("list item"):

<div>Testo che precede la lista


<ol>
<li>primo elemento
<li>secondo elemento
<li>terzo elemento
</ol>testo che segue la lista
</div>

Testo che precede la lista


1.

primo elemento

2.

secondo elemento

3.

terzo elemento

testo che segue la lista

Da notare che il tag che individua lelenco lascia una riga di spazio prima e dopo il testo che eventualmente
lo circonda (come avviene per il <p>); fa eccezione per linclusione di un nuovo elenco allinterno di un
elenco preesistente: in questo caso non viene lasciato spazio, n prima, n dopo.
Gli elementi dellelenco sono sempre rientrati di uno spazio verso destra: tutto questo serve a individuare in
modo inequivocabile lelenco.
Lo stile di enumerazione visualizzata di default dal browser quello numerica, ma possibile indicare uno
stile differente specificandolo per mezzo dellattributo type. Ad esempio:
<ol type="a">
<li>primo elemento
<li>secondo elemento
<li>terzo elemento
</ol>

Gli stili consentiti sono:


Valore
dell'attributo
type

type="1"
( cos di
default)

type="a"

type="A"

Stile di enumerazione

numeri arabi

<ol type="1">
<li>primo
<li>secondo
<li>terzo
</ol>

alfabeto
minuscolo

<ol type="a">
<li>primo
<li>secondo
<li>terzo
</ol>

alfabeto
maiuscolo

<ol type="A">
<li>primo
<li>secondo
elemento
<li>terzo
</ol>

1.

primo

2.

secondo

3.

terzo

a.

primo

b.

secondo

c.

terzo

A. primo
B. secondo
C. terzo

type="i"

type="I"

numeri
romani
minuscoli

numeri
romani
maiuscoli

<ol type="i">
<li>primo
<li>secondo
elemento
<li>terzo
</ol>
<ol type="I">
<li>primo
<li>secondo
elemento
<li>terzo
</ol>

i.

primo

ii.

secondo

iii.

terzo

I.

primo

II.

secondo

III.

terzo

Gli elenchi non ordinati


Gli elenchi non ordinati sono individuati dal tag <ul> ("unordered list"), e gli elementi dellelenco sono
contraddistinti anchessi dal tag <li> (in buona sostanza si tratta di quello che i programmi di videoscrittura
chiamano elenchi puntati):
<ul>
<li>primo elemento
<li>secondo elemento
<li>terzo elemento
</ul>

il tipo di segno grafico utilizzato per individuare gli elementi dellelenco di default dipende dal browser, ma di
solito un "pallino pieno". possibile comunque scegliere un altro tipo di segno:

Valore
dell'attributo
type

type="disc"
( cos di
default)

type="circle"

Stile di enumerazione

<ul type="disc">
<li>primo
<li>secondo
la
<li>terzo
visualizzazione
di default
</ul>
<ul type="circle">
<li>primo
visualizza un
<li>secondo
cerchio vuoto al
<li>terzo
proprio interno
</ul>
visualizza un

"pallino" pieno.

Visualizza un
type="square"

quadrato pieno

al proprio
interno

<ul type="square">
<li>primo
<li>secondo
elemento
<li>terzo
</ul>

primo

secondo

terzo

o
o
o

primo

primo

secondo
terzo

secondo
terzo

Da notare inoltre che il tipo di segno grafico, varia in automatico al variare dellannidamento della lista. Ad
esempio:
<ul>
<li>primo della 1a lista

primo della 1a lista

<li>secondo della 1a
lista
<ul>
<li>primo della 2a
lista
<li>secondo della 2a
lista

secondo della 1a lista

o
o

primo della 2a lista


secondo della 2a lista

primo della 3a
lista

terzo della 1a lista

<ul>
<li>primo della 3a
lista
</ul>
</ul>
<li>terzo della 1a
lista
</ul>

Elenchi di definizioni
Gli elenchi di definizioni sono individuati dal tag <dl>. Gli elementi dellelenco (a differenza delle liste
ordinate, e delle liste non ordinate) questa volta sono formati da due parti:
<dt>
<dt>

definition term: indica il termine da definire. A differenza


dellelemento <li> in questo caso non c rientro.
definition description:

la definizione vera e propria del termine.


Lelemento rientrato.

Vediamo un esempio:
<p>Ecco i principali tag
per delimitare il testo:
<dl>
<dt><p>
<dd>individua l'apertura Ecco i principali tag per delimitare il
testo:
di un nuovo paragrafo
<p>
<dt><div>
individua l'apertura di un nuovo
<dd>individua l'apertura
paragrafo
di un nuovo blocco di
<div>
testo
individua l'apertura di un nuovo
blocco di testo
<dt><span>
<dd>individua l'apertura <span>
individua l'apertura di un
di un elemento inline,
elemento inline, cui attribuire
cui attribuire una
una formattazione atraverso gli
formattazione atraverso
stili
gli stili
ci sono poi altri tag che...

</dl>
ci sono poi altri tag
che...
</p>

Approfondimenti
Ovviamente la scelta del tipo di elenco attraverso lattributo type deprecato dal W3C, perch si tratta di una
caratteristica che riguarda la formattazione, e dunque andrebbe effettuata utilizzando i CSS. Con i fogli di
stile c anche la possibilit di scegliere unimmagine (ad esempio una GIF) come segno distintivo per
lelenco puntato. Chi fosse interessato ad approfondire pu consultare la relativa lezione della guida ai fogli
di stile.

Link e lipertestualit
Una delle caratteristiche che ha fatto la fortuna del web lessere costituito non da testi ma da ipertesti
(unaltra delle caratteristiche che hanno fatto grande il web senzaltro la possibilit di interagire, ma questo
un altro discorso).
I link sono il ponte che consente di passare da un testo allaltro. In quanto tali, i link sono formati da due
componenti:
il contenuto che nasconde
il collegamento (non importa
se si tratta di testo o di
immagine)

la parte visibile del link, e proprio per


questo lutente deve essere sempre in
grado di capire quali sono i collegamenti
da cliccare allinterno della pagina

la risorsa verso cui il


collegamento punta

Si tratta di unaltra pagina (sullo stesso


server o su un server diverso), oppure
un collegamento interno a un punto della
pagina stessa

Di solito per spiegare che cosa sono i link si utilizza la metafora dellancora con la testa allinterno del
documento stesso, e la coda in un altro documento (o allinterno di un altro punto del documento stesso).

Link che puntano ad altri documenti


Ecco la sintassi per creare un link con riferimento a un sito web:
Le risorse per webmaster sono su <a href=http://www.html.it/>HTML.IT</a>.

Che d come risultato: 'Le risorse per webmaster sono su HTML.IT'.


Come si pu intuire la testa della nostra ncora il testo HTML.IT, mentre la coda, cio la destinazione
(specificata dallattributo href) il sito web verso cui il link punta, cio http://www.html.it.
indifferente che la destinazione dellancora sia una pagina HTML di un sito, unimmagine, un file pdf , un
file zip, o un file exe: il meccanismo del link funziona allo stesso modo indipendentemente dal tipo di risorsa;
poi il browser si comporter in modo differente a seconda della risorsa. Ad esempio:
Immagine
.gif, .jpg,
.png

Viene visualizzata nel browser

Documento
.html, .pdf,
.doc

La pagina visualizzata nel browser.


Nel caso dei documenti .doc e .pdf l'utente deve avere
installato sul proprio pc l'apposito plugin (nella maggior
parte dei casi sufficiente che abbia installato
rispettivamente Microsoft Word e Adobe Acrobat
Reader). Se non installato il plugin il sistema chieder

all'utente se salvare il file.


File .zip, file
.exe

Viene chiesto allutente di scaricare il file


NOTA bene: per motivi di sicurezza non possibile
eseguire un file .exe direttamente dal web;
lutente dovr sempre prima scaricarlo sul proprio
PC.

Potete anche specificare un indirizzo mail. In questo caso si aprir direttamente il client di posta dellutente
con lindirizzo e-mail pre-impostato. La sintassi la seguente:
<a href=mailto:tuaMail@nomeTuoSito.it>Mandami une-mail</a>

Che d come risultato: Mandami une-mail

I percorsi assoluti e relativi


Percorsi assoluti
Fino a quando ci troviamo nella condizione di creare un sito web di dimensioni ridotte (poche pagine) non
avremo problemi di complessit, e possiamo anche ipotizzare di lasciare tutti i nostri file in una medesima
cartella. evidente per che man mano che il nostro sito web cresce avremo bisogno di un maggior
ordine. Si presenter allora lesigenza di inserire le immagini del sito in una cartelle diverse (in modo da
averle tutte nella medesima locazione), e magari sar opportuno dividere il sito in varie sezioni, in modo da
avere tutti i documenti dello stesso tipo allinterno di un contesto omogeneo.
I siti web sono dunque organizzati in strutture ordinate: non a caso si parla di albero di un sito, per indicare
la visualizzazione della struttura alla base del sito.
Poich lorganizzazione di un sito in directory e sottodirectory una cosa normalissima, dobbiamo imparare
a muoverci tra i vari file che costituiscono il sito stesso, in modo da essere in grado di creare collegamenti
verso i documenti pi reconditi, destreggiandoci tra le strutture pi ramificate.
Per farlo esistono due tecniche:

indicare un percorso assoluto

indicare un percorso relativo

Nel caso in cui il documento a cui vogliamo puntare si trovi in una particolare directory del sito di
destinazione, con i percorsi assoluti non abbiamo che da indicare il percorso per esteso.
Se esaminiamo:
Leggi le risorse sui <a href=http://www.html.it/css/index.html>fogli di stile</a>

Possiamo vedere chiaramente che il link indica un percorso assoluto e fa riferimento a una particolare
directory. Nella fattispecie:

http://

Indica al browser di utilizzare il protocollo per


navigare nel web (lhttp)

www.html.it/

Indica di fare riferimento al sito www.html.it

css/

Indica che la risorsa indicata si trova allinterno


della cartella css

index.html

Indica che il file da collegare quello chiamato


index.html

Insomma, per creare un collegamento assoluto sufficiente fare riferimento allurl che normalmente vedete
scritto nella barra degli indirizzi. I percorsi assoluti si usano per lo pi, quando si ha la necessit di fare
riferimento a risorse situate nei siti di terze persone.

Percorsi relativi
Spesso vi troverete tuttavia a fare riferimento a documenti situati nel vostro stesso sito, e se state
sviluppando il sito sul vostro computer di casa (cio in locale) magari non avete ancora un indirizzo web,
e non sapete di conseguenza come impostare i percorsi. utile allora capire come funzionano i percorsi
relativi.
I percorsi relativi fanno riferimento alla posizione degli altri file rispetto al documento in cui ci si trova in quel
momento.
Per linkare due pagine che si trovano allinterno della stessa directory sufficiente scrivere:
<a href=paginaDaLinkare.html>collegamento alla pagina da linkare nella stessa directory
della pagina presente</a>

Poniamo ora di trovarci in una situazione di questo genere:

Dalla pagina index.html vogliamo cio far riferimento al file interna.html, che si trova allinterno della
directory interna, che a sua volta si trova allinterno della directory prima.
La sintassi la seguente:
<a href=prima/interna/interna.html>Visita la pagina interna</a>

Vediamo adesso lesempio opposto: dalla pagina interna vogliamo far riferimento a una pagina (index.html)
che si trova pi in alto di due livelli:

La sintassi la seguente:
<a href=../../index.html>Visita la pagina interna</a>

Come si vede, con i percorsi relativi valgono le seguenti regole generali:


Per far riferimento a un file <a
che si trovi allinterno della href=paginaDaLinkare.html>collegamento
stessa directory basta
alla pagina</a>
linkare il nome del file
Per far riferimento a un file <a
contenuto in una cartella di href=prima/interna/interna.html>Visita la
livello inferiore alla
pagina interna</a>
posizione corrente, basta
nominare la cartella seguita
dallo slash, e poi il nome
del file.
Secondo la formula:
cartella/nomeFile.html
Per tornare su di un livello, <a href=../../index.html>Visita la pagina
sufficiente utilizzare la
interna</a>
notazione:
../nomeFile.html

Grazie a questi accorgimenti potete agevolmente navigare allinterno delle directory del vostro sito: se ce ne
fosse bisogno potrete per esempio tornare su di un livello rispetto alla posizione del file, scegliere unaltra
cartella, e poi scegliere un altro file:
../altraCartella/nuovoFile.html

Per approfondimenti potete consultare la pagina desempio.

Approfondimenti
A volte potrete incontrare la notazione:
Leggi le risorse sui <a href=/css/index.html>fogli di stile</a>

Se il vostro sito allinterno di un server Unix (ma la sintassi funziona anche in sistemi Windows, basta che
non siano in locale), questa notazione non deve stupirvi: il carattere / indica la directory principale del sito,
altrimenti detta root. Dunque <a href=/css/index.html> un altro modo di esprimere i percorsi assoluti
allinterno del proprio sito.
Un'altra cosa importante da sapere che quando metterete il vostro sito all'interno dello spazio web,
l'indicazione della index all'interno di una directory facoltativa. Al posto di questo:
http://www.html.it/css/index.html

sufficiente indicare la directory:


http://www.html.it/css/

Verificate solo con il vostro gestore dello spazio web (cio "hosting"), se le pagine index della directory
devono avere forma index.html, index.htm, index.asp, index.php, home.asp, o altro.

Consigli per i nomi dei file


Quando mettere nel web il vostro sito internet, vi accorgerete che esistono due famiglie di sistemi operativi:
Windows e Unix. Questi due sistemi operativi utilizzano differenti modi per gestire i file, dunque alcuni
accorgimenti sono necessari:

consigliabile non lasciare spazi vuoti nei nomi dei file (gli spazi vuoti non sempre vengono
interpretati correttamente), meglio ovviare a questa necessit con un trattino basso (cio _). Ad
esempio: mio_file.html

maiuscole e minuscole possono fare la differenza (in ambiente Unix spesso la fanno), quindi
controllate il modo in cui avete scritto i file

Inoltre quando create un collegamento state attenti a non avere una notazione simile a questa:
<a href="file:///C|percorso\nomeFile.html">testo</A>

significa che state facendo un riferimento (assoluto) al vostro stesso computer: chiaro che quando metterete
i file nel vostro spazio web, le cose non funzioneranno pi.

I link interni o ancore


possibile anche creare un indice interno al documento, utilizzando le ncore.
Ciascuna ncora pu avere infatti un nome:
<a name=primo>Stiamo per esaminare la struttura. Eccetera</a>

Da notare che in mancanza dellattributo che indica il collegamento (href) le ncore non vengono viste come
link, ma la loro formattazione indistinguibile dal normale testo.
In un ipotetico indice allora possibile far riferimento allncora presente allinterno del documento attraverso
un link che punti ad essa:
<a href=#primo>vai al primo paragrafo</a>

il cancelletto indica che il collegamento deve cercare un ncora chiamata primo allinterno della pagina
stessa.
Se non si specifica il nome dellncora a cui si vuol puntare, viene comunque creato un link che punta ad
inizio pagina (viene cercata unncora il cui nome non specificato). Questo infatti un ottimo escamotage
per creare link vuoti (in alcuni casi vi occorreranno). Ad esempio:
<a href=#>link vuoto</a>

Per creare un indice interno alla pagina si procede dunque in due fasi distinte:

creazione dellancora a cui puntare (<a name=mioNome>)

creazione del collegamento allancora appena creata e riferimento attraverso il cancelletto (<a
href=#mioNome>)

bene non confondere le due fasi.


Un esempio di quanto appena esposto lo potete trovare nella pagina dellesempio.

Gli attributi del link


target
anche possibile specificare in quale finestra la pagina linkata deve essere aperta: di default infatti la
pagina viene aperta allinterno del documento stesso, ma possibile specificare che la pagina sia aperta in
una nuova finestra:
<a target=_blank href=http://www.html.it>visita HTML.IT</a>

cio:
visita HTML.IT

vedremo questo attributo pi in dettaglio quando parleremo dei frames.

title
Lattributo title molto importante, e serve per specificare un testo esplicativo per lelemento a cui lattributo
riferito (il title si pu infatti utilizzare anche per elementi differenti dalle ancore). Questa spiegazione
addizionale favorisce laccessibilit del sito anche ai disabili, alle persone per esempio che hanno disturbi
alla vista.
Se lasciate il cursore del mouse per qualche secondo su un collegamento dotato di title, vedrete comparire
una specie di etichetta con il testo specificato nel title:
<a title=in HTML.it puoi trovare risorse per webmaster href=http://www.html.it/
target=_blank >Visita HTML.it</a>

cio:
visita HTML.IT

L'attributo "title" anche utilissimo per migliorare la propria presenza nei motori di ricerca, che ne vanno a
leggere il contenuto.

hreflang
Con hreflang si indica la lingua del documento: si tratta di un attributo che migliora laccessibilit del sito,
oltre ad essere potenzialmente utile per i motori di ricerca (lattributo pu essere utilizzato ad esempio per
specificare la presenza di una sezione del proprio sito in lingua inglese):
Nel sito del <a href=http://www.w3c.org/ hreflang=eng target=_blank >Word Wide Web
Consortium</a> puoi trovare le specifiche dellHTML in lingua inglese

cio:
Nel sito del Word Wide Web Consortium puoi trovare le specifiche dellHTML in lingua
inglese

accesskey
Le accesskey sono delle scorciatoie "da tastiera" che potete utilizzare nel vostro sito. Si tratta di scegliere
delle lettere della tastiera che - quando vengano digitate dall'utente - permettono di andare direttamente a
determinate pagine.
Per esempio potreste specificare che:
<a href=http://www.html.it/ accesskey=h target=_blank >Torna allhome page di
HTML.it</a>

cio:
visita HTML.IT

In questa pagina digitando ALT + h + invio con Internet Explorer, oppure direttamente h + invio con
Mozilla si accede direttamente allhome page di HTML.it. Si tratta di un'altra tecnica per migliorare
laccessibilit, ma un uso improprio e indiscriminato di questa tecnica pu risultare davvero deleterio per la
navigazione. Diciamo che le accesskey dovrebbero essere riservate per la navigazione dei menu che
portano alle parti principali del sito.

Colorare i link
Abbiamo gi visto come colorare i link in tutta la pagina.
Possiamo per aver bisogno di colorare alcuni link della pagina in modo diverso.
Per farlo sufficiente annidare il tag <font> allinterno del link:
<a href="http://www.html.it/ target=_blank ><font color=red size=2 face=Verdana,
Arial, Helvetica, sans-serif>Torna allhome page di HTML.it</font></a>

cio:
Torna allhome page di HTML.it
ovviamente il modo giusto per colorare i link non quello di utilizzare il tag font, ma quello di utilizzare i fogli
di stile, come spiegato nella lezione 10 della Guida ai CSS.

Il tag BASE
I percorsi relativi fanno di norma riferimento alla directory in cui si trova il file HTML che stiamo scrivendo.
Se tuttavia vogliamo far riferimento a un differente percorso per tutti i percorsi relativi, possiamo farlo
specificandolo grazie al tag base, che va incluso nella head del documento. Ad esempio con:
<base href=http://www.mioSitoWeb.com/miaCartella>

specifico che dora in poi tutti i percorsi relativi faranno riferimento al percorso indicato.
E poi nel documento potr scrivere:
<a href=mioFile.html>collegamento al mio file</a>

sicuro che far riferimento a:


http://www.mioSitoWeb.com/miaCartella/mioFile.html

Si tratta di una caratteristica particolarmente utile quando bisogna mandare ad esempio delle mailing list in
formato HTML: possiamo infatti utilizzare i percorsi relativi per sviluppare la pagina della mailing list in locale,
e mantenerli inalterati grazie allutilizzo di questo tag. Grazie ad esso siamo infatti sicuri che anche lutente
che ricever la mail potr visualizzare le immagini e i link con un percorso corretto.

Inserire le immagni
Finora abbiamo visto come inserire e formattare il testo allinterno delle nostre pagine Web. Naturalmente
possiamo inserire anche delle immagini: diagrammi e grafici, fotografie, e in genere immagini create con un
programma di elaborazione grafica (come The GIMP, Photoshop o Paint Shop Pro).
I formati ammessi nel Web sono sostanzialmente tre:

GIF (Graphic Interchange Format). Le GIF sono immagini con non pi di 256 colori (dunque con
colori piatti e senza sfumature), come grafici o icone

JPG: lacronimo del gruppo di ricerca che ha ideato questo formato (il Joint Photographic
Experts Group), idoneo per le immagini di qualit fotografica

PNG (Portable Network Graphic). Il PNG un tipo di immagine introdotto abbastanza di recente,
elaborato dal W3C per risolvere i problemi di copyright del formato GIF (che appunto proprietario);

tuttavia oggi il PNG letto oramai da tutti i browser e offre alcune caratteristiche che gli altri formati
non hanno (come il supporto al canale alfa, caratteristica questa non ancora perfettamente
supportata da ogni browser).

Non provate dunque a inserire un file .psd ( il formato nativo di Photoshop) allinterno della vostra pagina
HTML: con grande probabilit il browser non vi caricher il file che vorreste includere (dovete infatti prima
convertire il file in uno dei formati sopra-indicati).
Inoltre importante ricordare che il codice HTML fornisce delle indicazioni al browser su come visualizzare il
testo e le immagini - ed eventualmente i video e i suoni - allinterno della pagina: il testo (come abbiamo
visto) scritto direttamente nel file HTML, le immagini invece sono caricate insieme alla pagina. Attenzione
dunque a non inserire immagini troppo pesanti (ricordatevi di ottimizzare sempre i file); bisogna evitare
inoltre di sovraccaricare la pagina con troppe immagini. Allo stato attuale dellarte infatti la maggior parte
degli utenti (e non soltanto quelli italiani) naviga ancora con un modem analogico da 56 Kbs: inserire troppe
immagini significa dunque creare pagine lente da caricare. Per ottenere un sito web dalla grafica
accattivante, spesso sufficiente giocare con i colori dello sfondo e delle scritte.
La sintassi per inserire unimmagine :
<img src=miaImmagine.gif>

dove:

img significa image, cio immagine

src significa source, cio origine

Il tag un tag vuoto, che non ha la necessit di essere chiuso.


Ecco ad esempio come inserire il logo di HTML.it in una pagina dallo sfondo blu (si presuppone che il logo si
trovi nella stessa cartella del file HTML):

<img src="logo.gif">

Resta valido il discorso sui percorsi relativi ed assoluti. Avremo ad esempio:


<img src="../img/logo.gif">
<img src=" http://www.html.it/img/logo.gif ">

Dal momento che il browser normalmente non sa quali siano le dimensioni dellimmagine, finch questa non
sia caricata completamente, unottima abitudine quella di indicare gi nel codice la larghezza (width) e
laltezza (height) dellimmagine: in questo modo si evita di vedere la pagina costruirsi man mano che viene
caricata, poich stiamo dando al browser unidea dellingombro. Ad esempio:
<img src="logo.gif" width="224" height="69">

Lattributo alt utile per specificare il testo alternativo (alternative text), fintanto che limmagine non viene
caricata o nel caso in cui non lo sia affatto:
<img src="logo.gif"
alt="HTML.it"
width="224" height="69">

Lattributo alt di estrema utilit per rendere il sito accessibile a tutti gli utenti: i disabili che non sono in
grado di vedere nitidamente le immagini sullo schermo potrebbero avere delle difficolt, nel caso in cui
lattributo alt non sia specificato. Gli ipo-vedenti e i non-vedenti sono infatti in grado di comprendere il
contenuto delle immagini grazie a dei software appositi (gli screen reader) che leggono lo schermo tramite
un programma di sintesi vocale. Non specificare il testo alternativo significa rendere impossibile la
navigazione.
Nel caso in cui la spiegazione dellimmagine sia particolarmente lunga, possibile espandere la descrizione
sintetica - fornita tramite lattributo "alt" - grazie ad un altro attributo: si tratta di longdesc (long description),
che permette di specificare un file con una spiegazione estesa dellimmagine. Ecco la sintassi:
<img src="logo.gif" alt="HTML.it" longdesc=descrizione.html width="224" height="69">

Nellesempio allegato possibile visualizzare il codice di una pagina con la descrizione estesa
dellimmagine. Nel caso in cui si utilizzi questo attributo anche buona norma utilizzare un link esplicito alla
pagina della descrizione.
longdesc dovrebbe essere utilizzato soprattutto nel caso in cui si usino delle immagini mappate (argomento
che analizzeremo in seguito), in modo da fornirne una spiegazione esauriente in ogni contesto.
In realt l'attributo alt non serve, come molti credono, a visualizzare un etichetta esplicativa dellimmagine
nel caso in cui il cursore del mouse si soffermi sopra essa: questo semmai un effetto collaterale che si
verifica con Internet Explorer. Lattributo corretto per far visualizzare un testo che commenti limmagine
infatti title:

<img src="logo.gif"
title="HTML.it"
alt="HTML.it"
width="224" height="69">

inoltre possibile specificare la grandezza (in pixel) del bordo attorno allimmagine:
<img src="logo.gif"
border="3"
width="224" height="69">

Si noti che i link lasciano sempre di default un bordo di un pixel attorno allimmagine (il colore sar quello
espresso nel body dallattributo link, oppure quello default quindi blu se non specificato altrimenti):

<a href="http://www.html.it"
target="_blank">
<img src="logo.gif"
width="224" height="69">
</a>

Dunque, nel caso dei link se non si desidera avere i bordi, sar necessario impostarli a 0:

<a href="http://www.html.it"
target="_blank">
<img src="logo.gif"
border="0"
width="224" height="69">
</a>

Disporre le immagini in un contesto


Se inserita in un testo, normalmente unimmagine va a capo. Cos:
<p>HTML.it &egrave; il primo sito italiano sul web publishing
<img src="logo.gif" width="224" height="69" border="0"> con
centinaia di esempi e guide esplicative </p>
HTML.it il primo sito italiano sul web publishing HTML.it il primo sito
italiano sul web publishing HTML.it il primo sito italiano sul web
publishing HTML.it il primo sito italiano sul web

publishing
con centinaia di esempi e
guide esplicative HTML.it il primo sito italiano sul web publishing
HTML.it il primo sito italiano sul web publishing

Abbiamo tuttavia la possibilit di allineare limmagine e il testo come preferiamo, utilizzando lattributo align.
Vediamo di seguito come vengono visualizzati align=left e align=right:

<p> <img src="logo.gif" width="224" height="69" border="1"


align="left">
HTML.it &egrave; il primo sito italiano sul web publishing,
con centinaia di esempi e guide esplicative </p>
HTML.it il primo sito italiano sul
web publishing, con centinaia di
esempi e guide esplicative HTML.it
il primo sito italiano sul web
publishing HTML.it il primo sito
italiano sul web publishing HTML.it il primo sito italiano sul web
publishing HTML.it il primo sito italiano sul web publishing HTML.it il
primo sito italiano sul web publishing HTML.it il primo sito italiano sul
web publishing

<p> <img src="logo.gif" width="224" height="69" border="1"


align="right">
HTML.it &egrave; il primo sito italiano sul web publishing,
con centinaia di esempi e guide esplicative </p>

HTML.it il primo sito italiano sul


web publishing, con centinaia di
esempi e guide esplicative HTML.it
il primo sito italiano sul web
publishing HTML.it il primo sito
italiano sul web publishing HTML.it il primo sito
publishing HTML.it il primo sito italiano sul web
primo sito italiano sul web publishing HTML.it il
web publishing HTML.it il primo sito italiano sul

italiano sul web


publishing HTML.it il
primo sito italiano sul
web publishing

Altri valori possibili sono:


Valore di
align

Visualizzazione

bottom

allinea la prima riga di testo sulla sinistra nella parte


bassa dell'immagine ( cos di default). Ecco l'esempio.

middle

allinea la prima riga di testo sulla sinistra al centro


dell'immagine. Ecco l'esempio.

top

allinea la prima riga di testo sulla sinistra nel lato


superiore dell'immagine. Ecco l'esempio

Da notare che, mentre align=left e align=right, sono utili per spostare limmagine a sinistra o a destra,
gli altri valori servono piuttosto per disporre le posizioni verticali di testo e immagini.
Infine con hspace (horizontal space, cio "spazio orizzontale") e vspace (vertical space, cio spazio
veritcale) possiamo impostare lo spazio (in pixel) che deve essere lasciata tra limmagine e cio che la
circonda.
Nel caso di hspace impostiamo uno spazio orizzontale da ambo i lati, come in questo caso:
<img src="logo.gif" width="224" height="69" hspace="20">

Nel caso di vspace lo spazio verticale, ma sempre da ambo i lati:


<img src="logo.gif" width="224" height="69" vspace="20">

cio:

Un attributo importante - di cui non vedrete nessun effetto "pratico" di formattazione, ma che vi servir ad
esempio per creare un effetto di "scambio immagine" grazie a JavaScript - quello che permette di
specificare il nome dell'immagine:
<img src=miaImmagine.gif name="logo">

Approfondimenti
Ovviamente sarebbe meglio impostare lo spessore e il colore dei bordi, gli spazi e la disposizione del testo
attorno alle immagini attraverso i fogli di stile.

Le mappe di immagini
A volte necessario far s che solo una determinata parte di un'immagine sia collegata a un link. il tipico
caso delle Regioni dItalia: abbiamo una cartina e abbiamo la necessit che alla sagoma di ciascuna regione
corrisponda un differente link.
In questo caso possiamo utilizzare le mappe.
Ne esistono due tipi:

le mappe lato client

le mappe lato server (non pi utilizzate)

Le mappe lato-client
Questo tipo di mappa contraddistinto dallattributo usemap del tag img:
<img src=miaImmagine.gif usemap=nomeMappa>

come valore dellattributo usemap bisogna specificare il nome della mappa a cui l'immagine fa riferimento.
A questo punto non ci resta che creare la mappa:
<map name=nomeMappa>

</map>

Allinterno del tag <map> dobbiamo poi specificare le aree sensibili a cui corrisponderanno i nostri link, con
relativi forme, coordinate e collegamenti. Per farlo si utilizza il tag <area>, per ogni zona sensibile che
vogliamoc reare.
Vediamo un esempio: abbiamo preso la cartina dellItalia e a scopo puramente didattico abbiamo deciso
di mappare la Regione Valle DAosta con una forma rettangolare, la Sardegna con un cerchio, e la Sicilia
con un poligono (per rendervene conto passate il mouse su una di queste regioni).

<img src="italia.gif" width="220" height="235" border="1" usemap="#regioni">


<map name="regioni" id="regioni">
<area shape="rect" coords="14,24,35,37" href="http://www.regione.vda.it/"
target="_blank" alt="Valle d'Aosta">
<area shape="circle" coords="45,156,29" href="http://www.regione.sardegna.it/"
Target="_blank" alt="Sardegna">
<area shape="poly" coords="105, 199, 115, 197, 121, 200, 131, 201, 139, 198, 150,
197, 156, 195, 151, 201, 145, 209, 148, 212, 150, 219, 152, 225, 147, 227, 144, 231, 128,
221, 119, 219, 113, 212, 108, 212, 102, 210, 98, 205"
href="http://www.regione.sicilia.it/" target="_blank" alt="Sicilia">
</map>

le coordinate fanno riferimento allimmagine stessa, e il vertice in alto a sinistra lipotetico punto con
coordinate 0,0. Le coordinate dei punti che descrivono le varie forme si riferiscono alla distanza in pixel da
quel punto (si tratter di volta in volta della x o della y).
Come si pu vedere per definire unarea necessario specificare una forma, che pu essere di tre tipi:
Forma

Descrizione

rettangolare

necessario specificare alcune coordinate del


rettangolo per individuare i veritici.
In particolare sono da specificare (in
questordine):

<area shape="rect">

circolare

la x del lato di sinistra

la y del lato alto

la x del lato destro

la y del lato in basso

necessario specificare le coordinate del centro


(x e y) e la misura del raggio (in pixel)

<area shape="circle">
poligonali
<area shape="poly">

necessario specificare tutte le coordinate del


poligono a coppie

In ciascun tag <area> inoltre possibile specificare lattributo alt per il testo alternativo (ed eventualmente il
longdesc).

Per il resto, il tag <area> si comporta esattamente come il tag <a>, con la possibilit di specificare ad
esempio il target in cui aprire i link.
In realt non difficile disegnare le mappe, perch ci sono gi software che lo fanno al posto nostro.
Se utilizzate un editor visuale (ad esempio Dreamwever MX) potete trovare degli strumenti integrati
nellambiente di sviluppo. che vi consentono di disegnare le mappe in tutta tranquillit.
In alternativa potete utilizzar dei programmi appositi, come CoffeCup Image Mapper, CuteMap o MapEdit
Per quel che riguarda il luogo in cui posizionare la mappa cos creata, dipende dalle vostre preferenze:
una buona norma per situare la mappa in prossimit dellimmagine, in modo da poterla reperire facilmente.

Approfondimenti
Con Internet Explorer le mappe a volte lasciano un fastidioso tratteggio sull'area che stata appena cliccata.
Per eliminarlo sufficiente utilizzare la seguente sintassi:
onFocus='this.blur()'

da applicare al tag <AREA> in questo modo:


<area shape="circle" coords="45,156,29" href="http://www.regione.sardegna.it/"
target="_blank" alt="Sardegna" onFocus=?this.blur()?>

Il metodo viene descritto in una pillola di PRO.HTML.it (si tratta in realt di sintassi JavaScript e non di
semplice HTML).

Le mappe di immagini lato server


In questo caso la mappatura dellimmagine non visibile allinterno della pagina HTML, ma presente
allinterno di un programma sul server, ad esempio un cgi.
La presenza di una mappa sullimmagine specificata dallattributo ismap del tag <img> e lindicazione
della posizione in cui si trova la mappa sul server viene data attraverso un link. Ad esempio:
<a href="cgi-bin/images/map2">
<img src="immagine.gif" ismap>
</a>

(notare che lattributo ismap non ha alcun valore).


Il link fa riferimento alla locazione della mappa sul server, e quando lutente cliccher sul collegamento, sulla
barra degli indirizzi comparir qualcosa di questo genere:
http://www.html.it/cgi-bin/menu.map?25,55

dal momento che il programma sul server avr tradotto la mappa in coordinate da passare al mouse.
C da dire che le mappe lato server non vengono pi usate, perch estremamente scomode ( poco pratico
mantenere in differenti file le indicazioni sullimmagine e quelle sulla mappa), dunque non le vedremo nel
dettaglio. Venivano utilizzate soprattutto agli albori del web, quando non tutti i browser erano in grado di
interpretare le mappe lato-client: con le mappe lato-server si aveva la certezza, allora, che qualsiasi utente
potesse leggere correttamente limmagine (dal momento che il lavoro di mappatura veniva fatto dal server,
appunto, e non dal computer dellutente).

Tabelle: struttara di base


Le tabelle sono una delle parti pi importanti di tutto il codice HTML: nate sin dagli inizi del Web per
impaginare dati aggregati, si sono poi trasformate in uno strumento indispensabile per gestire i layout grafici.
Il loro ampio utilizzo allinterno dei documenti ha fatto s che nel passaggio dallHTML 3.2 allHTML 4 - le
specifiche delle tabelle venissero estese con una serie di notazioni destinate a far ordine allinterno di un
codice che rischiava di diventare troppo vasto.
Immaginiamo la nostra prima tabella come una griglia formata da righe e colonne. I tag necessari per creare
una tabella sono:
<table>

apre la tabella

<tr>

table row: indica lapertura di una riga

<td>

table data: indica una cella allinterno di una riga

In questi nostri primi esempi presupponiamo che il numero delle celle allinterno di ciascuna riga sia
costante: ogni riga avr cio lo stesso numero di celle. Ci sono dei metodi per variare il numero delle celle
allinterno di una riga, ma li vedremo in seguito.
Lattributo border permette di specificare di quanti pixel deve essere il bordo delle tabelle. Ad esempio:
<table border=2>

Lo useremo in questi esempi, altrimenti non percepiremmo la struttura di quanto stiamo costruendo. Ecco un
primo esempio di tabella:
<table border="1>
<tr>
<td>prima cella</td>
<td>seconda cella</td>
</tr>
<tr>
<td>terza cella</td>
<td>quarta cella</td>
</tr>
</table>

Che viene visualizzato cos:

prima cella seconda cella


terza cella quarta cella
Possiamo specificare la larghezza e l'altezza delle tabelle tramite gli attributi width e height che possono
essere riferiti a tutti e tre i tag (<table>, <tr>, <td>). Il valore di questi attributi pu essere specificato con una
larghezza fissa (in pixel: in questo caso basta indicare un numero intero), oppure in percentuale (il numero
deve essere allora seguito dal simbolo %): in questo caso la tabella si adatta secondo lo spazio a
disposizione.
<table width="300" height="200" border="1>
<tr>
<td>prima cella</td>
<td>seconda cella</td>
</tr>
<tr>
<td>terza cella</td>
<td>quarta cella</td>

</tr>
</table>

Che viene visualizzato cos:

prima cella

seconda cella

terza cella

quarta cella

Oppure:
<table width="75%" border="1>
<tr>
<td width="25%">prima cella</td>
<td width="75%">seconda cella</td>
</tr>
<tr>
<td width="25%">terza cella</td>
<td width="75%">quarta cella</td>
</tr>
</table>

Che viene visualizzato cos:

prima cella

seconda cella

terza cella

quarta cella

Di solito la larghezza e laltezza globali della tabella sono espresse nel tag <table>, mentre la larghezza
delle varie celle viene espressa nei <td> della prima riga. Laltezza in percentuale non sempre visualizzata
correttamente da tutti i browser.
Come detto inizialmente le tabelle vanno immaginate come delle griglie, tutto sommato abbastanza rigide:
leventuale larghezza specificata nelle celle della prima riga avr effetto dunque anche sulle celle delle righe
sottostanti. Viceversa non possibile variare arbitrariamente le dimensioni delle celle: le misure specificate
nelle righe sottostanti non avranno infatti effetto, come si pu vedere nellesempio allegato, che non
corretto.
Le dimensioni espresse non devono tuttavia essere in contraddizione ma mano che si procede verso
linterno della tabella: in un caso simile infatti vincerebbe il valore specificato nel tag genitore, come si pu
vedere nella pagina di esempio.
Inoltre (come si evince dagli esempi) la visualizzazione dei layout con indicazioni non corrette a
discrezione del browser, quindi si rischia di ottenere risultati diversi da quelli voluti.

Creare gruppi di righe: <caption>, <thead>, <tfoot>, <tbody>


Come dicevamo, la struttura delle tabelle ha letteralmente invaso le pagine HTML, che si sono riempite di
<tr> e di <td>. Per portare un po di ordine in questo caos nelle specifiche sono state introdotti dei tag
(opzionali) che consentono di capire facilmente quali siano le diverse parti della tabella.
Per individuare facilmente i gruppi di righe sono stati introdotti i seguenti tag:
<caption> lintestazione, il titolo con un commento esplicativo sulla
tabella
<thead>
la testa, la parte iniziale della tabella, quella che contiene
ad esempio indicazioni sul contenuto delle celle

<tfoot>

il piede, la conclusione della tabella, quella che consente


ad esempio di tirare le somme

<tbody>

il corpo, la parte centrale con il contenuto vero e proprio


della tabella

<thead>, <tfoot>, <tbody> sono tag che consentono di individuare gruppi di righe (row group).
Da notare che contrariamente a quello che si potrebbe pensare il tag <tfoot> che chiude la tabella,
anteposto rispetto al <tbody>. Lidea di base che il browser nelleseguire il rendering del codice tenga
conto della parte iniziale e della parte finale della tabella, e il corpo vero e proprio sia sviluppato nella sua
interezza tra le due estremit.
Unaltra particolarit che le celle allinterno del tag <thead> possono essere indicate con <th> (table
header), al posto del consueto <td> (table data), in questo caso il contenuto delle celle
automaticamente formattato in grassetto e centrato.
Ecco comunque uno schema che riassume la struttura delle tabelle secondo lHTML 4:

A questa pagina possibile visualizzare un esempio.

Raggruppare gli stili delle colonne


Come possibile suddividere le righe di una tabella in gruppi ordinati, allo stesso modo possibile
raggruppare gli stili delle colonne. Il tag da usare il <colgroup> e serve per fornire indicazioni su come le
colonne debbano essere visualizzate.
Purtroppo questo tag nel momento in cui scrivo non funziona ancora correttamente con tutti i browser: il tag
correttamente visualizzato da Internet Explorer, supportato solo in parte da Opera, ma non ben
interpretato da Mozilla (e dunque neanche da Netscape 7), che lo ignora tranquillamente.
Tuttavia trattandosi di una specifica del W3C in futuro il supporto a questa sintassi dovrebbe essere
maggiore.

Prima di vedere nel dettaglio questo tag anticipiamo due concetti che vedremo in seguito quando ci
occuperemo pi approfonditamente della formattazione delle tabelle e che ora ci servono per meglio
comprendere l'uso di <colgroup>.

Lattributo align pu essere riferito sia a <tr>, sia a <td> e serve per definire lallineamento dei
contenuti a sinistra, a destra o al centro (left, right, center)

Lattributo bgcolor pu essere riferito tanto a <table>, <tr>, o <td> e come abbiamo visto a
proposito del <body> - consente di impostare un colore di sfondo

Il tag <colgroup> - la cui chiusura facoltativa - va posto subito dopo il tag <caption> e prima di <thead>, e
consente di impostare un layout unico per le colonne senza avere la necessit di specificare allineamento
del testo, o il colore di sfondo per ogni singola cella.
Con lattributo span (da non confondere con il tag <span>) possiamo impostare il numero di colonne che
fanno parte del gruppo.
Per avere un layout di questo genere:

baster allora scrivere:


<table width="75%" border="1">
<colgroup bgcolor="#00FFCC" width="20%" align="right"></colgroup>
<colgroup span="2" bgcolor="#33CCFF" width="30%" align="center">
<caption>
<div align="center"><b>Fatturato dell'azienda XYZ</b></div>
</caption>
<thead>
<tr>
<th>Mesi di attivit&agrave;</th>
<th>Fatturato da attivit&agrave; 1 (in euro)</th>
<th>Fatturato da attivit&agrave; 2 (in euro)</th>
</tr>
</thead>
eccetera....
</table>

come illustrato dettagliatamente in questa pagina.


<colgroup> ha lindubbio vantaggio di poter attribuire in una sola volta la formattazione a un numero elevato
di colonne. Ad esempio:
<colgroup span=40 align=right>

Se si preferisce attribuire pi esplicitamente lo stile ad una colonna si pu usare il tag <col> (che non
necessita chiusura) allinterno di <colgroup>. In questo caso lattributo span va riferito a <col> e non a
<colgroup>.
Ad esempio:

<colgroup span="5" width="20" bgcolor="red"></colgroup>


<colgroup width="60">
<col span="5" bgcolor="blue" align="left">
<col span="5" bgcolor="green" align="right">
</colgroup>

come mostrato in dettaglio nella pagina di esempio.

Approfondimenti
I tag <colgroup> e <col> in teoria supportano anche la possibilit di creare delle celle larghe
proporzionalmente. Ad esempio:
<colgroup width=1*>
<colgroup width=2*>

questa sintassi dovrebbe dividere lo spazio a disposizione in tre parti e assegnare una parte alla prima cella
e due parti alla seconda cella. In realt questa sintassi non ancora supportata da nessun browser.

Raggruppare le celle con rowspan e colspan


Finora abbiamo immaginato le tabelle come griglie rigide, in cui il numero delle colonne era dato come
costante e non modificabile. I raggruppamenti di righe e colonne che abbiamo esaminato finora non hanno
modificato minimamente questa struttura.
In realt possibile raggruppare le delle all'interno delle colonne in modo da avere ad esempio una riga da 2
colonne e unaltra da 3. Per ottenere questo risultato necessario specificare che una cella deve occupare il
posto di 2 (o pi colonne). In questo caso si utilizza lattributo colspan sul <td>, specificando come valore il
numero di celle che devono essere occupate. Ad esempio:

<td colspan="2">

Il cui codice corrispondente :


<table width="430" border="1" bordercolor="#000000">
<tr>
<td width="30%"> <br> <br> <br> </td>
<td width="30%">&nbsp;</td>
<td width="30%">&nbsp;</td>
</tr>
<tr>
<td><br> <br> <br> </td>
<td colspan="2">&nbsp;</td>
</tr>
</table>

Tramite lattributo rowspan (da riferirsi sempre a <td>) invece possibile creare delle celle che occupino pi
di una riga. Ad esempio:

<td rowspan="2">

il cui codice corrispondente :


<table width="430" border="1" bordercolor="#000000">
<tr>
<td width="30%"> <br> <br> <br> </td>
<td width="30%" rowspan="2">&nbsp;</td>
<td width="30%">&nbsp;</td>
</tr>
<tr>
<td><br> <br> <br> </td>
<td>&nbsp;</td>
</tr>
</table>

Per un esempio approfondito esaminare il codice di questa pagina.

Annidare tabelle
anche possibile annidare le tabelle le une dentro le altre. Come in questo esempio:
<table width="430" border="1">
<tr>
<td width="50%">&nbsp;</td>
<td width="50%">&nbsp;</td>
</tr>
<tr>
<td height="24">&nbsp;</td>
<td><table width="100%" border="1">
<tr>
<td>&nbsp;</td>
<td>&nbsp;</td>
<td>&nbsp;</td>
</tr>
<tr>
<td>&nbsp;</td>
<td>&nbsp;</td>
<td>&nbsp;</td>
</tr>
</table></td>
</tr>
</table>

che d come risultato:

Per evitare che compaiano nel layout degli spazi indesiderati consigliabile aprire e chiudere la tabella a
ridosso del tag della cella che la contiene.

Attributi del TAG <TABLE>


Per quel che riguarda il tag <table>, i seguenti attributi che ci permettono di regolare le distanze tra i margini
della tabella (o della cella) e il contenuto:

border

(che abbiamo gi visto) specifica la larghezza dei bordi di


una tabella (in pixel)

cellspacing specifica la distanza (in pixel) tra una cella e laltra, oppure
tra una cella e il bordo. Di default un pixel, dunque
occorrer sempre azzerarlo esplicitamente, quando non lo
si desideri
cellpadding indica la distanza tra il contenuto della cella e il bordo. Se il
valore viene indicato con un numero intero, la distanza
espressa in pixel; il cellpadding tuttavia pu anche essere
espresso in percentuale. Di default la distanza nulla

La dimensione indicata nel cellpadding e dal cellspacing - una volta specificata ha effetto su tutti i lati
della cella.
I rapporti tra gli attributi che abbiamo appena esaminato sono regolati come segue:

Con questa sintassi ad esempio si imposta una tabella con bordo di 1 pixel, senza spazio tra le celle e con il
contenuto che distanziato dai bordi della cella di 10 pixel:
<table width="75%" border="1" cellpadding="10" cellspacing="0">

come si pu vedere nellesempio.


per quel che riguarda lattributo border, a partire da Internet Explorer 4 e da Netscape Navigator 6
possibile modificare laspetto dei bordi esterni della tabella (tramite lattributo frames) e delle righe fra le
celle (tramite lattributo rules).
Vediamo quali sono i possibili valori e i relativi esempi:

esempio
<table border="1"
frame="above">
(nelle pagine di esempio qui a fianco le
righe interne tra le celle sono state
azzerate per facilitare la comprensione,
dunque ci troveremo nella situazione in
cui rules="none")

spiegazione
Il bordo della tabella
presente:

void: in nessun lato.


il valore di default

above: solo nel lato


superiore

<table border="1" rules="rows">


(nelle pagine di esempio qui a fianco i
bordi esterni della tabella sono stati
azzerati per facilitare la comprensione,
dunque ci troveremo nella situazione in
cui frame="void")

below: solo nel lato


inferiore

hsides: solo nei lati


superiore e inferiore

vsides: solo a sinistra e


a destra

lhs: solo nel lato


sinistro (left-hand side)

rhs: solo nel lato destro


(right hand side).

box: in tutti e quattro i


lati

border: in tutti e
quattro i lati

Le righe interne alle celle sono


presenti:

none: da nessuna
parte. il valore di
default

groups: le righe
separano i gruppi (siano
essi gruppi di righe:
<thead>, <tfoot>,
<tbody> - o gruppi di
colonne: <colgroup>)

rows: le righe separano


i vari <tr>

cols: le righe separano


le colonne

all: le righe separano


tanto i <tr>, quanto le
colonne

Attributi di <TABLE>, <TR> e <TD>


I seguenti attributi invece hanno invece valore per tutti gli elementi della tabella (<table>, <tr>, <td>), li
presenteremo quindi in un medesimo contesto.

Dimensioni
Abbiamo gi esaminato gli attributi width e height che determinano la larghezza e laltezza (in pixel o in
percentuale) di tabelle, righe o celle.

Lo sfondo
Possiamo assegnare un colore di sfondo tramite lattributo bgcolor, oppure unimmagine tramite
background, come abbiamo gi visto a proposito del tag <body>.
Vediamo un esempio:
bgcolor

codice:
<table width="75%" border="1"

align="center" bgcolor="#00FF00">
<tr>
<td width="50%" bgcolor="#FF0000">
<font color="#FFFFFF">prova</font>
</td>
<td width="50%">&nbsp;
</td>
</tr>
</table>
visualizzazione:

prova
background codice:
<table width="75%" border="1"
align="center" bgcolor="#00FF00">
<tr>
<td width="50%"
background="tabelle/sfondo.gif">
<font color="#FFFFFF">prova</font>
</td>
<td width="50%">&nbsp;
</td>
</tr>
</table>
visualizzazione:

prova

Come gi nel <body> l'immagine di sfondo viene ripetuta, ed possibile specificare entrambi gli attributi
(bgcolor e background) allinterno dello stesso tag:
<td width="50%" bgcolor=#0000FF background="tabelle/sfondo.gif">

Lallineamento
Lattributo align, se riferito al tag <table>, sposta la tabella rispettivamente a sinistra (align=left cos di
default), a destra (align=right), o al centro (align=center) del documento. Es:
<table align=right>

Se riferito a <tr> o a <td> invece il contenuto delle celle ad essere allineato a sinistra, al centro oppure a
destra. Es:
<td align=right>
contenuto
</td>

Allo stesso modo valign utile per lallineamento verticale delle celle. I valori possibili sono top (alto),
middle (in mezzo il valore di default), bottom (in basso), baseline (alla linea di base). Es:
<td height=100 valign=middle>
contenuto
</td>

Colori dei bordi


Per i bordi esistono gli attributi bordercolor, bordercolorlight, bordercolordark. Ad esempio:
<table border="2" bordercolor="blue" bordercolorlight="#00CCFF"
bordercolordark="#000099">

Questi attributi - che consentono di creare degli effetti bellissimi - sono visualizzati correttamente soltanto da
Internet Explorer, mentre con gli altri browser (Mozilla, Opera) verranno visualizzati in modo parziale se non
scorretto.
In realt il modo corretto per attribuire un colore al bordo quello di utilizzare i CSS.
Ci sono tuttavia delle soluzioni - utilizzate dagli sviluppatori sin dallHTML 3 che permettono di mostrare un
filetto colorato attorno alle tabelle. La tecnica di solito quella di lasciar trasparire il colore di sfondo
attraverso lo spazio fra le celle. Vediamo un esempio:
<table width="450" bgcolor="#00CCFF" cellpadding="10" cellspacing="1">
<tr bgcolor="FFFFFF">
<td width="50%"><b>contenuto</b></td>
<td width="50%">&nbsp;</td>
</tr>
</table>

che d:

contenuto

nowrap
Grazie allattributo nowrap si pu far s che il contenuto di una cella non vada a capo, a meno che non lo
forziamo espressamente con un <br> ( un break, cio un "interruzione"):
<table width="100" border="1">
<tr>
<td nowrap>
Se non lo vogliamo non va a capo.<br>Qui va a capo.
</td>
</tr>
</table>

cio:

Se non lo vogliamo non va a capo.


Qui va a capo.

Approfondimenti
Da notare che quando una cella non viene riempita con un qualsiasi elemento non tutti i browser
visualizzeranno i bordi allo stesso modo:
<table width="200" border="1">
<tr>
<td width="50%">
</td>
<td width="50%">contenuto
</td>

</tr>
</table>

cio:

contenuto
Dunque opportuno riempire sempre le celle con qualcosa, sia pure un &nbsp; ( la notazione per indicare
un non-breaking space, cio uno "spazio che non va a capo"), o un <br>. Attenzione che questi caratteri
speciali prendono le dimensioni del tag <font> allinterno di cui sono contenuti.
Con Netscape 4 per ottenere la visualizzazione desiderata spesso necessario introdurre una gif
trasparente di 1 pixel x 1 pixel (detta shim) come sfondo della cella.
Ovviamente per ottenere il layout desiderato di bordi e tabelle sarebbe pi opportuno utilizzare i fogli di stile.
Ecco alcuni link interessanti: i margini, il padding, i bordi, lo sfondo.

Impaginare un layout con le tabelle


Le tabelle, grazie alle loro molteplici e multiformi caratteristiche, si sono rivelate uno strumento
indispensabile non solo per impaginare i dati ma soprattutto per visualizzare i layout grafici: grazie alle
tabelle infatti possibile costruire delle griglie in cui inserire i vari contenuti di un sito e per mezzo degli
sfondi, dei margini possibile riprodurre unimpostazione accattivante.
Visualizzando la pagina dell esempio possibile vedere il layout di HTML.it impaginato grazie alle tabelle:
questo primo esempio utilizza una tabella unica suddivisa nelle classiche sezioni <thead>, <tbody> e
<tfoot>.
In questo secondo esempio il medesimo risultato ottenuto sovrapponenedo una serie di tabelle, senza cos
vincolare tutto a ununica struttura.
Le possibilit di ottenere il layout che abbiamo appena esaminato comunque sono molteplici. Grazie alle
tabelle possibile anche progettare layout liquidi, che si adattino cio alla risoluzione del monitor dellutente.
vero che limpaginazione a tabelle ha fatto il suo tempo:

perch mischia la visualizzazione dei dati ai dati stessi, e dunque difficile da gestire

perch riempie le pagine con molto codice rallentando lo scaricamento

Oggi siamo in un periodo di transizione. Gli sviluppatori dai vecchi modi di costruire i siti web (a tabelle),
dovrebbero migrare verso qualcosa di nuovo: verso unimpaginazione che utilizzi i fogli di stile e l(x)html.
Limpaginazione a tabelle rimane, tuttavia, senzaltro una pietra miliare del web.

Comporre una pagina in frame


I frame (riquadri) comparvero per la prima volta con Netscape Navigator 2: si tratta della possibilit di
suddividere una medesima finestra del browser in vari riquadri indipendenti.
Questa soluzione allepoca si rivel un successo, dal momento che permetteva notevoli vantaggi:

Fino a qualche tempo fa la velocit di navigazione era ben poca cosa, e si navigava con modem
analogici molto lenti (anche da 14.4 kbs): i frame hanno lindubbio vantaggio di non costringere a
ricaricare tutta quanta la pagina, accelerando cos la navigazione dellutente allinterno di un sito
web. Daltro canto il fatto che solo una parte del contenuto sia ricaricata fa risparmiare banda anche
dal punto di vista del server che deve erogare le pagine

Per quel che riguarda i webmaster, i frame hanno la caratteristica di utilizzare una struttura che
consente di non ripetere le parti comuni nelle varie pagine di un sito, dal momento che il contenuto
della pagina (per sua natura) organizzato a zone

Il fatto di poter mantenere fisso su un lato del monitor il menu di navigazione e far scorrere sullaltro
lato il contenuto piace a molti utenti, soprattutto quando la risoluzione del monitor bassa (800 x
600 o 640x480, magari su un monitor da 15)

Tutte queste caratteristiche hanno causato un vero e proprio boom dei frames, tanto che subito dopo
linvenzione della Netscape, anche Microsoft si trov a copiare la possibilit di strutturare le pagine in
questo modo; in seguito (con lHTML 4) i frames divennero una specifica ufficiale del W3C.

Struttura di un frameset
Per utilizzare i frame, necessario creare una pagina che contenga la dichiarazione della struttura che
vogliamo utilizzare. Vediamo subito il codice:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Frameset//IT"
"http://www.w3.org/TR/html4/frameset.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<title>HTML.it</title>
</head>
<frameset rows=50%,50% cols="50%, 50%">
<frame src="prima.html">
<frame src="seconda.html">
<frame src="terza.html">
<frame src="quarta.html">
<noframes>
<p>Qui pu essere indicato il link a<a href="senzaFrame.html">
una versione del sito</a> che non utilizzi un layout a frame</p>
</noframes>
</frameset>
</html>

Lesempio completo si trova qui.


Come vi sarete accorti, rispetto alle pagine che abbiamo studiato finora cambiano alcune cose.
In primo luogo cambia il doctype, cio il tipo di documento di riferimento.
Allinizio del documento al posto di questa riga:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//IT">

compare ora infatti questa dicitura:


<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Frameset//IT"
"http://www.w3.org/TR/html4/frameset.dtd">

stiamo indicando semplice al browser che facciamo riferimento alle specifiche che servono per regolare il
comportamento dei frame.
Avrete notato inoltre che scompare il tag <body> e al suo posto troviamo il tag <frameset> (set di
riquadri), che ci permette di indicare come devono essere indicati i frames allinterno della pagina
Il tag <frameset> ha sostanzialmente due importanti attributi: rows e cols:

rows permette di specificare il numero e la grandezza delle righe, nel caso in cui venga omesso,
significa che ci troviamo di fronte a una struttura a colonne . Ad esempio:
<frameset cols="33%, 33%,*">

cols permette di specificare il numero e la grandezza delle colonne e, nel caso in cui venga omesso
significa che ci troviamo di fronte una struttura a righe
<frameset rows="33%, 33%,*">

Nellindicare la grandezza di ciascuna riga (o colonna) possiamo poi lasciare che una o pi righe si autodimensionino, occupando tutto lo spazio che rimane, in questo caso utilizzeremo lasterisco (wild card);
normalmente invece potremo esprimere la grandezza dei riquadri secondo uno dei seguenti sistemi di
misura (da scegliere a nostra discrezione):
dimensione fissa Questa sintassi crea un frameset di 2 righe con 3
colonne ciascuna, per un totale di 6 riquadri:
<frameset rows="150,*" cols="100,200,*">
Laltezza della 1a riga di 150 pixel, mentre la
seconda si adatta al resto della pagina. Le tre
colonne sono larghe rispettivamente: 100 pixel, 200
pixel, e la terza colonna si adatta al resto della
pagina
percentuale

Questa sintassi crea un frameset che si adatta alla


risoluzione. La grandezza dei riquadri espressa in
percentuale:
<frameset rows="20%,80%" cols="25%,25%,50%">
come si pu vedere la prima riga occupa il 20%
dellaltezza, la seconda il rimanente 80%.
Le 3 colonne si dividono la larghezza: la prima
colonna occupa il 25%, la seconda nuovamente il
25%, la terza il 50% dello spazio

proporzionale

In questo caso la ripartizione proporzionale:


<frameset rows="1*,3*" cols="3*,2*,1*">

per quel che riguarda le righe: laltezza viene


suddivisa in 4 parti (1+3); la prima riga ne
occupa 1 parte e la seconda riga ne occupa 3

per quel che riguarda le colonne: laltezza


viene suddivisa in 6 parti (3+2+1); la prima
colonna occupa 3 parti, la seconda riga ne
occupa 2 e la terza 1

Una volta creata la nostra griglia con il tag <frameset>, incrociando le righe e le colonne, dobbiamo
specificare dove si trova il file di origine di ciascun frame. Possiamo farlo con la sintassi:
<frame src="prima.html">

come si pu vedere lorigine di ciascun frame un documento HTML standard (come quelli che abbiamo
analizzato finora): avr dunque la sua dichiarazione di documento, la sua <head> e il suo <body>.
Se le dimensioni del riquadro non sono sufficienti a mostrare il documento nella sua interezza, il frame avr
delle barre di scorrimento, a meno che non sia stato esplicitamente specificato il contrario negli attributi (che
vedremo tra poco).
Per visualizzare il codice HTML di ciascun frame sufficiente andare nel riquadro desiderato e poi digitare il
tasto destro del mouse. Quindi:

Con Internet Explorer:


selezionare HTML

Con Mozilla:
selezionare this frame > view frame source

possibile anche individuare un frame in modo pi preciso, assegnandogli un nome:


<frame id=primoRiquadro name=primoRiquadro src="prima.html">
la sintassi corretta per dare un nome a un frame dovrebbe essere:
id=primoRiquadro

tuttavia per questioni di retro-compatibilit (con Netscape 4) oramai entrato nelluso utilizzare anche
name=primoRiquadro.

Frameset annidati
possibile annidare diversi frames luno dentro laltro. In questo caso, al posto di uno dei tag <frame>
sufficiente includere le indicazioni del nuovo frameset. Cos:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Frameset//IT"
"http://www.w3.org/TR/html4/frameset.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<title>HTML.it</title>
</head>
<frameset rows="15%,70%,15%">
<frame src="11.html">
<frameset cols="25%,50%,25%">
<frame src="21.html">
<frame src="22.html">
<frame src="23.html">
</frameset>
<frame src="12.html">

<noframes>
<p>Qui pu essere indicato il link a <a href="senzaFrame.html">
una versione del sito</a> che non utilizzi un layout a frame</p>
</noframes>
</frameset>
</html>
Lesempio completo si trova qui.

Attributi dei frame per la visualizzazione


Attributi del frameset
Il tag frameset non ha (secondo le specifiche ufficiali) attributi per la visualizzazione. Alcuni attributi tuttavia
sono entrati nelluso e sono correttamente supportati dai browser attuali:
<frameset frameborder="no" cols="25%,75%">

Lattributo
frameborder (di
default impostato a
yes) permette di
specificare se nel
frameset devono
essere presenti i
bordi.

L'esempio qui
<frameset framespacing="20" border=20
cols="25%,75%">

framespacing
funziona solo con
Internet Explorer e
permette di
impostare lo spazio
tra un frame e
laltro. Di fatto
equivale allattributo
border, che
permette di
specificare lo
spessore dei bordi in
pixel.
Per mantenere la
compatibilit con
Internet Explorer 4
(che non legge
lattributo border), di
solito si specificano
sia il framespacing,
sia il border.
L'esempio qui

<frameset border="10" framespacing="10"


bordercolor=#FF0000 cols="25%,75%">

bordercolor
permette di
specificare il colore
dei bordi del
frameset. L'esempio
qui

Attributi dei frame


A differenza degli attributi del tag frameset, che sono dovuti alla convenzione, i seguenti attributi del tag
frame sono invece descritti nelle specifiche del W3C e permettono di modificare laspetto dei riquadri e il
modo in cui lutente pu interagire con essi:
<frame src=prima.html scrolling=no>
Lattributo scrolling
<frame src=prima.html scrolling=auto> (di default impostato a
yes) indica se si
vuol consentire
allutente di poter
scorrere il frame
oppure no.
Nel caso sia impostato
a no, il frame non
ha la barra di
scorrimento anche nel
caso in cui il contenuto
della pagina HTML
vado oltre la cornice,
come si pu vedere
nellesempio.
L'esempio qui
scrolling pu anche
essere impostato ad
auto.
In questo caso la
barra di scorrimento
compare in
automatico, ma solo
se necessario

<frame src=prima.html scrolling=no>


<frame src=prima.html scrolling=no
noresize>

noresize impedisce al
singolo frame di
essere ridimensionato.
L'esempio qui
Se usato in unione con
scrolling=no, di
fatto blocca il
contenuto del frame.
L'esempio qui
Un uso maldestro di
questa tecnica
potrebbe per
impedire all'utente la
corretta
visualizzazione dei
contenuti

<frame src=prima.html frameborder=0>

frameborder
conesente di far
apparire o meno i
bordi del frame (i
valori ammessi sono
"0" e "1", ovvero "no"
e "yes").
Se frameborder
impostato a 0 i bordi
non sono visibili
L'esempio qui
Attenzione per a
come impostate i bordi
nei vari frame, dal
momento che i bordi
di frame adiacenti non
sempre vanno
daccordo (provate)
Questo attributo
permette di specificare
un valore differente da
quello impostato nel
frameborder del
<frameset>

<frame marginwidth="50" marginheight="50" marginheight e


src="prima.html">
marginwidth
permettono di
impostare la distanza
verticale
(marginheigth) e
orizzontale
(marginwidth) tra i
bordi del frame e il
suo contenuto.
L'esempio qui

Approfondimenti
Ovviamente sarebbe meglio impostare i bordi e gli spazi tra i frame attraverso i CSS. Nella lezione dedicata
ai bordi con i CSS spiegato come fare.

I link in un frameset e il tag noframe


Il Target dei link in un frameset
In una struttura a frames pu apparire difficile caricare il contenuto di un link nella sezione appropriata.
Grazie allattributo target possiamo specificare qual' la destinazione del link; con questa sintassi siamo
dunque in grado di caricare il contenuto di un collegamento nel riquadro che riteniamo pi opportuno:
<a href=paginaDaLinkare.html target=nomeDelFrame>

come si pu vedere nellesempio.


Ci sono poi delle parole chiave che ci consentono di ricaricare i link in destinazioni predefinite:
target=_blank

Apre il link in una nuova finestra, senza nome


L'esempio qui

target=_self

Apre il link nel frame stesso ( cos di default)


L'esempio qui

target=_parent Il documento viene caricato nel frameset precedente


a quello corrente (pi esattamente nel frame
genitore)
L'esempio qui
Il comportamento di _parent particolarmente
evidente in una struttura annidata in cui alcune
pagine HTML contengono a loro volta dei frameset,
come nellesempio: in questo caso viene caricato il
contenuto del link nel frameset immediatamente
precedente alla pagina del link.
target=_top

Il documento viene caricato nella finestra originale,


cancellando ogni struttura a frame.
L'esempio qui
(si noti la differenza con _parent).
Pi esattamente il documento viene carictao nella
parte pi alta ("top") della struttura, ed questo il
motivo per cui il frameset stesso viene annullato e
sostituito dal contenuto del link.

Pu essere noioso specificare per tutti i link il target appropriato. Ci viene in aiuto allora il tag <base> che ci
consente di specificare la destinazione dei tutti link in una sola volta.
Il tag va inserito nella pagina contenente i link. Ad esempio:
<base target=_blank>

a questo indirizzo possibile visualizzare lesempio completo.


Abbiamo gi incontrato il tag <base> per impostare un percorso predefinito di default. Ovviamente
possibile combinare i due attributi di <base>:
<base href=http://www.html.it target=_blank>

Questa sintassi indica che lindirizzo di base per i percorsi della pagina http://www.html.it e che tutti i link
vanno aperti in una nuova pagina.

Approfondimenti

Tutti si chiedono quasi subito come cambiare il contenuto di due frame con un solo click del mouse
dell'utente. Ecco una soluzione.

Il tag noframes
Allinterno della dichiarazione del <framset> abbiamo sempre visto comparire lelemento <noframes>:
questo tag serviva per browser particolarmente obsoleti (come Mosaic 2) che non erano in grado di leggere
e visualizzare una struttura frameset. In previsione di situazioni di questo genere possibile inserire
allinterno del tag <noframes> un contenuto appositamente studiato per questa eventualit, ad esempio
lavvertimento che il sito strutturato a frame, o un contenuto alternativo, oppure una descrizione per i
motori di ricerca (come vedremo tra breve).
La struttura la seguente:
<frameset rows=50%,50%
<frame src="prima.html">
<frame src="seconda.html">
<noframes>
<p>Qui pu essere indicato il link a <A href="senzaFrame.html">una
versione del sito<A> che non utilizzi un layout a frame, oppure un contenuto alternativo,
o anche una descrizione per i motori di ricerca.
</p>
</noframes>
</frameset>

importante capire una volta per tutte come funziona questo genere di tag, dal momento che un tipo di
struttura di questo genere ricorre in diverse occasioni nellHTML: il tag <noscript> e i contenuti alternativi nel
caso dell<iframe> utilizzano infatti gli stessi principi di funzionamento.
I browser obsoleti non sono in grado di interpretare n la struttura di un frameset, n tanto meno il
<noframes>: non essendo un tag previsto nelle specifiche rilasciate allepoca in cui questi browser sono
stati costruiti, si tratta infatti di una sintassi del tutto oscura per loro.
Di tutto il codice in questione lunica parte comprensibile a questo genere di browser lHTML standard
compreso allinterno del <noframes>: e questo si limitano a leggere.
Sono invece i browser moderni che sanno di dover ignorare il <noframes>, dal momento che il suo
contenuto non li riguarda.
C da dire che, se tutti i browser odierni sono in grado di interpretare correttamente la struttura di un
frameset, viceversa sotto molti punti di vista i motori di ricerca sono paragonabili a browser obsoleti, e non
raro che un sito organizzato a frame sia inserito nellindice dei motori di ricerca in maniera non corretta: per
questo motivo alcuni di essi catturano il contenuto del <noframes> come descrizione di un sito.
Quindi per evitare messaggi di questo genere a seguito di una ricerca in rete:

bene utilizzare il tag noframes per indicare la descrizione del sito: in questo modo miglioriamo anche il
posizionamento nei motori di ricerca. Ad esempio:
<frameset rows=50%,50%>
<frame src="prima.html">
<frame src="seconda.html">
<noframes>
<p>Su PRO.HTML.it - Approfondimenti sul Web Publishing e articoli per
webmaster</p>

</noframes>
</frameset>

LIframe
L'iframe
Iframe significa inline frame: in qualsiasi momento in un documento che non utilizzi una struttura a
frame possibile creare un frame al volo grazie a questo tag.
Possiamo specificare la larghezza e laltezza del tag, mentre gli attributi di visualizzazione sono gli stessi del
tag <frame>: si tratta di una vera e propria finestra verso lesterno allinterno di un documento ordinario.
Questo tag correttamente supportato da tutti i browser moderni (Netscape 4 non lo supporta, ma questo
browser oramai sta scomparendo). La sintassi :
<iframe src="http://pro.html.it" width="300" height="300">
Contenuto alternativo per i browser che non leggono gli <iframe>.
iframe

come si pu vedere tra lapertura e la chiusura del tag possibile specificare un contenuto alternativo per i
browser che non siano in grado di leggere l<iframe>: in realt questi browser sono ciechi a questo tag
(come abbiamo visto per il <noframes>) e dunque leggono direttamente il contenuto al suo interno. Sono
invece i browser che supportano questa sintassi a ignorare volutamente quanto viene compreso tra apertura
e chiusura del tag.
Anche in questo caso sar opportuno utilizzare la possibilit di inserire un contenuto alternativo per
migliorare il posizionamento nei motori di ricerca. Ad esempio:
<iframe src="http://pro.html.it" width="300" height="300">
<p>Su <a href=http://pro.html.it>PRO.HTML.it</a> - Approfondimenti sul Web
Publishing e articoli per webmaster</p>
</iframe>

Un esempio completo disponibile a questa pagina.

Vantaggi e svantaggi dei frame


Abbiamo gi visto allinizio delle lezioni sui frames quali sono stati alcuni dei motivi di successo dei frames. E
cio:

Dal punto di vista dellutente: evitare di ricaricare le parti comuni

Dal punto di vista del webmaster: includere il layout comune in pochi files

Dal punto di vista dellutente: mantenere in vista alcuni punti del layout

Tuttavia gli svantaggi che comporta un uso scorretto di un layout a frame sono superiori ai vantaggi che
possono derivare dal loro utilizzo.
I motori di ricerca infatti navigano di link in link attraverso il web per catturare contenuti da indicizzare.
frequente allora che una struttura a frame sia inserita allinterno di un motore di ricerca in modo errato: a
volte viene catturato solo un menu (come in questo caso), altre volte compare soltanto la parte interna con il
contenuto del frame e dunque viene perso ogni menu di navigazione (come in questo caso).
Per evitare problematiche di questo genere, meglio evitare di utilizzare una struttura a frame; o nel caso in
cui la si desideri utilizzare bene prevedere sin da subito dei metodi che ricostruiscano il frameset, nel caso
in cui sia catturata soltanto una pagina interna. possibile farlo utilizzando JavaScript (un linguaggio di
programmazione lato-client). Qui vengono indicati alcuni metodi per ottenere leffetto voluto:

Ricreare un frameset

Frameset con pagina corrente

Ricostruire un frameset

C anche da dire che oggi molti dei motivi che rendevano vantaggioso lutilizzo dei frames sono venuti
meno: la banda a disposizione si ampliata, i CSS alleggeriscono la struttura dei siti e rendono possibile
alcune soluzioni che prima erano difficili (come quella di mantenere un menu di navigazione sempre a
portata di mano), e la gestione dei contenuti pu essere semplificata utilizzando le inclusioni lato server.
Viceversa una struttura a frame risulta molto vantaggiosa nel caso in cui si utilizzino delle vere e proprie
applicazioni che utilizzano internet (come le piattaforme di e-learning, la webmail, eventuali aree riservate
del sito con accesso tramite login e password). In questo caso la suddivisione dei contenuti evita di
sovraccaricare il server (dal momento che cos vengono ri-caricati solo le parti strettamente necessari),
semplifica la gestione, e quindi si rivela estremamente utile.

Impaginare a livelli con i CSS


Abbiamo gi visto due stili di impaginazione: le tabelle e i frame. Come accennato pi volte allinterno del
corso esiste una terza via: limpaginazione tramite i fogli di stile (ovvero "CSS", cio "Cascading Style
Sheets", che significa "fogli di stile a cascata").
La sintassi dei CSS esula dallargomento del corso presente, importante tuttavia afferrare il concetto che
un elemento pu essere disposto allinterno della pagina, semplicemente specificando le sue coordinate, o
indicando il modo in cui deve essere spostato rispetto agli elementi che lo circondano.
Nel caso dellimpaginazione tramite i fogli di stile abbiamo per lo pi a che fare con i tag <span> e <div>,
che possono essere accuratamente posizionati e visualizzati specificando ad esempio:

larghezza

altezza

distanza dallalto

distanza da sinistra

colore o immagine di sfondo

colore, tipo e grandezza dei bordi

distanza tra il contenuto e il bordo (padding) e tra il bordo e lesterno (margin)

Per livello (o layer) in HTML si intende appunto un <div> posizionato tramite i CSS allinterno
della pagina.
La sintassi dei CSS molto diversa da quella dellHTML solito.
Ad esempio per posizionare la testata di HTML.it a 50 pixel dallalto della pagina e 200 pixel da sinistra, con
lo sfondo a righe, bordo nero, e una dimensione di 600 x 80 pixel di necessario utilizzare questa sintassi.
Nella <head>:
<style type="text/css">
#logo {
position:absolute;
left:200;
top:50;
width:600px;
height:80px;
background-image: url(sfondo.gif);
border: 1px solid #000000;
}
</style>

nel <body>:
<div id="logo">
<img src="logo.gif" alt="HTML.it" title="HTML.it" width="224" height="69">
<img src="logo1.gif" alt="HTML.it" title="HTML.it" width="59" height="70">
</div>

Lesempio completo si trova a questo indirizzo.


Il vantaggio di questa impostazione quella di avere una pagina molto pulita: infatti il file HTML composto
soltanto dai <div> (o dagli span) con i contenuti, mentre lo stile di visualizzazione dei contenuti affidato ai
fogli di stile (per lo pi espressi in un file separato).
Per gli approfondimenti vi rimandiamo allapposita guida sui fogli di stile e alla sezione PRO di HTML.it che
approfondisce questo argomento.

Struttura del tag form


Uno dei fattori che ha decretato il successo del Web senzaltro la possibilit di interagire: la possibilit cio
di iscriversi a servizi di vario tipo (ad esempio mailing list), ma soprattutto di partecipare a vere e proprie
comunit virtuali, come il forum di HTML.it.
Per organizzare questo genere di servizi necessario raccogliere in qualche modo i dati dellutente: per farlo
si utilizzano, in maniera molto semplice, i moduli (cio i form).
Linvio dei dati solitamente organizzato in due parti:

una pagina principale che contiene i vari campi dei form, che consentono allutente di effettuare
delle scelte, scrivere del testo, inserire unimmagine

una pagina secondaria che viene richiamata dalla principale e che effettua "il lavoro" vero e proprio
di processare e raccogliere i dati. Di norma si tratta di una pagina di programmazione che si trova
sul server. Pu essere un cgi, oppure una pagina asp, php, jsp o altro

Noi ci occuperemo della sola pagina principale, dal momento che il modo in cui struttura una pagina di
programmazione esula dagli obiettivi della presente guida.

Name e action
Per creare una pagina con dei moduli, bisogna utilizzare lapposito tag <form>: si tratta di un elemento di
blocco, come il <p>, quindi il tag <form> lascia uno spazio prima dellapertura e dopo la chiusura.
<form name="datiUtenti" action="paginaRisposta.php">
.
</form>

Nel caso in non si desideri avere dello spazio superfluo possibile modificare i bordi del tag utilizzando i
fogli di stile. Con questa semplice sintassi:
<form name="datiUtenti" style="border:0px" action="paginaRisposta.php">

Come si pu vedere, "name" serve per indicare il nome del form, "action" indica lURL del programma o
della pagina di risposta che processer i dati.
Grazie all"action" anche possibile far s che i dati vengano inviati in e-mail al webmaster (si tratta infatti a
tutti gli effetti di un riferimento a un URL). Il codice questo:
<form action="mailto:tuamail@nomeDominio.it?subject=Oggetto predefinito"
enctype="text/plain" method="POST">

vedremo in una delle prossime lezioni come utilizzare concretamente questa sintassi.

Method
Quando creiamo un form possiamo scegliere due metodi di invio: GET e POST.
Con il metodo GET la pagina di risposta viene contattata e i dati vengono inviati in un unico step.
NellURL della pagina di risposta potremo allora vedere tutti i parametri nella barra degli indirizzi (pi
precisamente nella "query string", cio nella "stringa di interrogazione") secondo questa forma:
http://www.html.it/esempioForm/paginaRisposta.php?nome=Wolfgang&cognome=Cecchin&datiInvia
ti=prova+invio

i dati (nella forma nome del campo = valore del campo) sono appesi alla pagina dopo il punto
interrogativo.
Alcuni server hanno tuttavia hanno delle limitazioni per quel che riguarda il metodo GET e non consentono di
inviare form con valori superiori a 255 caratteri complessivi. Il metodo GET dunque particolarmente
indicato per form con pochi campi e pochi dati da inviare. La sintassi per linvio in get :
<form name="datiUtenti" action="paginaRisposta.php" method="GET">

Nel metodo POST invece linvio dei dati avviene in due step distinti: prima viene contattata la pagina sul
server che deve processare i dati, e poi vengono inviati i dati stessi. Per questo motivo i parametri non
compaiono nella query string (dunque se non si desidera che i parametri siano mostrati allutente questo
metodo preferibile).
In questo caso non ci sono limiti sulla lunghezza dei caratteri. La sintassi :
<form name="datiUtenti" action="paginaRisposta.php" method="POST">

Enctype (tipo di codifica)


Prima di passare i dati alla pagina di risposta, che si trova sul server, questi vengono codificati dal browser in
modo da non poter dare adito ad errori (ad esempio gli spazi vengono convertiti in "+"). Normalmente non
necessario specificare come si vuole effettuare la codifica dei dati, perch sottinteso linvio di semplice
testo. A volte per, come quando necessario inviare unimmagine, tuttavia indispensabile dichiarare
espressamente quali dati vogliamo inviare. Per farlo necessario utilizzare lattributo "enctype" ("encoding
type", cio "tipo di codifica").
Come dicevamo normalmente non necessario farlo, perch viene sottinteso questo tipo di sintassi:
<form name="datiUtenti" action="paginaRisposta.php" enctype="text/plain">

Ma nel caso di invio di immagini dovremo dichiarare:


<form name="datiUtenti" action="paginaRisposta.php" method="post"
enctype="multipart/form-data">

Target
Grazie allattributo "target" possibile far aprire i dati del form in una pagina differente rispetto a quella
corrente (o in una determinata parte di un frameset):
<form name="datiUtenti" action="paginaRisposta.php" method="get" target="_blank">

Un po di ordine raggruppare i moduli


Per la loro natura di "raccoglitori di informazioni", i moduli tendono a ingigantirsi e diventare lunghissimi. Per
questo, con lHTML 4 sono stati introdotti dei tag per fare un po dordine allinterno dei form.
Grazie al tag <fieldset> possiamo creare delle macro-aree allinterno dei form, e grazie al tag <legend>,
possiamo indicare il nome di ciascuna macro-area.
Poniamo ad esempio di dover raccogliere i dati di un utente, raccogliendo dati anagrafici, residenza,
domicilio e reperibilit sul lavoro.
Possiamo farlo con la seguente sintassi:
<fieldset>
<legend>Dati anagrafici</legend>
<br><br><br>
</fieldset>

<fieldset>
<legend>Residenza</legend>
<br><br><br>
</fieldset>
eccetera
che d:
Dati anagrafici
Residenza

come si pu vedere vengono creati dei riquadri con un indicazione del tipo di contenuto.
Un altro tag particolarmente utile - si pu utilizzare con ogni tipo di campo che vedremo dora in poi - il tag
<label>, che permette di indicare unetichetta per il nome del campo.
Ad esempio:
<fieldset>
<legend>Dati anagrafici</legend>
<label>Anno di nascita: <input type="text"></label>
</fieldset>

che d:
Dati anagrafici

Anno di nascita:

oppure (cambiando la posizione del testo):


<fieldset>
<legend>Dati anagrafici</legend>
<label><input type="text">: anno di nascita</label>
</fieldset>

che d:

Dati anagrafici

: anno di nascita

Come si pu vedere il campo su cui si vogliono dare delle indicazioni deve essere compreso allinterno del
tag label stesso.

Il tag input
Per quel che riguarda i campi dei form il tag pi utilizzato l<input>, che senza chiusura. Per specificare
un determinato tipo di campo sufficiente indicare il tipo di input.
Ad esempio:
<input type="text">

crea un campo di testo.


<input type="button">

crea un bottone.
I vari <input> sono dotati di attributi che consentono di indicare il tipo di campo, il nome ( ad esempio per
interagire con JavaScript ), e il valore (per lo pi il testo visualizzato).
<input type="text" name="tuoTesto" value="qui il tuo testo">

che d:
qui il tuo testo

I bottoni
Non c form che si rispetti senza bottone di invio.
La sintassi tradizionale per creare un bottone di invio :
<input type="submit" value="invia I dati">

Ad esempio:
<form action=http://www.html.it target="_blank">
<input type="submit" value="visita HTML.it">
</form>

cio:
visita HTML.it

Un altro bottone utile il "reset" che una volta premuto - consente di riportare il form allo stato originario,
cancellando ogni cosa scritta finora dallutente. Ecco un esempio:
<form>
<input type="text"><br>
<input type="reset" value="cancella">
</form>

cio

cancella

Esiste infine un tipo di bottone generico, che non esegue nessuna azione particolare, ma che pu essere ad
esempio utilizzato per associare degli eventi tramite JavaScript.
<form>
<input type="button" value="bottone generico">
</form>

che d:

Il tag <button>
Con lHTML 4 stato introdotto il tag <button> che offre la possibilit di creare dei bottoni con un aspetto
particolarmente ricco.
Il tag <button>, a differenza del tag <input>, d la possibilit di inserire il testo del bottone tra lapertura e la
chiusura del tag medesimo. Questo ci consente di specificare anche del codice HTML allinterno del tag.
I bottoni che abbiamo appena visto dovrebbero dunque avere questa forma:
<form action=http://www.html.it target="_blank">
<input type="text"><br>
<button type="button">
bottone generico
</button>
<button type="reset">
cancella
</button>
<button type="submit">
invia
</button>
</form>

cio:

bottone generico

cancella

invia

Ed ecco un esempio complesso:


<button name="vai" type="submit">
invia
<img src="puntoEsclamativo.gif" width="23" height="67" title="invia adesso"
border="1" vspace="5" alt="invia adesso" align="middle">
<b>adesso</b>
</button>

che d:

invia

adesso

Grazie allattributo "disable" infine possibile disabilitare i bottoni.


Es:
<input type="submit" value="invia" disabled>

o anche:
<button type="submit" disabled>
invia
</button>

cio:
invia

invia

Il campo image
Il campo "image" ci consente di utilizzare come bottoni del form delle vere e proprie immagini e assegnare
loro un valore grazie a JavaScript; in questo caso non si tratta propriamente di un bottone ma la funzionalit
la medesima. Ecco il codice:
<input name="invia" type="image" src="invia.gif" alt="invia il modulo" title="invia il
modulo" width="78" height="38">

cio:

come si pu vedere, se non si specifica nulla, limmagine ha valore di submit.


Gli attributi del campo immagine sono molto simili a quelli del tag <img>.

Inserire testo
Per consentire allutente di inserire del testo possibile utilizzare un campo testo.
Se il campo su una singola linea avremo:
<input name="mioTesto" type="text" value="qui il tuo testo" size="40" maxlength="200">
qui il tuo testo

"maxlenght" indica il numero massimo di caratteri che lutente pu inserire, con "size" si esprimono invece
le dimensioni del campo di testo (la larghezza data dal numero di caratteri).

Se si ha la necessit di indicare un campo che consenta di inserire una grande quantit di testo conviene
invece utilizzare una "textarea" ("area di testo"). Ecco la sintassi:
<textarea name="testo" cols="40" rows="10">qui puoi scrivere il tuo testo</textarea>
qui puoi scrivere il tuo testo

"rows" indica il numero di righe della textarea, "cols" il numero di caratteri (cio di colonne) che ogni riga
pu contenere.
Come si pu vedere, se si vuol indicare del testo predefinito in questo caso bisogna inserirlo fra lapertura e
la chiusura del tag.
Esiste infine il campo password che codifica i caratteri insieriti con degli asterischi:
<input name="mioTesto" type="password" size="18" maxlength="8">

che d:

da notare che la codifica fornisce una protezione soltanto per chi eventualmente stia sbirciando sul monitor
dellutente. Linvio dei dati attraverso il web avviene,se non vengono adottate altre misure di sicurezza, 'in
chiaro'.
I campi di testo possono essere anche di sola lettura. Ad esempio:
<input name="mioTesto" type="text" value="leggere l'informativa" size="25" maxlength="8"
readonly>

che d:
leggere l'informativa

O disabilitati:
<input name="mioTesto" type="text" value="leggere l'informativa" size="25" maxlength="8" disabled>
cio
leggere l'informativa

Consentire delle scelte


Checkbox
Con i checkbox possiamo consentire allutente di operare delle scelte multiple. Ad esempio:

<fieldset>
<legend>Linguaggi conosciuti</legend><br>
<input type="checkbox" name="html" value="html"> html
<br>
<input type="checkbox" name="css" value="css"> css
<br>
<input type="checkbox" name="javascript" value="javascript"> JavaScript
</fieldset>

che d:
Linguaggi conosciuti
html
css
JavaScript
Si possono anche selezionare uno o pi valori di default:
<input name="html" type="checkbox" value="html" checked>

cio

ed possibile disabilitare una casella:


<input name="html" type="checkbox" value="html" disabled>
cio:

Radio button
I "radio button" ("bottoni circolari") invece consentono di effettuare una scelta esclusiva. In questo caso
quindi una scelta esclude laltra. Per ottenere questo effetto i campi devono avere lo stesso nome e
differente valore:
<fieldset>
<legend>Linguaggi conosciuti</legend>
HTML<input type="radio" name="linguaggio" value="html">
CSS <input type="radio" name="linguaggio" value="css">
JavaScript <input type="radio" name="linguaggio" value="javascript">
</fieldset>

che viene cos visualizzato:


Linguaggi conosciuti

HTML

CSS

JavaScript

Anche in questo caso possibile assegnare un valore di default o disabilitare un pulsante.


<input type="radio" name="linguaggio" value="html" checked disabled>

cio:

Menu di opzioni (select)


Grazie al tag <select> possibile costruire dei menu di opzioni. In questo caso ciascuna voce deve essere
compresa allinterno del tag <option> (la chiusura del tag opzionale) e il valore deve essere specificato
attravero l'attributo "value". Con lattributo "selected" si pu indicare una scelta predefinita:
<fieldset>
<legend>Siti per webmaseter</legend>
<select name="siti" >
<option value="http://www.html.it" selected>www.html.it
<option value="http://freephp.html.it">frephp.html.it
<option value="http://freasp.html.it">freasp.html.it
</select>
</fieldset>

che da luogo a:
Siti per webmaseter

w w w .html.it

Siccome i menu di scelta tendono a diventare particolarmente lunghi, nellHTML 4 stato introdotto il tag
<optgroup> che consente di suddividere le varie possibilit di scelta in gruppi tramite lutilizzo di apposite
etichette. Ecco lesempio:
<select name="siti" >
<optgroup label="siti per webmaster">
<option value="http://www.html.it">www.html.it
<option value="http://freephp.html.it">frephp.html.it
<option value="http://freasp.html.it">freasp.html.it
</optgroup>
<optgroup label="risorse per webmaster">
<option value="http://font.html.it">font.html.it
<option value="http://cgipoint.html.it">cgipoint.html.it
</optgroup>
</select>

che d luogo al seguente menu:


w w w .html.it

Infine con il tag select possibile impostare anche delle scelte multiple. Come si pu vedere, utilizzando
lattributo "multiple" laspetto del tag select cambia notevolmente:
<label>Quale siti visiti?<br>
<select name="siti" multiple>
<option value="http://www.html.it">www.html.it
<option value="http://freephp.html.it">frephp.html.it
<option value="http://freasp.html.it">freasp.html.it
<option value="http://font.html.it">font.html.it
<option value="http://cgipoint.html.it" >cgipoint.html.it
</select>
</label>

cio:

Quale siti visiti?


w w w .html.it

utilizzando il tasto "ctrl" lutente pu cos effettuare delle scelte multiple.


Tramite lattributo "size" si pu specificare il numero delle voci che devono comparire nel menu, e
conseguentemente regolare laltezza del menu, aggiungendo o togliendo la barra di scorrimento verticale.
<label>Quale siti visiti?<br>
<select name="siti" size="5" multiple>
<option value="http://www.html.it">www.html.it
<option value="http://freephp.html.it">frephp.html.it
<option value="http://freasp.html.it">freasp.html.it
<option value="http://font.html.it">font.html.it
<option value="http://cgipoint.html.it" >cgipoint.html.it
</select>
</label>

che viene cos visualizzato:


Quale siti visiti?
w w w .html.it
frephp.html.it
freasp.html.it
font.html.it
cgipoint.html.it

Altri campi
Potremmo avere la necessit di passare dei parametri "di servizio", senza far percepire la loro presenza
allutente. In questo caso possiamo utilizzare dei campi nascosti, presenti allinterno del form ma invisibili
allutente (ricordiamoci sempre di specificare la coppia "nome-valore"):
<input type="hidden" name="urlDiProvenienza" value="www.html.it">
Il campo "file", consente invece di inviare un file sul server, nel caso in cui la pagina
di risposta sia stata programmata correttamente. La sintassi :
<input name="fileUtente" type="file" size="20">

che d:
"size" indica la larghezza del campo. Come si pu vedere, a fianco del modulo compare il pulsante
"sfoglia" o "browse" (a seconda della lingua del browser dellutente).

Un esempio concreto
Riprendendo un esempio accennato in precedenza, possiamo vedere come sia possibile consentire
allutente di inviarci il contenuto di un questionario tramite e-mail.
Dal punto di vista dellutente si aprir un messaggio che domanda se si vuole inviare una mail, ma ci
inevitabile se si utilizza questo metodo: per evitare questa eventualit bisognerebbe infatti usare dei
programmi che inviino e-mail lato-server.
<form name="datiUtente" enctype="text/plain" method="POST"
action="mailto:tuamail@nomeDominio.it?subject=Questionario proveniente dal web">
<fieldset>
<legend>Dati Utente</legend>
<label>Nome: <input name="nome" type="text" size="20" maxlength="30"></label>
<label>Cognome: <input name="cognome" type="text" size="20"

maxlength="30"></label>
<label>Professione: <input name="cognome" type="text" size="20" maxlength="30">
</label>
</fieldset>
<br><br>
<fieldset>
<legend>Questionario</legend>
<label>Siti visitati:<br>
<select name="siti" size="5" multiple>
<option value="http://www.html.it">www.html.it
<option value="http://freephp.html.it">frephp.html.it
<option value="http://freasp.html.it">freasp.html.it
<option value="http://font.html.it">font.html.it
<option value="http://cgipoint.html.it" >cgipoint.html.it
</select>
</label>
</fieldset>
<br><br>
<fieldset>
<legend>Campo libero</legend>
<label>Lasciami un parere:<br><textarea name="parere" cols="20"
rows="10"></textarea></label>
</fieldset>
<br><br>
<button type="reset">annulla</button>
&nbsp;&nbsp;&nbsp;&nbsp;
<button type="submit">invia</button>
</form>

che d luogo a questo form:


Dati Utente

Questionario

Nome:

Siti visitati:

w w w .html.it
frephp.html.it
freasp.html.it
font.html.it
cgipoint.html.it

Campo libero

annulla

invia

Lasciami un parere:

Cognome:

Professione:

Approfondimenti sui form


Lattributo tabindex
Utilizzando il tasto "tab" della tastiera lutente pu passare da un campo del form allaltro. Per varie ragioni
di impaginazione lordine cos ottenuto potrebbe per non essere quello desiderato. Grazie allattributo
"tabindex" che si applica ai campi dei moduli possibili specificare in quale ordine deve avvenire il
passaggio da un campo allaltro. Il valore di questo attributo pu variare tra 0 e 32767. Vediamo un esempio:
<form name="datiUtente">
<fieldset >
<legend>Dati utente</legend>
<table width="300" border="1" cellspacing="0" cellpadding="5">
<tr>
<td>
<label>Nome: <input tabindex="1" name="nome" type="text" size="30"
maxlength="30"></label>
</td>
<td>
<label>Professione: <input tabindex="3" name="professione" type="text"
size="30" maxlength="100"></label>
</td>
</tr>
<tr>
<td>
<label>Cognome: <input tabindex="2" name="cognome" type="text"
size="30" maxlength="30"></label>
</td>
<td>&nbsp;</td>
</tr>
</table>
</fieldset>
</form>

che viene cos visualizzato:


Dati utente

Nome:

Professione:

Cognome:

come si pu vedere, digitando il tasto "tab", lordine di passaggio da un campo allaltro non quello indicato
nellHTML, ma modificato secondo il valore di "tabindex".

Il layout dei form


Se siete alle vostre prima pagine HTML, pu apparire difficile avere il controllo perfetto dei form. Qui potete
trovare due articoli che fanno al vostro caso:

I Form: segreti e trucchi di personalizzazione

I Form: risposte a domande frequenti

Premessa: il tag object


Se volete inserire file multimediali (audio e video), oppure effetti grafici particolari scritti in qualche linguaggio
di programmazione, ricordatevi sempre di fare attenzione al peso dei file che state inserendo. Siamo infatti
sul web e dunque tutti i file, in un modo o nellaltro, dovranno essere scaricati dal visitatore del vostro sito
per essere correttamente visualizzati.
Bisogna anche considerare che - sebbene la banda a disposizione del pubblico si stia allargando grazie
all'adsl e alle fibre ottiche - non tutte le zone sono "coperte" da questa tecnologia, e la maggioranza dei
visitatori naviga ancora con modem analogici da 56 Kb.
In ogni caso - banda larga o no - inserire ad esempio un file mp3 da 3 Mb come musica di sottofondo
sarebbe esagerato anche per una connessione adsl. Quindi: attenzione al peso dei file che inserite!. Per
approfondimenti vi consigliamo la lettura della lezione dedicata alla leggerezza dei siti Web della nostra
guida all'Usabilit.
Nelle lezioni successive ci occuperemo di come includere in pagine Web elementi multimediali o file di
scripting. Per chi fosse interessato alle inclusioni di file HTML in file HTML rimandiamo all'articolo Come
includere codice esterno nelle pagine web. Per chi volesse invece includere del codice XML in pagine HTML
vi consigliamo la lettura dell'articolo sulle XML Data Islands.
La maggior parte dei file multimediali che vedremo nel corso delle lezioni si inserisce allinterno delle pagine
con il tag <object>, che il tag corretto secondo le indicazioni del W3C per inserire elementi
multimediali, tanto che nelle specifiche dell'XHTML 2 (levoluzione dellHTML) persino le immagini devono
essere inserite tramite questo tag.
Un altro tag che spesso viene utilizzato per la multimedialit <embed>: si tratta di un elemento che non
nelle specifiche del W3C, ma che stato a lungo utilizzato, perch supportato sia da Internet Explorer, sia
da Netscape Navigator, a differenza di <object>, che ha dei problemi di compatibilit.
Vediamo i principali attributi di <object>:
data

questo attributo pu essere utilizzato per specificare il


percorso delloggetto da inserire nella pagina

classid

d indicazioni sul percorso delloggetto, ed utile per


identificare il tipo di plugin con cui eseguire loggetto

codebase

serve per indicare lURL di base, a cui il codice indicato in


"data" o in "classid" fa riferimento

type

il tipo di oggetto da inserire (pi esattamente il MIME


type delloggetto)

archive

si pu indicare una lista di URL, separati da virgola,


contenti risorse relative alloggetto inserito

width,
height

se necessario, si possono indicare una larghezza e


unaltezza

Allinterno del tag <object> possibile specificare una sintassi alternativa per i browser che non leggono
questo tag. Inoltre allinterno del tag possibile specificare eventuali parametri necessari allesecuzione
delloggetto.
In molti casi il tag object si occupa di attivare un "plug-in", cio un componente aggiuntivo che si integra nel
browser, per lo pi fornito dal produttore del software multimediale (es. Flash), in grado di leggere il file
multimediale (qualsiasi esso sia).

Vedremo nelle lezioni seguenti quali sintassi specifiche utilizzare per includere questi oggetti nelle vostre
pagine Web.

Includere un file audio


Audio
Per impostare un suono di sottofondo, solitamente si utilizza questo tag:
<bgsound src="multimedia/audio/jet_pubb.wav">

come in questo esempio.


possibile anche far ripetere la musica allinfinito:
<bgsound src="multimedia/audio/buzz_pubb.wav" loop="infinite">

come in questo caso.


O anche far ripetere la musica un numero prestabilito di volte:
<bgsound src="multimedia/audio/buzz_pubb.wav" loop="2">

come in questaltro esempio.


In realt questa non la sintassi corretta per inserire un file audio, perch compatibile soltanto con
Internet Explorer.
Una sintassi obsoleta, ma crossbrowser :
<embed src="multimedia/audio/jet_pubb.wav" autostart="true">

esemplificata in questa pagina.


Per inserire file audio - secondo le specifiche dell'HTML 4.01 - bisognerebbe invece utilizzare il tag
<object>. La sintassi :
<object data="multimedia/audio/jet_pubb.wav" type="audio/wav" autostart="true">
<embed src="multimedia/audio/jet_pubb.wav" autostart="true">
</object>

tuttavia, affinch tutto funzioni perfettamente (visto che il tag object ancora non perfettamente
implementato), spesso conviene indicare il tipo di plugin da utilizzare grazie allattributo "classid".
Questa sintassi ad esempio serve per aprire la barra del lettore multimediale RealOne (se RealOne non
presente, lutente verr avvisato). Notare che allinterno del tag object vengono espressi i parametri che
indicano come devono essere visualizzati i controlli di RealOne, e la sintassi alternativa per browser obsoleti
(indicata tramite <embed>):
<object id="sound1" classid="clsid:22D6F312-B0F6-11D0-94AB-0080C74C7E95">
<param name="src" value="multimedia/audio/jet_pubb.wav">
<param name="controls" value="All">
<param name="console" value="sound1">
<param name="autostart" value="false">
<embed src="multimedia/audio/jet_pubb.wav".wav" type="audio/wav" console="sound1"
controls="All" autostart="false" name="sound1">
</object>

cio:
Quando inserite dei file audio, fate sempre caso ad essere i proprietari dei diritti dautore, o ad avere
lautorizzazione a utilizzare la musica (o il suono) in questione.
Ricordiamo anche che l'uso di suoni o musica di sottofondo se utilizzata in modo eccessivo pu
compromettere l'usabilit del sito. Si veda la nostra lezione sulla Progettazione senza stile.

Includere un file video


Video
Come per laudio anche per i video si dovrebbe utilizzare il tag <object>. La sintassi identica a quella dei
file audio:
<object data="filmato.mov" type="video/quicktime" width="164" height="140">
<embed src="filmato.mov" type="video/quicktime" width="164" height="140">
</object>

come abbiamo visto per i filmati audio, possibile utilizzare lattributo "classid" con gli appropriati parametri
per aprire barre di visualizzazione e controlli vari ed eventuali.
Data la grande dimensione che questi file possono raggiungere, per i filmati (ma anche per laudio)
possibile utilizzare lo streaming attraverso il web. Si tratta di un procedimento che consente di scaricare il
filmato gradualmente dal server, a mano a mano che lo si sta vedendo e in modo del tutto trasparente
allutente.
Per maggiori informazioni sullo streaming video, vi rimandiamo alla sezione streaming di PRO.HTML.it.
Finora abbiamo visto come inserire singoli filmati audio e video allinterno di una pagina web, se invece
volete sincronizzare diversi filmati audio e video, dovete utilizzare un linguaggio apposito che prende il nome
di SMIL.

Includere un file di Flash


Flash un software molto potente sviluppato da Macromedia a partire dal 1996. Si tratta di un programma
che utilizza grafica vettoriale: significa che le immagini non vengono descritte attraverso mappe di bit
(bitmap), ma attraverso formule matematiche. Per questo motivo i filmati in Flash pesano molto meno della
grafica tradizionale, e per lo stesso motivo i colori sono "piatti". Inoltre, proprio perch le immagini sono
espresse da formule matematiche, non c il problema delleffetto "sgranato" dovuto al ridimensionamento
proprio della grafica tradizionale, perch i filmati in flash si adattano automaticamente alle dimensioni
indicate nel codice HTML (o se le dimensioni sono espresse in percentuale, si adattano alla pagina).
Ovviamente il fatto che le immagini siano espresse grazie a delle formule una caratteristica di questo
software che non tocca minimamente il webmaster, il quale - quando sviluppa filmati in flash - si ritrova ad
usare un "normale" software visuale.
I file sorgenti dei filmati (quelli su cui gli sviluppatori lavorano) hanno estensione .fla, i file compilati (quello
che si possono vedere in giro per il web) hanno invece estensione .swf (cio "Shockwave Flash"):
questultimo tipo di file che dovremo inserire dunque nelle nostre pagine HTML.
Per inserire un filmato in flash in una pagina HTML sufficiente utilizzare la seguente sintassi:
<object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000"
codebase="http://download.macromedia.com/pub/shockwave/
cabs/flash/swflash.cab#version=6,0,29,0" width="100" height="100">
<param name="movie" value="bottone_in-out.swf">
<param name="quality" value="high">

<embed src="bottone_in-out.swf" type="application/x-shockwave-flash" width="100"


height="100">
</embed>
</object>

Maggiori informazioni su Flash si possono trovare sul sito dedicato a Flash Mx.

Includere file Java


Java un linguaggio di programmazione rilasciato dalla Sun nel 1995, ma in corso di sviluppo sin dal 1991.
Il suo successo nel web dovuto alle famose "applet" ("piccole applicazioni") che permettono di aggiungere
interattivit alle pagine web.
Oggi si tende a non usare Java per le applet, perch la sua esecuzione avviene tramite un software
chiamato "virtual machine", e ogni volta che tale software deve essere richiamato da una pagina web,
lesecuzione della pagina stessa risulta rallentata. In pi c' da sottolinare come Internet Explorer 6, il
browser maggiormente diffuso mentre scriviamo, non viene pi distribuito con la Virtual Machine Java
inclusa e dunque chi utilizzer questo browser non visualizzer le applet se non ha esplicitamente chiesto
l'installazione della componente dal sito Windows Update.
Tutto quello che si pu fare con le applet Java oggi lo si pu fare anche con Flash o JavaScript, dunque in
molti casi si preferisce utilizzare questi linguaggi.
Java rimane una valida alternativa per applicazioni web complesse (ad esempio i dati e i grafici delle
quotazioni finanziarie, che devono essere aggiornati in tempo reale), o anche per applicazioni come la chat (i
client in Java sono tuttora insuperati).
I file con il codice sorgente hanno estensione ".java", i file compilati (da inserire nelle nostre pagine web)
hanno invece estensione ".class".
La sintassi per inserire un applet java :
<applet code="lake" codebase="multimedia/java/" width="263" height="130">
<param name="image" value="multimedia/java/logo.gif">
<!--html alternativo -->
<img src="logo.gif" width="263" height="65" alt="html.it">
<!-- fine html alternativo -->
</applet>

che d questo output:

Il W3C ha per deprecato lutilizzo del tag <applet>, e al suo posto dovrebbe essere preferito il tag
<object>:
<object id="appletLake" codetype="application/java" codebase="esempi/multimedia/java/"
classid="java:lake.class" width="263" height="130" >
<param name="image" value="multimedia/java/logo.gif">
<!--html alternativo -->
<img src="logo.gif" width="263" height="65" alt="html.it">
<!-- fine html alternativo -->
</object>

questultima sintassi tuttavia non ancora perfettamente funzionante con tutti i browser.
Infine dal momento che non detto che tutti gli utenti possiedano il software e il plugin per vedere Java
bene inserire del testo HTML alternativo nel caso in cui la virtual machine che esegue Java non sia presente
(nel codice precedente era presente del codice HTML alternativo, al posto di un avviso). Ad esempio:
<applet code="lake.class" width="263" height="130">
<param name="image" value="logo.gif">
necessario installare Java sul proprio sistema
</applet>

Una raccolta di gadget in Java presente nella sezione Java di HTML.it.

Includere file di scripting o CSS


JavaScript e VbScript
Cominciamo subito con il dire che JavaScript non Java. JavaScript un linguaggio di scripting, eseguito
dal browser, che permette di creare interattivit allinterno della pagina.
La sintassi JavaScript deve essere inserita allinterno del tag <script>. Cos:
<script type="text/javascript">
function ciao()
{
alert ("ciao");
}
</script>

e poi nella pagina:


<input type="button" value="clicca" onClick="ciao()">

che d il seguente output:


Se volete imparare a programmare in JavaScript potete consultare la relativa guida.
Su HTML.it sono presenti numerose raccolte di JavaScript, vi segnalo ad esempio la mailing list relativa a
JavaScript.
VbScript ("Visual Basic Script") anchesso un linguaggio di scripting eseguito dal browser, ma possibile
utilizzarlo soltanto con Internet Explorer. Se volete consultare la guida relativa, potete andare a questo
indirizzo.

I CSS (i fogli di stile)


Infine i fogli consentono di impostare il layout di un documento.
La sintassi per includerli allinterno della pagina :
<style type="text/css">

</style>

Anche in questo caso vi rimando alla guida ai CSS.

I meta tag
I meta tag
Adesso che abbiamo terminato il nostro sito possiamo occuparci di farlo trovare dai motori di ricerca.
utile allora impostare correttamente i meta tag all interno della <head> del documento: si tratta di una
serie di parole chiave e descrizioni, che aiutano i motori di ricerca a classificare il sito.
Abbiamo gi visto il <title>, che il titolo della pagina; ma il testo ivi contenuto pu comparire anche in
seguito alla ricerca in un motore, come titolo del link. Sar dunque importante impostarlo in modo pertinente:
<title>HTML.it il sito italiano sul webpublishing</title>

C poi il meta-tag "description" che permette di impostare una descrizione sintetica del sito stesso. Anche
in questo caso, la descrizione compare talvolta nei risultati della ricerca:
<meta name="description" content="HTML.it - il sito italiano sul Web publishing">

Infine il meta-tag "keywords" permette di indicare alcuni contenuti relativi al sito stesso.
Le keywords (a seconda del webmaster) compaiono separate da virgola, da punto e virgola, oppure senza
alcun segno di interpunzione:
<meta name="keywords" content="html wml xml smil javascript js dhtml dynamic xhtml
vbscript coldfusion photoshop paint shop pro risorse webmaster webdesigner flash grafica
css applet java asp cgi perl guida free corso php mysql tutorial lezioni sql database
realizzazione siti web leggi mailing list newsletter gif jpg publishing editor iis
webserver apache linux raccolte script news chat forum fogli di stile hdml wap linux mac
apple palmari computer c++ delphi visual basic vb vbasic">

fortemente sconsigliabile linserimento di keyword "astute" non relative al contenuto effettivo del sito
per migliorare il posizionamento (tipo le ricercatissime "sesso", "mp3", ecc.). Quando i motori di ricerca se ne
accorgono, per lo pi cancellano il sito dalle loro liste.
Su HTML.it sono presenti molte risorse sull'argomento. L'articolo I Meta-tag: come scriverli correttamente, ad
esempio, un approfondimento su come impostare i meta-tag.
Un buon posizionamento allinterno dei motori di ricerca una meta difficile da raggiungere e largomento
non si esaurisce certo in poche righe. Per cui, se siete interessati all'argomento, vi rimando alla sezione
Motori di Ricerca di PRO.HTML.it e al forum di discussione dedicato a Motori di Ricerca e Web Marketing.

Il Doc Type
Il doctype
Finora ho volutamente tralasciato lanalisi della prima riga di una pagina HTML (quella che consente di
specificare di che tipo di documento si tratta). Il <!DOCTYPE> assume un aspetto di questo genere:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//IT"
http://www.w3.org/TR/html4/loose.dtd>

Questa riga fornisce alcune informazioni sul documento:

HTML: il tipo di linguaggio utilizzato lHTML

PUBLIC: il documento pubblico

W3C: il documento fa riferimento alle specifiche rilasciate dal W3C

- ( il segno "meno"): le specifiche non sono registrate allISO (organizzazione di standardizzazione


internazionale). Se lo fossero state, ci sarebbe stato un "+"

DTD HTML 4.01 Transitional: il documento fa riferimento a una DTD ("Document Type Definition"
cio "Definizione del tipo di documento"); la versione di HTML supportata la 4.01 "transitional"

IT: la lingua del documento l'Italiano

Inoltre, se necessario, possibile specificare lindirizzo di riferimento a cui possibile trovare la DTD: per
lHTML non lo si fa quasi mai, perch gli URL a cui trovare la documentazione sono universalmente noti.
Per quel che riguarda lHTML le indicazioni possibili sono tre:

Strict: una DTD particolarmente rigorosa: esclude ogni elemento che riguarda il layout (la cui
formattazione affidata allutilzzo dei CSS) e non consentito luso degli elementi deprecati:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Strict//IT"
http://www.w3.org/TR/html4/strict.dtd>

Transitional: una versione temporanea, per consentire il passaggio da una specifica all'altra.
Nella DTD transitionali tag deprecati sono ammeesi. Questa DTD andr bene nella maggior parte
dei casi:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//IT"
http://www.w3.org/TR/html4/loose.dtd>

Frameset. la DTD che riguarda i frames:


<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Frameset//IT"
http://www.w3.org/TR/html4/frameset.dtd>

Nelle ultime versioni il tipo di <!DOCTYPE> utilizzato influisce sulla visualizzazione della pagina
da parte del browser. Tale tecnica, chiamata <!DOCTYPE> switch, una delle principali cause di
visualizzazione delle pagine sul Web. A questo argomento HTML.it ha dedicato un lungo e
dettagliato approfondimento nell'articolo Il <!DOCTYPE> ed il <!DOCTYPE> switch nei moderni
browser

Potrebbero piacerti anche