Lezione 3

Transcript

Lezione 3
Lezione 3
Cosa vedremo
Come si aggiunge struttura a un testo con HTML
I tag di base e i loro attributi
Progettazione di siti web
a.a. 2015/16
HTML per cominciare
Maria Simi
Febbraio, 2016
Tag per il testo
Inserire link
Inserire immagini
Tabelle
Tag buoni, tag deprecati, tag obsoleti
Documenti (X)HTML5
Validazione o controllo di conformità
[Learning web design,
design, Niederst, cap. 4-9]
Editori HTML
Editori HTML
Sono editori di testo (evitare "rich text")
Ci aiutano a scrivere HTML corretto
Suggerimenti sui tag, evidenziazione della sintassi
Quali strumenti
Windows: NotePad++, Emacs (HTML mode)
Mac: TextEdit (in Text mode), BBEdit, Emacs
Pagina strumenti su Moodle
I tag HTML
Un linguaggio formale di marcatura (markup
(markup))
Le marche HTML (d'ora in poi tag
tag)) sono
direttive che i browser interpretano
contenitori per porzioni di documento: gli elementi HTML
Uso dei tag HTML
si aprono con <nome elemento>
elemento>
si chiudono con </
</nome
nome elemento>
elemento>
<p>Paragrafo
Paragrafo di testo</p>
<p>
testo</p>
1
Lezione 3
HTML: attributi
I tag possono avere attributi che compaiono nel tag di
apertura (in viola), con relativo valore (in verde):
id=
="es1"
"es1">
>Esempio
Esempio</a>
</a>
<a href=
href="esempio.html" id
<p class=
class="right">
"right">Paragrafo allineato a destra</p>
destra</p>
L'attributo class ha come valore "right"
Gli attributi non compaiono mai nei tag di chiusura
Quale versione di HTML
Sintassi XML
Un parser XML è molto meno tollerante di un interprete
HTML
I browser fanno del loro meglio nell’interpretare
documenti HTML anche in presenza di una sintassi
"zoppicante"
Ad un documento XHTML si richiede di essere
formalmente corretto e di seguire delle regole
sintattiche molto più rigide
XHTML1.0 è un variante di HTML che rispetta le regole di XML
HTML5 è la nuova versione di HTML che non segue XML
Useremo un versione "pulita" di HTML5: (X)HTML5
XHTML: regole per i tag
XHTML: regole per gli attributi
i tag sono scritti in minuscolo
nome dell'attributo minuscolo
tutti i tag si aprono e si chiudono
si possono usare solo gli attributi previsti per un certo
tag; l'ordine non conta
gli elementi vuoti (quelli che non hanno contenuti)
vanno comunque chiusi, così:
<br /> che è come <br></br>
annidamento corretto dei tag (si chiudono in ordine
inverso a quello in cui si aprono)
/i></b
b></
></p
p>
SI <p><b><i> Esempio </i></
/b></i
i></
></p
p>
NO <p><b><i> Esempio </b></
restrizioni di annidamento specifiche: a esempio un p
non può stare dentro un altro p.
Documento (X)HTML valido o conforme
Documento XHTML valido
Rispetta le regole sintattiche generali di XML (ben formato)
Documento ben formato che è conforme alle specifiche del
linguaggio
Un validatore XHTML controlla la sintassi XML e la conformità rispetto
alle specifiche
Documento HTML conforme
Usa un linguaggio conforme alle specifiche
I validatori HTML5 sono in realtà controllori di conformità (HTML5
Conformance Checker)
rigorosamente nella forma: attributo = "valore"
gli attributi hanno sempre un valore (non minimizzati)
checked=
="checked"
checked
virgolette singole o doppie intorno al valore (si raccomanda un uso
coerente)
Virgolette normali (codice ASCII): evitare caratteri speciali usati per
virgolette di apertura e chiusura … usare un editore di testo e non di
testo arricchito!
Informazioni ignorate dai browser
Interruzioni di linea nel file HTML non servono per
andare a capo, sono come spazi
TAB e spazi multipli
<p> multipli: non servono per inserire più righe bianche
Tag e attributi non previsti vengono ignorati
ma creano problemi di validazione
I commenti si inseriscono così ...
<!-- Commento nel file HTML -->
È comunque una buona pratica seguire la sintassi XML
2
Lezione 3
Struttura minima del documento
<html>
<head>
<title>Il
Il titolo del documento</title>
<title>
documento</title>
</head>
<body>
...
Il corpo del documento: contiene tutto ciò
che il browser visualizzerà
...
</body>
</html>
1. Scrivere questo con un editore di testo
2. Salvarlo con estensione html
3. Visualizzarlo con il browser Esempio
browser Esempio 1
Tre varianti di XHTML 1.0
Tre DTD (Document Type Definition) che definiscono
linguaggi XHTML diversi:
STRICT:: il più restrittivo. Esclude tag e attributi deprecati
STRICT
TRANSITIONAL:: di transizione, consente anche i tag in via di estinzione
TRANSITIONAL
per tenere conto dei vecchi browser
FRAMESET:: come TRANSITIONAL ma consente anche l'uso dei frame.
FRAMESET
:-Q
Validazione
Per la validazione: http://validator.w3.org
Motivi per farlo
per catturare errori
aiutare il browser a interpretare correttamente il documento
aumentare la compatibilità
passare l'esame :-)
Perché passi la validazione devono essere presenti:
il DOCTYPE: ci dice qual è il linguaggio usato
tag meta charset
charset:: ci dice la codifica dei caratteri utilizzata
Il validatore si comporterà in maniera diversa a seconda
del DOCTYPE
Dichiarazione DOCTYPE
Strict
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
Transitional
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
Frameset
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Frameset//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-frameset.dtd">
Documento HTML5 minimo validabile
<!DOCTYPE html>
<html>
<head>
<title>Il
Il titolo del documento</title>
<title>
documento</title>
charset=
="UTF-8" />
<meta charset
</head>
<body>
<p>Il
Il corpo del documento: contiene tutto ciò
<p>
che il browser visualizzerà</p>
visualizzerà</p>
</body>
</html>
Tag buoni e meno buoni
Separazione stile-contenuto
HTML per la struttura del testo
CSS per lo stile
Tag strutturali o semantici: buoni
= :-)
Tag di presentazione o stilistici o proprietari: deprecati
= :-Q
Distinzione da puristi ma tanto vale abituarsi:
HTML5 fa pulizia.
Esempio 1 (HTML5 validabile)
Considera obsoleti i tag deprecati
Introduce nuovi tag semantici
3
Lezione 3
Tag strutturali e semantici
Body
Titoli, Paragrafi
Tutti gli elementi visibili stanno dentro body
Citazioni, indirizzi, testo preformattato
Attributi leciti di body (e di ogni altro tag):
Abbreviazioni, variabili
Enfasi ed evidenza
Liste
I collegamenti ipertestuali
Le immagini
Le tabelle
Intestazioni
Intestazioni di diverso livello (fino a 6)
h1>
>Un titolo di primo livello
Un titolo di primo livello</
</h1
h1>
>
<h1
h2>
>Un titolo di secondo livello
Un titolo di secondo livello</
</h2
h2>
>
<h2
h3>
>Un titolo di terzo livello
Un titolo di terzo livello</
</h3
h3>
>
<h3
h2>
>Un altro titolo di secondo livello
Un altro titolo di secondo livello</
</h2
h2>
>
<h2
Attributi leciti
id, class, style, title
Attributi deprecati
align = center | right | left left :-Q
id, class, style … servono per i CSS e gli script
title … per usabilità
Tutti gli altri tag sono deprecati:
<body text=
text=“black” link=
link=“blue” bgcolor=
bgcolor=“white”>
“white”>
:-Q
font=
=“arial”
“arial”>
>
<body font
:-Q
Paragrafi
Questo è un primo paragrafo di testo</
</p
p>
<p>Questo è un primo paragrafo di testo
<p>Questo è un secondo paragrafo di testo
un po’ più lungo del primo</
</p
p>
un po’ più lungo del primo
Un paragrafo non può contenerne un altro
Attributi
id, class, style, title
left :-Q
align = center | right | left
Nota: non usare Hx per la grandezza del carattere
Citazioni, indirizzi, testo preformattato
Abbreviazioni, variabili, enfasi …
Citazioni: blockquote, q, cite, address
Si usano dentro i testi
acronym è obsoleto, sostituito da abbr
blockquote>
>
<blockquote
<
<p>Il miglior modo di prevedere il futuro è quello di inventarlo</
</p
p>
quello di inventarlo
</blockquote
blockquote>
>
</
address>
>Alan Key, U.S.A.
Alan Key, U.S.A.</
</address
address>
>
<address
<p>
cite>
>La Divina Commedia
La Divina Commedia</
</cite
cite>
> di Dante <cite
Alighieri
</p
p>
</
Testo preformattato
<p>
<
<abbr
abbr title
title=
="Hyper Text Transfer Protocol"
"Hyper Text Transfer Protocol">
>HTTP
HTTP</
</abbr
abbr>
>
è un protocollo di comunicazione tra client e server.
</p
p>
</
Il web è stato inventato da <
<abbr
abbr>
>T.
T.</
</abbr
abbr>
> <abbr
abbr>
>B.
B.</
</abbr
abbr>
> Lee.
Lee.</
</p
p>
<p>Il web è stato inventato da Sia <
<var
var>
>x</
</var
var>
> una variabile … una variabile … </
</p
p>
<p>Sia Sia <
<em
em>
>x</
</em
em>
> una variabile … una variabile … </
</p
p>
<p>Sia pre>
>
<pre
Un frammento di codice
Un frammento di codice rientrato di tre Un frammento di codice rientrato di tre caratteri
</pre
pre>
>
</
Esempio 2
4
Lezione 3
Enfasi ed evidenza
Tag strutturali vs stilistici
Enfasi ed evidenza
Strutturali
<p>Questo
Questo è molto <em>
<em>interessante
interessante</em>
</em>!
!</p>
<p>
<p>Questo
Questo è molto <strong>
<strong>importante
importante</strong>
</strong>!
!</p>
<p>
Diverso da italico o grassetto che sono annotazioni
stilistiche
<p>Questo
Questo è molto <i>
<i>interessante
interessante</i>
</i>!
!</p> :-Q
<p>
<p>Questo
Questo è molto <b>
<b>importante
importante</b>
</b>!
!</p>
:-Q
<p>
Una distinzione da puristi?
Stilistici
strong
forte
b
bold :-Q
"spicca" in HTML5
em
enfasi
i
italic :-Q
"cambio di tono" in HTML5
code
codice
tt
teletype
:-Q
del
cancella
strike
riga sopra :-Q
testo scorretto
em
enfasi
u
sottolinea
:-Q :-Q
var
variabile
i
italic
:-Q
sup
apice
small
testo piccolo :-Q
testo piccolo
inf
pedice
big
testo grande
:-Q
abbr
address ...
altri
<blink>
lampeggia
:-Q :-Q
Esempio 3
Il tag <font> :-Q :-Q
Caratteri speciali
<font> può (poteva) essere usato per definire il tipo di
carattere tipografico, le sue dimensioni, il colore
I seguenti caratteri hanno un significato speciale per gli
interpreti HTML e i parser XML: <, >, &, ", '
Se vogliamo visualizzarli come tali è necessario usare le
loro corrispondenti entità carattere o il corrispondente
codice Unicode.
face=
="Verdana" size
size=
="+2" color
color=
="red"
"red">
>
<font face
In dettaglio:
size:: le dimensioni del carattere
size
face:: il carattere tipografico (tipo o font)
face
color:: il colore dei caratteri (vedi dopo)
color
Altre entità carattere
Carattere
Entità carattere
Caratteri Unicode
<
&lt;
&#060;
>
&gt;
&#062;
&;
&amp;
&#038;
"
&quot;
...
'
&apos;
...
Liste non numerate e numerate
Lettere accentate
Simboli
à
&agrave;
&#224;
©
&copy;
&#169;
è
&egrave;
&#232;
®
&reg;
&#174;
é
&eacute;
&#233;
"
&quot;
&#34;
ì
&igrave;
&#236;
’
&rsquo;
...
ò
&ograve;
&#242;
º
&ordm;
&#186
ù
&ugrave;
&#249;
˜
&tilde;
...
ì
&igrave;
&#236;
”
&rdquo;
...
spazio
&nbsp;
&#160;
€
&euro;
...
§
&sect;
&#167;
TABELLA
ul>
>
<ul
<
<li
li>
>il primo elemento della lista
il primo elemento della lista</
</li
li>
>
<
<li
li>
>il secondo elemento
il secondo elemento</
</li
li>
>
<
<li
li>
>il terzo elemento
il terzo elemento</
</li
li>
>
</ul
ul>
>
</
Attributo: type = disc | circle | square :-Q
ol>
>
<ol
<
<li
li>
>il primo elemento della lista
il primo elemento della lista</
</li
li>
>
<
<li
li>
>il secondo elemento
il secondo elemento</
</li
li>
>
<
<li
li>
>il terzo elemento
il terzo elemento</
</li
li>
>
</o
o>
</
Attributo: type = 1 | I | i | A | a :-Q
5
Lezione 3
Liste di definizioni
dl>
>
<dl
<
dt>
>
<dt>
dt>primo elemento</
primo elemento</dt
<
<dd
dd>
>definizione
definizione</
</dd
dd>
>
<
<dt
dt>
>secondo elemento
secondo elemento</
</dt
dt>
>
<
<dd
dd>
>definizione
definizione</
</dd
dd>
>
<
<dt
dt>
>terzo elemento
terzo elemento</
</dt
dt>
>
<
<dd
dd>
>definizione
definizione</
</dd
dd>
>
</dl
dl>
>
</
Interruzioni di linea e linee orizzontali
Per andare a capo
<br />
Per inserire una riga orizzontale
<hr />
Tutti gli elementi stilistici da definire nel foglio di stile
I collegamenti ipertestuali (link)
Per i collegamenti si usa il tag <a> con attributo href il
cui valore è l’URL della pagina che vogliamo collegare.
href=
="http://..."
"http://...">
>Pagina collegata</a>
<a href
collegata</a>
Link assoluti e relativi
Link esterni: URL completo
"http://www.w3.org/">
>W3C
W3C</a>
</a>
<a href=
href="http://www.w3.org/"
href=
="http://infouma.di.unipi.it/">
IU</a>
</a>
<a href
"http://infouma.di.unipi.it/">IU
Link a risorse sullo stesso server
Link relativi alla radice del web server
Il testo tra <a> e </a> è il testo del collegamento che
normalmente sarà visualizzato in blu e sottolineato dai
browser.
href=
="/infouma/corsi/simi/"
"/infouma/corsi/simi/">
>Pagina PSW</a>
<a href
PSW</a>
Cliccando sul collegamento l'effetto "normale" è che
viene caricata la pagina collegata al posto di quella
attuale
"biblio.html">
>Bibliografia
Bibliografia</a>
</a>
<a href=
href="biblio.html"
href=
="../psw/biblio.html">
Bibliografia</a>
</a>
<a href
"../psw/biblio.html">Bibliografia
Link relativi al file, specificando il percorso
Attenzione alla rilocabilità!!
href=
="C://infouma/psw/biblio.html"
"C://infouma/psw/biblio.html">
> crea problemi
<a href
Collegamenti all’interno delle pagine
Sono possibili anche collegamenti che ci portano
all'interno di una pagina piuttosto che all'inizio:
è necessario marcare la destinazione con un id
Salto all'interno della stessa pagina
href=
="#qui"
"#qui">
>Sezione 3</a>
<a href
3</a>
...
id=
="qui"
"qui">
>Sezione 3</h3>
<h3 id
3</h3>
Salto nel mezzo di una pagina diversa (pag.html)
"http://sito/pag.html#li">
>
<a href=
href="http://sito/pag.html#li"
Salta li</a>
li</a>
...
...
"li">
>Inizio testo
testo</
</p
p>
<p id=
id="li"
...
6
Lezione 3
Le immagini
Inserire un’immagine
img src
src=
="images/micio.gif"
"images/micio.gif" <img
width
width=
="278px"
"278px" height
height=
="278px"
alt
alt=
="il mio gatto preferito"
"il mio gatto preferito" />
href=
="Esempi/file.html"
"Esempi/file.html">
>
<a href
img src
src=
="images/micio.gif"
"images/micio.gif" <img
width
width=
="100px"
"100px" height
height=
="100px"
alt
alt=
="il mio gatto preferito"
"il mio gatto preferito" />
</a
</a>
Tabelle per i dati
table>
>
<table
th>
> <th>
th>
></tr
>
<tr>
tr><th>
th>Anno</
Anno</th
th>Vendite</
Vendite</th
</tr>
<tr
tr>
><td
td>
>2000
2000</
</td
td>
> <td
td>
>18M
18M</
</td
td>
></
</tr
tr>
>
<tr
tr>
><td
td>
>2001
2001</
</td
td>
> <td
td>
>25M
25M</
</td
td>
></
</tr
tr>
>
<tr
tr>
><td
td>
>2002
2002</
</td
td>
> <td
td>
>36M
36M</
</td
td>
></
</tr
tr>
>
</table
table>
>
</
Proviamo come cambia la tabella con
<table border="1px"> :-Q, ci mostra il bordo della tabella e delle celle.
<table cellpadding="8px"> :-Q, definisce lo spazio interno ad ogni cella
padding))
(padding
Nota: width e height non sono deprecati in XHTML ma
diventano "obsoleti" in HTML5.
Ampiezza di tabelle e colonne
table border
border=
="1px"
"1px"; ; width
width=
="80%"
"80%">
>
<table
<tr
tr>
><th
th>
>Anno
Anno</
</th
th>
><th
th>
>Vendite
Vendite</
</th
th>
></
</tr
tr>
>
<tr
tr>
><td
td>
>2000
2000</
</td
td>
><td
td>
>18M
18M</
</td
td>
></
</tr
tr>
>
<tr
tr>
><td
td>
>2001
2001</
</td
td>
><td
td>
>25M
25M</
</td
td>
></
</tr
tr>
>
<tr
tr>
><td
td>
>2002
2002</
</td
td>
><td
td>
>36M
36M</
</td
td>
></
</tr
tr>
>
</table
table>
>
</
width è deprecato sulle celle e le righe :-Q
width è obsoleto in HTML5 :-Q
Esempio 4
<table cellspacing="6px"> :-Q, definisce lo spazio tra le celle
Celle che si espandono
colspan="
="n
n" di una cella dice che quella cella si
L’attributo colspan
estende su n colonne
rowspan="
="n
n" di una cella dice che quella cella si
L’attributo rowspan
estende su n righe.
table border
border=
="1px"
"1px">
>
<table
tr>
><td
td colspan
colspan=
="3"
"3">
>Titolo
Titolo</
</td
td>
></
</tr
tr>
>
<tr
tr>
> <tr
<td
td>
>Uno
Uno</
</td
td>
> <td
td>
>Due
Due</
</td
td>
> <td
td>
>Tre
Tre</
</td
td>
>
</tr
tr>
>
</
</table
table>
>
</
Esempio 5
Tabelle per il layout :-Q
Rigorosamente senza bordi
Testo con margini Layout 1
Testo su due colonne Layout 2
Uno schema di pagina Layout 3
Un po' di colore
Colori: un certo numero sono disponibili con il loro
nome in inglese
blue, green, yellow, red, magenta...
magenta...
I colori sono codificati con un numero di 6 cifre
esadecimali (codifica RGB per Red-Green-Blue)
#ffff00 corrisponde al giallo
#ff0000 corrisponde al rosso
Tabella di colori
body,, td … per colorare lo sfondo
L’attributo bgcolor di body
della pagina o di una cella è deprecato :-Q
7
Lezione 3
Conclusioni
Il nucleo di HTML "incoraggiato" è molto piccolo:
contiene solo tag di tipo strutturale o semantico
Quasi tutto il resto ha a che fare con aspetti di
presentazione; in genere sono tag deprecati :-Q.
Ciò che è "deprecato" diventa "obsoleto" o addirittura
"assente" in HTML5.
Gli aspetti di presentazione sono delegati ai fogli di stile
in base al principio della separazione contenuto/stile.
Prossima lezione: un esercitazione sulla marcatura
8