Creare un sito con XHTML e CSS

Transcript

Creare un sito con XHTML e CSS
Creare un sito con XHTML e CSS
Claudio Canavese (CoD), <[email protected]>
Copyright (C) 2009 Claudio Canavese.
È garantito il permesso di copiare, distribuire e/o modificare questo documento
seguendo i termini della Licenza per Documentazione Libera GNU, Versione 1.2
o ogni versione successiva pubblicata dalla Free Software Foundation;
con le Sezioni Non Modificabili “Chi siamo”, “Come contattarci” e “Serate a tema”,
con i Testi Copertina “Creare un sito con XHTML e CSS”, e nessun Testo di Retro Copertina.
Una copia della licenza è acclusa nella sezione intitolata "Licenza per Documentazione Libera GNU".
Tutti i codici XHTML e CSS presenti in questo documento sono distribuiti come Pubblico Domino.
Permission is granted to copy, distribute and/or modify this document under the terms of the
GNU Free Documentation License, Version 1.2 or any later version published by the Free Software Foundation;
with the Invariant Sections being “Chi siamo”, “Come contattarci” and “Serate a tema”,
with the Front-Cover Texts being “Creare un sito con XHTML e CSS”, and no Back-Cover Texts.
A copy of the license is included in the section entitled "Licenza per Documentazione Libera GNU".
All XHTML and CSS code in this document are released under Public Domain.
Chi siamo
A.L.I.D. è un'associazione di volontariato, senza scopo di lucro, che persegue i seguenti fini:
1. Diffondere e promuovere il software libero
2. Favorire la diffusione degli strumenti informatici mediante una corretta alfabetizzazione
3. Contrastare l'adozione di standard chiusi per la gestione elettronica dei documenti,
favorendo l'adozione di standard pubblici e liberamente accessibili
4. Favorire l'adozione di licenze di tipo libero anche nella pubblicazione di documentazione
tecnica, nei testi scolastici e in tutta la produzione culturale e artistica in genere
5. Favorire il recupero di hardware in disuso attraverso l'utilizzo di software libero
6. Favorire l'accessibilità del software libero, lo sviluppo di un nuovo software libero, la
manutenzione di quello esistente e la traduzione in italiano della documentazione e del
software stesso
7. Favorire l'adozione del software libero all'interno del mondo degli enti pubblici e privati,
delle imprese, dell'associazionismo, della pubblica amministrazione, dell'educazione,
della ricerca
L'Associazione collabora con altre associazioni affini che perseguano obiettivi analoghi,
sia in ambito locale che nazionale o internazionale.
Come contattarci
Inviando una email a [email protected] o visitando il nostro sito www.alid.it.
Associazione per le Libertà Informatiche e Digitali
Via giovanni Torti 35 - 16143 Genova
C.F. 95108450107
SERATE A TEMA
Le Serate a tema di ALID sono una serie di incontri aperti a tutti e pensati per
avvicinare il grande pubblico ad alcuni argomenti del panorama informatico e digitale.
Tutte le serate sono assolutamente gratuite ed i partecipanti, se lo desiderano, possono
ricevere copia dei software presentati ed utilizzati durante la serata.
Le serate si svolgono sempre il lunedì sera, alle 21, nella sede di ALID in via Giovanni
Torti 35 a Genova. Per i laboratori è consigliato prenotare una postazione pc sul sito
www.alid.it/eventi.
Indice generale
1 Codice vs. Grafica.............................................................................................................................6
2 Il WEB...............................................................................................................................................7
2.0 Come funziona..........................................................................................................................................................7
2.1 La storia....................................................................................................................................................................8
2.1.0 In principio c'era l'HTML..................................................................................................8
2.1.1 La guerra dei browser........................................................................................................9
2.2 Il W3C.....................................................................................................................................................................10
3 Il linguaggio XHTML.....................................................................................................................11
3.0 Concetti e stili.........................................................................................................................................................11
3.1 Sintassi fondamentale.............................................................................................................................................12
3.2 La nostra prima pagina XHTML............................................................................................................................13
3.3 La sezione BODY...................................................................................................................................................13
3.4 I paragrafi................................................................................................................................................................14
3.5 Grassetti e corsivi....................................................................................................................................................16
3.6 Tag di blocco e tag in linea.....................................................................................................................................18
3.7 Le immagini............................................................................................................................................................19
3.8 I link........................................................................................................................................................................20
3.9 Qualcosa di più complicato.....................................................................................................................................22
4 CSS: i fogli di stile..........................................................................................................................23
4.0 Sintassi fondamentale.............................................................................................................................................23
4.1 Legare il CSS al XHTML.......................................................................................................................................23
4.2 Il primo stile............................................................................................................................................................24
4.3 Qualcosa di più complicato.....................................................................................................................................25
5 ID e classi: il CSS alla massima potenza.........................................................................................26
5.0 Gli ID......................................................................................................................................................................26
5.1 Le classi..................................................................................................................................................................28
5.2 Padri e figli..............................................................................................................................................................30
5.3 Mischiare le cose.....................................................................................................................................................31
5.4 La cascata................................................................................................................................................................32
6 Progettare un layout.........................................................................................................................33
6.0 I div.........................................................................................................................................................................33
6.1 Unità di misura........................................................................................................................................................34
6.2 Posizionamento.......................................................................................................................................................35
6.3 Il layout a due colonne ed intestazione...................................................................................................................36
7 Conclusioni......................................................................................................................................38
8 Licenza per Documentazione Libera GNU.....................................................................................39
8.0 PREAMBLE...........................................................................................................................................................39
8.1 APPLICABILITY AND DEFINITIONS...............................................................................................................39
8.2 VERBATIM COPYING.........................................................................................................................................40
8.3 COPYING IN QUANTITY....................................................................................................................................40
8.4 MODIFICATIONS.................................................................................................................................................41
8.5 COMBINING DOCUMENTS................................................................................................................................42
8.6 COLLECTIONS OF DOCUMENTS.....................................................................................................................42
8.7 AGGREGATION WITH INDEPENDENT WORKS............................................................................................42
8.8 TRANSLATION.....................................................................................................................................................42
8.9 TERMINATION.....................................................................................................................................................43
8.10 FUTURE REVISIONS OF THIS LICENSE........................................................................................................43
1 Codice vs. Grafica
Molti si chiedono “perché dovrei imparare a scrivere del codice HTML quando ci sono molti
programmi che lo fanno per me mentre disegno col mouse?”
In realtà creare un sito web scrivendo direttamente il codice assicura alcuni importati vantaggi.
I vantaggi principali sono:
maggior controllo su ogni aspetto della pagina e del sito
maggiore compatibilità con i browser, anche con quelli vecchi o con quelli speciali come i
programmi usati dai telefonini o dai disabili
file più piccoli rispetto a quelli generati con gli editor grafici che spesso inseriscono cose
inutili che appesantiscono il codice
accessibilità
Per accessibilità si intende la possibilità per un disabile di accedere al contenuto ed ai servizi offerti
da un sito.
Creare un sito accessibile (ad esempio utilizzabile con un browser speciale che trasforma il testo in
voce oppure in braille) può davvero fare la differenza per alcune persone tra essere un handicappato
e poter interagire col mondo, informarsi, studiare, persino lavorare.
2 Il WEB
2.0
Come funziona
Sapere come funziona una comunicazione tra un client (il computer del nostro utente) ed un server
(su cui è ospitato il sito che abbiamo creato) può essere molto utile per capire cosa possiamo e cosa
non possiamo fare.
La comunicazione di base tra client e server avviene in tre passi:
●
Passo 1:
Il client contatta il server e richiede un file
●
Passo 2:
Il server risponde inviando il file richiesto
oppure comunicando che il file non esiste
●
Passo 3:
La comunicazione viene interrotta
Questo ultimo passo è molto importante: tra client e server non si instaura una comunicazione fissa,
come quella telefonica, ma ogni volta che una pagina è stata ricevuta il nostro server si dimentica
completamente del client fino alla richiesta successiva.
Questa procedura viene ripetuta per ogni immagine contenuta in una pagina web, per ogni foglio di
stile e per ogni oggetto esterno che abbiamo incluso.
2.1
La storia
2.1.0
In principio c'era l'HTML
La prima idea di web nasce nel 1989, a marzo, quando sir Tim Berners-Lee scrive una proposta di
sistema per comunicare informazioni attraverso internet, intitolata “Information Management: A
Proposal”1.
La prima idea di ipertesto, cioè di un testo in grado di trasportare l'utente verso un altro testo
attraverso i link, nasce nel 1990 con il documento “WorldWideWeb: Proposal for a HyperText
Project”2 ad opera sempre di Tim Berners-Lee assieme a Robert Cailliau e ad altri.
Sempre nel 1990, a Natale, nasce il primo server web della storia, basato su un computer NeXT.
L'HTML, cioè il linguaggio pensato per creare ipertesti e trasmettere documenti attraverso internet,
era in origine molto semplice.
Ecco un esempio tratto dalla prima pagina web della storia3:
<TITLE>The World Wide Web project</TITLE>
...
<H1>World Wide Web</H1>
...
<P>
Everything there is online about
W3 is linked directly or indirectly
to this document, including an
...
</P>
1 http://www.w3.org/History/1989/proposal.html
2 http://www.w3.org/Proposal.html
3 http://www.w3.org/History/19921103-hypertext/hypertext/WWW/TheProject.html
Come si può facilmente vedere l'HTML si basa sul concetto di tag, cioè di etichetta.
Se vogliamo definire il titolo di un documento non facciamo altro che appiccicare l'etichetta TITLE
prima e dopo la frase che costituisce il titolo, avendo cura di “chiudere” l'etichetta aggiungendo un
carattere slash (il carattere / ) prima del secondo TITLE.
La stessa cosa si può fare per un titolo di primo livello, usando il tag H1 (cioè heading 1) oppure
con il paragrafi usando il tag P.
I tag sono sempre scritti tra i segno minore e maggiore.
2.1.1
La guerra dei browser
L'HTML era un sistema semplice e allo stesso tempo molto potente ed ebbe un incredibile successo
sin dalle sue prime applicazioni.
Presto iniziarono a diffondersi i primi web browser, programmi in grado di interpretare questo
linguaggio e (successivamente) differenziare graficamente titoli, paragrafi, elenchi, eccetera,
permettendo anche la navigazione attraverso i link.
Nel 1994 compare sulla scena internazionale il browser Netscape Navigator, un programma a
pagamento che contiene parecchie innovazioni rispetto ai prodotti della concorrenza, l'anno dopo
Microsoft crea Internet Explorer 1.
Inizia così la Prima Guerra dei Browser, una sanguinosa battaglia per ottenere il predominio sul
mercato dei browser, principalmente combattuta da Netscape e Microsoft.
Per vincere sull'avversario entrambe le ditte inventano nuovi tag, brevettati e non copiabili, che
possono essere interpretati solo dal loro prodotto; sono i tag proprietari, che si diffondono
velocemente tra i creatori di siti web.
Microsoft, ad esempio, crea il tag MARQUEE che permette di far scorrere il testo in maniera
animata, Netscape risponde con il tag BLINK, che fa lampeggiare il testo. Microsoft crea il tag
BGSOUND che perette di inserire un suono automatico di sottofondo, Netscape rilancia con il tag
EMBED in grado di incorporare nelle pagine web non solo suoni ma anche filmati e altri oggetti
dinamici.
I creatori di siti web iniziano ad apporre speciali loghi sulle loro pagine con scritto “sito visibile
solo con Internet Explorer” oppure “sito ottimizzato per Netscape Navigator”, diventando quindi
parte attiva nella guerra tra i browser e spingendo i loro visitatori ad acquistare l'uno o l'altro
prodotto.
Quando Netscape inventa il tag FONT, che permette di cambiare il tipo di carattere, la dimensione
e altri attributi del testo, le pagine web diventano rapidamente incomprensibili: il codice si riempie
di tag che possono essere visti solo da un prodotto specifico e una semplice azione come navigare in
internet diventa ogni giorno più difficile, dovendo districarsi nella rete delle compatibilità.
2.2
Il W3C
La situazione si fa presto talmente insostenibile che una persona, che fino ad allora era stata in
silenzio, decide di dire basta.
Non si tratta di una persona qualunque, ma
proprio di Tim Berners-Lee: l'uomo che ha
inventato il web.
Nasce così il W3C o “World Wide Web
Consortium”, un organizzazione libera con il
compito di definire gli standard internazionali
per la comunicazione attraverso internet ed
evitare quindi che le singole ditte possano
imporre tag proprietari e brevetti.
Il W3C inizia un'opera di “disinfezione” del
codice HTML, ripulendolo dai tag proprietari ed
iniziando la campagna “Viewable With Any
Browser”, cioè “Visibile con tutti i browser”.
La Prima Guerra dei Browser finisce ufficialmente quando Microsoft, con una mossa inaspettata,
decide di fornire Internet Explorer assieme al sistema operativo Windows, scoraggiando così
completamente l'acquisto di qualunque altro browser sul mercato: la gente è convinta che Internet
Explorer sia fornito “gratuitamente” con il sistema operativo e quindi non è motivata ad acquistarne
altri.
Netscape subisce un brusco calo di vendite e dopo poco fallisce, ma prima di chiudere decide di
rilasciare il codice sorgente di Netscape Navigator liberamente. Questo codice verrà preso dalla
comunità del software libero, migliorato e aggiornato e darà vita prima al browser Mozilla e poi al
più noto Mozilla Firefox e al motore di rendering Gecko (usato dai browser Netscape, SeaMonkey,
Beonex, Camino, Galeon, Epiphany e da molti altri)
Nel 1990 il W3C rilascia un nuovo standard chiamato XHTML, un sorta di HTML “migliorato”,
anzi: ripensato da zero per essere più potente, più compatibile e più accessibile dei suoi
predecessori.
3 Il linguaggio XHTML
3.0
Concetti e stili
XHTML è un linguaggio completamente orientato alla marcatura dei concetti: non ha alcun tag per
definire lo stile.
Tutta la parte di presentazione di una pagina web è lasciata al nuovo linguaggio CSS, separando
così nettamente la parte di informazione da quella di presentazione.
Dall'unione di XHTML e CSS nasce la pagina web finale, contenente i concetti contenuti nel
XHTML formattati secondo le regole specificate nel CSS
Comprendere la separazione dei concetti dallo stile è fondamentale per creare siti web professionali
e accessibili.
Ad esempio: nel vecchio HTML esisteva il tag B il cui compito era quello di rendere in grassetto (B
come bold) alcune parole.
Nel XHTML questo tag è stato sostituito con strong, il cui significato è “parte di testo con una
forza maggiore rispetto al resto”.
Graficamente anche strong viene reso con il grassetto, ma concettualmente c'è una bella
differenza: un lettore di schermo può leggere le parti di testo marcate come strong usando una
voce più marcata e dando così una vera idea del concetto che chi può vedere associa inconsciamente
al grassetto.
Allo stesso modo il vecchio tag I per il corsivo è stato sostituito con em che significa enfasi.
Utilizzando i fogli di stile possiamo non solo specificare la resa grafica di tag come strong ed em,
ma anche la resa vocale (coi fogli di stile speciali per i lettori di schermo) o per la stampa, le
proiezioni ed altro.
Possiamo addirittura avere più stili per una stessa pagina e permettere all'utente di navigare nel
nostro sito con i colori e l'impaginazione che preferisce.
3.1
Sintassi fondamentale
Vediamo ora la sintassi fondamentale dell'XHTML.
L'XHTML usa i tag come il vecchio HTML, ma scritti esclusivamente minuscoli. Via via che
proseguiremo con gli esempi vedremo alcuni esempi di tag.
La struttura di una pagina XHTML è simile a questa:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html>
<head>
</head>
<body>
</body>
</html>
Possiamo identificare tre sezioni fondamentali:
la DOCTYPE, cioè la dichiarazione di che linguaggio abbiamo usato per scrivere la pagina
web. Nei nostri esempi utilizzeremo la DOCTYPE “XHTML versione 1.0 strict”, dove strict
sta a significare “completa aderenza allo standard w3c”. La DOCTYPE è l'unica parte di una
pagina XHTML che non è compresa nel tag HTML.
la sezione head che contiene informazioni di supporto alla pagina. Qui inseriremo l'autore
della pagina, il titolo da mostrare nella barra del titolo del browser, le parole chiave,
eccetera. Qui è dove specificheremo anche il foglio di stile da utilizzare.
La sezione body che contiene il testo vero e proprio della pagina
La DOCTYPE è molto complicata, ma per fortuna è sempre uguale ed è sufficiente fare copia e
incolla da una pagina già scritta senza porsi tante domande.
3.2
La nostra prima pagina XHTML
Iniziamo ora con un semplice esercizio: creeremo la nostra prima pagina XHTML specificando un
testo come titolo del documento.
Apriamo quindi un editor di testo ed inseriamo la struttura base della pagina mostrata nel paragrafo
precedente, poi, nella sezione head, inseriamo un tag title contenente il testo “La mia prima
pagina web”.
Il codice finale dovrebbe apparire come questa:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html>
<head>
<title>La mia prima pagina web</title>
</head>
<body>
</body>
</html>
Aprendo questa pagina in un browser possiamo notare che in alto, nella barra del titolo della
finestra, è comparso il testo che abbiamo specificato, mentre la pagina vera e propria è
completamente vuota.
Questo accade perché , come già detto, la sezione head contiene solo informazioni di supporto alla
pagina.
3.3
La sezione BODY
Ora spostiamoci nella sezione body ed inseriamo un tag h1 contenente il testo “Ciao mondo!”.
Il nostro codice dovrebbe apparire così:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html>
<head>
<title>La mia prima pagina web</title>
</head>
<body>
<h1>Ciao mondo!</h1>
</body>
</html>
h1 significa “intestazione di primo livello” ed è il tag utilizzato per i titoli principali delle pagina
web. Se carichiamo il file appena creato nel nostro browser noteremo che finalmente è comparso
qualcosa nella finestra: il testo che abbiamo inserito è stato formattato come un titolo.
Anche se non stiamo ancora specificando uno stile con il CSS (che impareremo dopo) il nostro
browser cerca lo stesso di dare una resa grafica differente ai vari elementi della pagina. Questo
accade perché tutti i browser utilizzano, in caso non ne trovino uno, un loro foglio di stile interno.
3.4
I paragrafi
Inseriamo ora un tag p con alcune linee di testo al suo interno. Proviamo anche ad andare a capo
all'interno di questo tag, come mostrato di seguito:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html>
<head>
<title>La mia prima pagina web</title>
</head>
<body>
<h1>Ciao mondo!</h1>
<p>
Ciao mondo, questa è la mia prima pagina web.
Accipicchia... sono emozionato!
</p>
</body>
</html>
Salviamo e ricarichiamo la pagina nel browser: il testo è comparso ed è stato formattato come un
paragrafo ma... è scritto tutto di seguito e non va a capo.
Ogni browser, infatti, ignora i ritorni a capo e gli spazi (escluso il primo) in modo da permetterci di
formattare il codice in maniera facilmente leggibile senza che questo si ripercuota sulla
presentazione finale della pagina.
Se volessimo dire al browser di andare a capo dopo il punto dovremmo utilizzare un nuovo tag che
significa appunto “ritorno a capo”.
Il codice diventerà:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html>
<head>
<title>La mia prima pagina web</title>
</head>
<body>
<h1>Ciao mondo!</h1>
<p>
Ciao mondo, questa è la mia prima pagina web.<br />
Accipicchia... sono emozionato!
</p>
</body>
</html>
notate la strana sintassi del tag br: non viene aperto e poi chiuso ma viene scritto tutto compreso tra
i segni minore e maggiore e addirittura con uno spazio prima del carattere slash.
In effetti non avrebbe molto senso aprire e chiudere un tag come br, visto che non deve circondare
alcun testo ma semplicemente sostituire un carattere singolo, il carattere, appunto, di ritorno a capo.
Alcuni tag, quindi, non si aprono e chiudono normalmente ma vengono scritti con questa sintassi
speciale. Lo spazio prima dello slash è fortemente consigliato anche se alcuni browser moderni
sono in grado di interpretare correttamente il tag anche senza di esso. Programmi più datati, infatti,
hanno difficoltà ad adattarsi a questa nuova sintassi (tipica del XHTML e che in HTML normale
non esisteva) e lo spazio permette loro di comprendere il tag.
Ecco alcuni esempi di tag che non si aprono e chiudono:
TAG
Significato
<br />
vai a capo
<hr />
linea orizzontale
<img />
immagine
3.5
Grassetti e corsivi
Abbiamo etto che l'XHTML non ha i tag per grassetto e corsivo, ma dispone dei tag corrispondenti
per i concetti di forza e di enfasi.
Proviamo quindi ora ad inserire un tag strong su una parola all'interno del nostro paragrafo:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html>
<head>
<title>La mia prima pagina web</title>
</head>
<body>
<h1>Ciao mondo!</h1>
<p>
Ciao mondo, questa è la mia <strong>prima</strong>
pagina web.<br />
Accipicchia... sono emozionato!
</p>
</body>
</html>
come possiamo notare nel browser la parola “prima” viene resa con il grassetto.
Se volessimo renderla in corsivo useremmo il tag em e se volessimo entrambe le cose potremmo
scrivere:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html>
<head>
<title>La mia prima pagina web</title>
</head>
<body>
<h1>Ciao mondo!</h1>
<p>
Ciao mondo, questa è la mia
<em><strong>prima</strong></em>
pagina web.<br />
Accipicchia... sono emozionato!
</p>
</body>
</html>
Notate l'ordine in cui abbiamo aperto e chiuso i tag: potevamo specificare anche prima strong e
poi em, ma dobbiamo sempre tenere a mente che i tag vanno chiusi in ordine inverso rispetto a
come li abbiamo aperti, quindi:
<em><strong>prima</strong></em>
è corretto
<strong><em>prima</em></strong>
anche
<em><strong>prima</em></strong>
è sbagliato e potrebbe portare ad effetti imprevedibili.
Per semplificare potremmo dire che i tag si aprono e si chiudono come le parentesi in matematica.
3.6
Tag di blocco e tag in linea
Proviamo ad inserire del testo subito dopo la chiusura del tag h1:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html>
<head>
<title>La mia prima pagina web</title>
</head>
<body>
<h1>Ciao mondo!</h1>Ciao ciao ciao
<p>
Ciao mondo, questa è la mia <strong>prima</strong>
pagina web.<br />
Accipicchia... sono emozionato!
</p>
</body>
</html>
nel browser il testo appena aggiunto viene visualizzato sotto al titolo, non di seguito, anche se non
abbiamo specificato alcun ritorno a capo.
Questo accade perché il tag h1 appartiene ai tag di blocco (“block level” in inglese).
Scrivendo invece qualcosa subito sopo la chiusura di strong il testo verrà messo sulla stessa riga,
perché strong è un tag in linea (“inline” in inglese).
Esistono quindi due tipi di tag: quelli che definiscono un blocco di testo (un paragrafo, un titolo,
una tabella, un elenco, ecc) e che sono sempre seguiti dall'a-capo e quelli che invece definiscono
concetti che possono essere applicati persino a singoli caratteri all'interno di una parola e sono detti
tag in linea.
Ad esempio:
un paragrafo è un TAG a blocco
un titolo è un TAG a blocco
un grassetto o un corsivo sono TAG in linea
un'immagine è un TAG in linea
Questo comportamento può comunque essere cambiato utilizzando i fogli di stile.
3.7
Le immagini
Il web non sarebbe certo così interessante se non potessimo utilizzare le immagini, proviamo quindi
ad inserire una immagine nella nostra pagina di esempio.
Per inserire una immagine dobbiamo conoscerne il nome (completo di estensione) ed il percorso.
Nell'esempio qui sotto abbiamo utilizzato il logo di alid, il cui file si chiama “logo.png” e risiede
nella stessa cartella della nostra pagina di esempio.
Tutto quello che dovremo scrivere sarà qualcosa come:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html>
<head>
<title>La mia prima pagina web</title>
</head>
<body>
<h1>Ciao mondo!</h1>
<p>
Ciao mondo, questa è la mia <strong>prima</strong>
pagina web.<br />
Accipicchia... sono emozionato!
</p>
<p>
Sono contento di imparare l'XHTML
grazie ad <img src="alid.png" alt="alid" />
</p>
</body>
</html>
Se l'immagine non viene visualizzata nel browser abbiamo sbagliato qualcosa.
Ad esempio potremmo avere sbagliato il nome, oppure l'immagine potrebbe non essere nella stessa
cartella del nostro file XHTML ma in una sotto cartella chiamata magari “immagini”, in questo caso
potremmo scrivere:
<img src="immagini/alid.png" alt="alid" />
Notate la strana sintassi del tag img.
È un tag che si chiude nello stesso momento i cui si apre, come il tag br, ma contiene al suo interno
alcuni parametri aggiuntivi chiamati “attributi”.
L' attributo src stabilisce il percorso in cui andare a prendere l'immagine, mentre l'attributo alt
(obbligatorio in XHTML) stabilisce un testo alternativo da mostrare nel caso in cui l'immagine non
sia disponibile o non sia possibile visualizzarla (ad esempio perché stiamo usando un lettore di
schermo oppure stiamo navigando con un cellulare)
Se sbagliamo volutamente il nome dell'immagine, infatti, noteremo che essa viene rimpiazzata dal
testo “alid”, permettendo così anche a chi non può vedere di capire il significato della nostra frase.
3.8
I link
L'idea di ipertesto si basa sulla possibilità di collegare più pagine attraverso lo strumento del link.
Per provare ad inserire un link abbiamo bisogno di creare una nuova pagina web che collegheremo
alla prima.
Creiamo quindi la seconda pagina web e scriviamo qualcosa come:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html>
<head>
<title>La mia seconda pagina web</title>
</head>
<body>
<h1>Benvenuti nella seconda pagina</h1>
<p>
Se siete arrivati qui significa che ho imparato a
fare i link!
</p>
</body>
</html>
salviamola con il nome di pagina2.html e scriviamo nella prima pagina:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html>
<head>
<title>La mia prima pagina web</title>
</head>
<body>
<h1>Ciao mondo!</h1>
<p>
Ciao mondo, questa è la mia <strong>prima</strong>
pagina web.<br />
Accipicchia... sono emozionato!
</p>
<p>
Sono contento di imparare l'XHTML
grazie ad <img src="alid.png" alt="alid" />
</p>
<p>
<a href="pagina2.html" title="link a pagina 2">pagina 2</a>
</p>
</body>
</html>
notate anche qui la stessa sintassi del tag img, almeno per quanto riguarda l'uso geli attributi, il tag
a (a sta per “àncora”), però, si apre e si chiude e racchiude al suo interno il testo “pagina 2” che
diventerà il testo cliccabile del nostro link.
L'attributo href indica quale documento stiamo collegando, mentre title ci permette di inserire
una descrizione avanzata che comparirà da sola se lasceremo il mouse sul link per alcuni secondi.
L'attributo title è sempre obbligatorio in XHTML per motivi di accessibilità, però a volte è
inutile specificare ulteriormente del testo quando il link di per sé ha già significato. In questi casi
possiamo lasciare title vuoto, scrivendo:
<a href="pagina2.html" title="">pagina 2</a>
In XHTML vige la regola che tutti gli attributi vadano sempre scritti con il valore tra virgolette,
anche se sono vuoti. Possiamo usare sia le virgolette doppie che quelle singole (gli apici).
Se tutto va bene dovremmo essere in grado di saltare dalla nostra prima pagina alla seconda.
3.9
Qualcosa di più complicato
Provate a creare tre pagine web collegate tra loro seguendo questo schema:
Pagina 1: una pagina di benvenuto
Pagina 2: una breve descrizione del sito
Pagina 3: una galleria di immagini (almeno 3)
Assicuratevi di inserire i link in tutte le pagine, in modo che ci si possa spostare agevolmente da una
all'altra.
4 CSS: i fogli di stile
4.0
Sintassi fondamentale
Passiamo ora al linguaggio dei fogli di stile, il CSS (sigla che significa “Cascading Style Sheets”
cioè Fogli di stile a cascata)
La comodità dei fogli di stile è che possiamo specificare lo stile di ogni tag i un unico file separato e
poi inserire un link speciale in tute le pagine a cui vogliamo applicare quello stile.
Pensate di dover gestire un sito con 100, 1000 o anche 10.000 pagine (e non è difficile trovarne in
giro per la rete) e di aver avuto l'incarico di cambiare tutti i titoli in modo che siano scritti in rosso,
centrati nella pagina e magari con un carattere diverso da quello che usate adesso.
Cambiare ogni pagina una per una (come si doveva fare quando veniva usato il tag proprietario
FONT) è praticamente impensabile. Con i fogli di stile dovrete solo modificare una riga i un unico
file e automaticamente tutte le pagine collegate a quello stile si adatteranno immediatamente.
4.1
Legare il CSS al XHTML
Per legare un pagina XHTML ad un foglio di stile è sufficiente aggiunger un tag speciale all'interno
della sezione head.
Ad esempio se il nostro foglio di stile si chiama “stile.css” scriveremo:
<link rel="stylesheet" href="stile.css" type="text/CSS" />
4.2
Il primo stile
Iniziamo ora a definire uno stile per il nostro sito.
Riprendiamo la nostra prima pagina di esempio ed assicuriamoci che sia collegata al file “stile.css”
che stiamo per creare:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html>
<head>
<title>La mia prima pagina web</title>
<link rel="stylesheet" href="stile.css" type="text/CSS" />
</head>
<body>
<h1>Ciao mondo!</h1>
<p>
Ciao mondo, questa è la mia <strong>prima</strong>
pagina web.<br />
Accipicchia... sono emozionato!
</p>
<p>
Sono contento di imparare l'XHTML
grazie ad <img src="alid.png" alt="alid" />
</p>
<p>
<a href="pagina2.html" title="link a pagina 2">pagina 2</a>
</p>
</body>
</html>
Apriamo ora un nuovo documento e scriviamo:
body
h1
{ background-color: blue; color: white; }
{ text-align: center; font-size: 30pt; }
salviamolo come “stile.css” e ricarichiamo la pagina nel browser... abbiamo appena inventato i
colori!
Come potete leggere dal foglio di stile abbiamo specificato uno stile per il tag body (cioè per tutta
la pagina web) e per il tag h1 (il titolo)
Per body abbiamo inserito le proprietà background-color che definisce il colore di sfondo e color
che definisce il colore del testo.
Per h1 abbiamo specificato un allineamento al centro della pagina e una dimensione della scritta
pari a 30 punti (fate attenzione a non mettere lo spazio tra il valore e l'unita di misura “pt”).
Noterete che il CSS è un linguaggio molto semplice: basta ricordarsi di chiudere le parentesi graffe
e di mettere sempre il punto e virgola dopo ogni proprietà.
Possiamo specificare qualunque colore, non solo quelli che hanno un nome inglese (come white,
black o yellow) ma in questo caso dovremmo utilizzare una notazione speciale indicando i valori di
rosso, verde e blu del colore specificato.
Per scrivere un titolo in rosso, ad esempio, potremo scrivere sia:
h1
{ color: red; }
h1
{ color: #ff0000; }
che:
oppure ancora:
h1
{ color: rgb(255,0,0); }
i valori di rosso verde e blu variano da 0 (niente) a 255 (il massimo) e posso essere scritti sia in
numeri arabi che in notazione esadecimale (dove ff è 255)
Per fortuna non serve essere dei geni o sapere fare calcoli esadecimali a mente per capire come
specificare un colore: la maggior parte dei programmi di grafica offre la possibilità di visualizzare
questo codice per il colore che abbiamo scelto.
Per Firefox, inoltre, è disponibile l'estensione Colorzilla che oltre a fornire la scelta dei colori da
una tavolozza permette anche di campionare un colore direttamente da una pagina web.
4.3
Qualcosa di più complicato
Provate ora a cambiare il vostro foglio di stile in modo da:
avere una pagina sfondo bianco e testo nero
avere i titoli centrati e color blu
avere i link gialli e in grassetto
avere i tag strong in grassetto rosso
La proprietà per definire un grassetto è:
font-weight: bold;
5 ID e classi: il CSS alla massima potenza
Fino ad ora abbiamo visto come definire uno stile per un tag XHTML, ma nella vita reale, con siti
da 100 o 1000 pagine, poter definire solamente uno stile per tag sarebbe davvero troppo riduttivo.
Pensate ad esempio ad un sito che avesse la necessità di differenziare graficamente le varie aree in
cui è diviso, magari cambiando il colore del titolo.
Una prima possibilità sarebbe quella di definire un foglio di stile personalizzato per ciascuna area,
cosa che in questo caso funzionerebbe senza problemi.
Se però dovessimo differenziare all'interno di una stessa pagina un titolo da un altro (magari
entrambi h2) allora il problema si ripresenterebbe.
La soluzione definitiva è quella di utilizzare alcuni meccanismi speciali dei CSS che ci permettono
di identificare chiaramente un tag o un insieme di tag e di definire uno stile specifico che
sovrascriva quello generico.
5.0
Gli ID
Il primo meccanismo che vediamo è quello degli ID.
Un ID è come un nome proprio: non si può assegnare lo stesso ID a più di un elemento all'interno di
una stessa pagina web.
L'ID ci permette di definire un nome a nostro piacimento per uno specifico tag nel XHTML e di
andare poi ad agganciarlo col CSS per specificare uno stile personalizzato.
Vediamo come fare.
Prendiamo questa pagina XHTML:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html>
<head>
<title>Esempio di CSS avanzato</title>
<link rel="stylesheet" href="stile.css" type="text/CSS" />
</head>
<body>
<h1>Esempio di CSS avanzato</h1>
<h2 id="primo">Introduzione</h2>
<p>
In questa pagina vedremo come utilizzare i meccanismi
avanzati dei CSS per il controllo dello stile.
</p>
<h2 id="secondo">Gli ID</h2>
<p>
Grazie agli ID posso specificare un nome per un tag XHTML
e usare il CSS per dargli uno stile personalizzato.
</p>
</body>
</html>
Come vedete abbiamo specificato due titoli di secondo livello (h2) ma non ci siamo limitati al
semplice tag XHTML, abbiamo invece aggiunto un attributo id e abbiamo dato un nome di
fantasia (ma unico all'interno della pagina) ai due titoli.
Ora nel CSS potremmo scrivere:
h2
h2#secondo
{ color: red; }
{ color: blue; }
che significa più o meno “tutti gli h2 devono avere colore di primo piano rosso, ma l'h2 che ha id
secondo avrà colore di primo piano blu”.
L'id in CSS si indica con il simbolo # e può essere scritto sia:
h2#secondo
{ color: blue; }
cioè “il tag h2 con id secondo”, sia:
#secondo
{ color: blue; }
cioè “il tag con id secondo, non importa se h2 o altro”
Attenzione: potete scegliere qualunque nome per un id, a patto che:
non sia un nome riservato (evitate di usare i nomi dei tag ad esempio)
non inizi con un numero (l'id “titolo1” va bene, l'id “1titolo” no)
non contenga spazi
5.1
Le classi
Poter agganciare un elemento specificando un nome univoco è la soluzione definitiva per dare stili
personalizzati ai nostri tag, ma a volte può rivelarsi un po' macchinoso.
Pensate ad una pagina con due tipi diversi di grassetto: uno rosso ed uno giallo. Per scegliere in che
colore scrivere ogni parola dovreste specificare per ogni tag strong un id differente e scrivere
decine e decine di righe nel CSS
Per fortuna esiste un sistema per identificare un più di un tag alla volta: le classi.
Prendiamo la nostra pagina di esempio e modifichiamola in questo modo:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html>
<head>
<title>Esempio di CSS avanzato</title>
<link rel="stylesheet" href="stile.css" type="text/CSS" />
</head>
<body>
<h1>Esempio di CSS avanzato</h1>
<h2 id="primo">Introduzione</h2>
<p>
In questa pagina vedremo come utilizzare i meccanismi
avanzati dei CSS per il controllo dello stile.
</p>
<h2 class="titoloblu">Gli ID</h2>
<p>
Grazie agli ID posso specificare un nome per un tag XHTML
e usare il CSS per dargli uno stile personalizzato.
</p>
<h2 class="titoloblu">Le classi</h2>
<p>
Grazie alle classi posso specificare una nome per
un gruppo di tag XHTML e usare il CSS per dar loro
uno stile comune.
</p>
</body>
</html>
Notate il secondo ed il terzo tag h2: abbiamo usato l'attributo class con il valore “titoloblu”.
Ora nel CSS scriviamo:
h2
{ color: red; }
h2.titoloblu { color: blue; }
Come potete vedere nel browser il colore blu è stato assegnato ad ogni elemento della classe
“titoloblu”.
Le classi si identificano nel CSS con un punto e, esattamente come gli id, possono essere definite
sia per un tag specifico:
h2.titoloblu { color: blue; }
cioè “la classe titoloblu quando è applicata al tag h2”, sia:
.titoloblu
{ color: blue; }
cioè “la classe titoloblu applicata a qualunque tag”
Essendo le classi applicabili a più elementi all'interno di una stessa pagina, la seconda notazione
(più generica) è molto comoda, ad esempio scrivendo:
.centrato
{ text-align: center; }
potremo creare una classe generica da usare ogni volta che vorremo un elemento allineato al centro.
Per le classi valgono le stesse regole degli ID:
non deve essere un nome riservato
non deve iniziare con un numero
non deve contenere spazi
5.2
Padri e figli
Esiste un terzo metodo per specificare uno stile personalizzato per una parte di una pagina web.
Immaginate di dover applicare a tutti gli em all'interno di un lunghissimo paragrafo un colore
particolare.
Potreste cercarli uno ad uno e specificare una classe, ma se gli em sono, diciamo, un migliaio questa
operazione potrebbe portarvi alla follia.
Invece di perdere la ragione dietro ad un codice XHTML perché non usare la potenza dei CSS?
Prendiamo una pagina XHTML di esempio:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html>
<head>
<title>Esempio di CSS avanzato</title>
<link rel="stylesheet" href="stile.css" type="text/CSS" />
</head>
<body>
<h1>Esempio di CSS avanzato</h1>
<p>
In questo esempio proveremo ad applicare uno stile
a tutti gli <em>em</em> all'interno di un paragrafo...
e senza usare le classi!
</p>
<p>
Nel CSS esistono quattro modi per specificare uno stile:
</p>
<ul>
<li>
<em>il classico</em>
in cui si specifica lo stile di un tag
</li>
<li>
<em>gli ID</em>
in cui ad un tag si assegna un nome univoco
</li>
<li>
<em>le classi</em>
in cui ad un gruppo di tag si assegna un nome
</li>
<li>
<em>padri e figli</em>
che stiamo usando ora...
</li>
</ul>
</body>
</html>
Per rendere le cose un po' più complicate abbiamo usato un tag XHTML nuovo, anzi due: ul e li:
ul definisce un elenco puntato e li definisce ogni singolo elemento di un elenco.
Ora che conoscete come fare gli elenchi puntati rileggete il codice: noterete che abbiamo usato un
em nel primo paragrafo e più di uno nell'elenco puntato.
Vogliamo colorare di verde solo gli em all'interno dell'elenco puntato e siccome ci sentiamo
temerari lo vogliamo fare senza le classi o gli id.
Nel CSS scriviamo:
li em { color: green; }
e vediamo che succede nel browser.
Il colore è stato applicato correttamente agli em che si trovavano all'interno dei tag li (a tutti gli em
figli di li) ma non a quello che stava fuori.
Nel CSS è possibile specificare catene di padri e figli usando lo spazio. Avremmo anche potuto
scrivere:
ul li em
{ color: green; }
cioè “tutti gli em figli di un li che sia a sua volta figlio di un ul”.
5.3
Mischiare le cose
Id, classi e legami padre-figlio possono essere mischiati per creare stili molto precisi.
Uno stesso tag XHTML, inoltre, può avere sia un id che una classe.
5.4
La cascata
La C nei fogli di stile sta per Cascading, cioè a cascata... ma cosa significa?
Proviamo a copiarlo con un esempio.
Cosa succederebbe se scrivessimo qualcosa come:
.prova
.prova
{ color: green; }
{ color: purple; }
Il paragrafo a cui abbiamo dato classe “prova” di che colore sarebbe?
La risposta è: viola, perché nei CSS ciò che viene dopo sovrascrive ciò che viene prima: la cascata
appunto.
Se invece avessimo scritto:
p.prova
.prova
{ color: green; }
{ color: purple; }
il nostro paragrafo sarebbe stato comunque verde, perché la prima definizione è più specifica della
seconda e quindi ha priorità maggiore.
6 Progettare un layout
Prima di concludere questa breve introduzione all XHTML e al CSS vediamo come progettare un
layout (cioè una impaginazione) usando il CSS
Nel HTML vecchio tipo molte persone progettavano layout usando le tabelle per dividere in
riquadri lo schermo, ma questo causava enormi problemi di accessibilità.
Le tabelle, infatti, sono state pensate per... mettere i dati in tabella e non per suddividere lo schermo.
Un lettore di schermo che cercasse di leggere un sito con un layout tabellare si comporterebbe come
davanti ad un a qualunque tabella, leggendo quindi la prima cella, poi la seconda, la terza, e via
dicendo fino alla fine della riga, per poi passare alla riga sotto.
Immaginate cosa capirebbe un utente di un sito in cui la prima voce del menù viene seguita da una
parte del testo, poi dalla seconda voce di menù e dalla seconda parte del testo, ecc...
Il tag corretto per creare delle divisioni all'interno della pagina è div, che opportunamente
formattato con il CSS permette di creare layout anche molto complessi o azzardati.
6.0
I div
Creiamo ora una serie di divisioni con il tag div all'interno dell'XHTML e proviamo ad assegnare
ad essi uno stile di base per riconoscerli.
Nell'XHTML scriviamo:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html>
<head>
<title>Esempio di layout</title>
<link rel="stylesheet" href="stile.css" type="text/CSS" />
</head>
<body>
<div id="uno">Intestazione del sito</div>
<div id="due">
<h2>Menù</h2>
<ul>
<li>voce uno</li>
<li>voce due</li>
<li>voce tre</li>
</ul>
</div>
<div id="tre">
<h1>Ciao mondo!</h1>
<p>
Questo è il mio primo sito con layout!
</p>
</div>
</body>
</html>
Come vedete abbiamo definito tre sezioni e abbiamo dato loro un id.
Nel CSS scriviamo:
div#uno
div#due
div#tre
{ border: 1px solid black;
{ border: 1px solid black;
{ border: 1px solid black;
}
}
}
abbiamo assegnato ai tre div un bordo largo 1 pixel, solido (cioè non tratteggiato o con effetti
strani) e di colore nero.
Le nostre sezioni iniziano a prendere forma.
6.1
Unità di misura
Prima di affrontare la progettazione di un layout occorre capire una cosa fondamentale: le unità di
misura utilizzabili nei CSS.
Nel CSS è possibile specificare le dimensioni nelle seguenti unità:
in pixel (px)
in punti (pt) di solito usato solo per la stampa
in percentuale (%) rispetto alla larghezza del tag padre (o dello schermo per il tag body)
in em, cioè la larghezza di un carattere del testo
in ex, cioè la metà di un em
esistono anche centimetri e millimetri ma vengono usati solo nella stampa.
Non bisogna mai mettere lo spazio tra il valore e l'unità di misura che decidiamo di utilizzare.
Progettare un sito usando le percentuali è un buon metodo per creare un layout in grado di
restringersi su schermi molto piccoli ed allargarsi su schermi spaziosi (detto layout liquido) ma non
è mai possibile essere sicuri della lunghezza di una pagina perché le pagine web si allungano a
seconda del contenuto.
Per questo motivo le percentuali possono essere usate con tranquillità quando occorre riferirsi alle
dimensioni dell'elemento padre, ma al momento di progettare la suddivisione dello schermo si
rivelano utili solo in larghezza.
Inoltre se l'utente aumenta la dimensione del testo è possibile che il nostro layout impazzisca e che
il testo venga tagliato perché non è possibile farlo stare tutto nel riquadro che abbiamo definito.
Usare gli em (l'unità di misura, non il tag!) risolve questo secondo problema perché le dimensioni
sono definite in base alla dimensione del testo, ma, ovviamente, non sappiamo quanti em sia largo
lo schermo del nostro utente per cui se volessimo creare una intestazione larga quanto lo schermo
avremmo dei problemi.
La soluzione è mischiare le cose, utilizzando em e percentuali secondo le esigenze e l'esperienza.
Proviamo a aggiornare il nostro CSS in questo modo:
div#uno { border: 1px solid black; width: 100%; }
div#due { border: 1px solid black; width: 20em; }
div#tre { border: 1px solid black; width: 20%; }
Abbiamo specificato una larghezza per le nostre sezioni e ridimensionando la finestra possiamo
notare che le sezioni uno e tre si ridimensionano, mentre la sezione due rimane invariata fino a
che non cambiamo la dimensione del carattere.
6.2
Posizionamento
Un discorso simile a quello fatto per le dimensioni va fatto per il posizionamento.
Immaginiamo di voler posizionarne le nostre tre sezioni in
modo che la sezione uno sia in alto e le altre due sotto di essa,
una a fianco all'altra.
Per farlo esistono diversi metodi ma non tutti sono ottimali.
Un metodo molto usato è la proprietà CSS float, ma spesso
causa molti più problemi di quanti non ne risolva, per cui
eviteremo di parlarne.
Il metodo più semplice è posizionare gli elementi in maniera
assoluta, ad esempio “a 5 pixel dall'alto” oppure “a 3 em da
destra” rispetto alla pagina.
Proviamo a posizionare un elemento in maniera assoluta:
div#uno
div#due
div#tre
{ border: 1px solid black; width: 100%; }
{
position: absolute; top: 0px; left: 15px;
border: 1px solid black; width: 20em;
background-color: red;
}
{ border: 1px solid black; width: 20%; }
Abbiamo dato un colore di sfondo alla sezione due in modo da distinguerla dalle altre e l'abbiamo
posizionata in maniera assoluta a 0 pixel dall'alto e a 15 pixel da sinistra.
Come potete vedere nel vostro browser il div si è spostato esattamente dove volevamo, coprendo
gli altri.
Ora non ci resta che studiare attentamente le dimensioni e il posizionamento delle tre sezioni.
6.3
Il layout a due colonne ed intestazione.
Facciamo due calcoli: lo schermo è largo sempre 100% quindi per la larghezza potremmo usare le
percentuali.
Potremmo anche lasciare un minimo di margine (diciamo 1%) invece che attaccare le tre sezioni al
bordo della finestra, un margine che potremmo ripetere anche tra un div e l'altro.
L'intestazione quindi dovrebbe essere larga quanto lo schermo (100%) esclusi ovviamente i margini
(1% a destra ed uno a sinistra), quindi la larghezza effettiva della sezione uno sarà 98% e la
posizioneremo ad 1% da sinistra.
L'altezza la definiremo in pixel perché di solito le intestazioni contengono una immagine di cui
conosceremo l'altezza. La nostra immagine sarà alta 72 pixel, l'altezza di un banner per il web
leggermente più grande del normale.
Il margine dall'alto non possiamo specificarlo in pixel perché, come abbiamo detto, sulle altezze le
percentuali danno problemi. Per semplificare stabiliremo un margine di, diciamo, 10 pixel.
Allo stesso modo potremo calcolare le dimensioni ed il posizionamento degli altri due div... anzi:
provateci da soli!
Quando non ne potrete più di calcoli osservate lo schema seguente per vedere come abbiamo deciso
di procedere.
Il CSS finale corrispondente a questo schema dovrebbe essere:
body
{ background-color: white; color: black; }
h1
{ text-align: center; font-size: 30pt; }
div#uno
{
position: absolute; top: 10px; left: 1%;
width: 98%; height: 72px; background: Lavender;
}
div#due
{
position: absolute; top: 90px; left: 1%;
width: 20%; background: Moccasin;
}
div#tre
{
position: absolute; top: 90px; left: 22%;
width: 77%; background: MistyRose;
}
ed il risultato.... beh lo potete vedere voi stessi nel vostro browser!
7 Conclusioni
XHTML è un linguaggio estremamente pulito e preciso, che permette di assegnare dei concetti ai
vari elementi della pagina.
CSS è un linguaggio molto semplice in grado di trasformare graficamente i concetti espressi
dall'XHTML.
I tag dell'XHTML e le proprietà del CSS non vanno imparati a memoria: esistono molti siti in grado
di aiutare un webdesigner durante il suo lavoro quotidiano.
Un ottimo sito di riferimento è http://www.w3schools.com che fornisce una rapida guida di
riferimento sia per il CSS (http://www.w3schools.com/CSS/CSS_reference.asp) che per l'XHTML
(http://www.w3schools.com/tags/default.asp)
Le applicazioni dell'XHTML sono moltissime e vanno dal semplice sito web alla presentazione
interattiva (con l'uso di javascript) utilizzabile direttamente via rete4.
Le diapositive utilizzate nel corso della serata a tema “Creare un sito con XHTML e CSS” erano
infatti realizzate interamente in XHTML.
Il nostro breve viaggio nel mondo dei linguaggi del web finisce qui.
Se siete interessati ad approfondire ulteriormente queste tematiche scrivete a [email protected]:
l'Associazione per le Libertà Informatiche e Digitali organizza spesso corsi gratuiti di informatica
e... chissà, forse mentre state leggendo queste righe c'è un corso di XHTML e CSS che aspetta solo
voi...
4 http://www.w3.org/Talks/Tools/Slidy/
8 Licenza per Documentazione Libera GNU
Version 1.2, November 2002
Copyright (c) 2000,2001,2002 Free Software Foundation, Inc.
59 Temple Place, Suite 330, Boston, MA 02111-1307, USA
Everyone is permitted to copy and distribute verbatim copies of this license document, but changing it is not allowed.
8.0
PREAMBLE
The purpose of this License is to make a manual, textbook, or other functional and useful document free in the sense of
freedom: to assure everyone the effective freedom to copy and redistribute it, with or without modifying it, either
commercially or noncommercially. Secondarily, this License preserves for the author and publisher a way to get credit
for their work, while not being considered responsible for modifications made by others.
This License is a kind of "copyleft", which means that derivative works of the document must themselves be free in the
same sense.
It complements the GNU General Public License, which is a copyleft license designed for free software.
We have designed this License in order to use it for manuals for free software, because free software needs free
documentation: a free program should come with manuals providing the same freedoms that the software does. But this
License is not limited to software manuals; it can be used for any textual work, regardless of subject matter or whether
it is published as a printed book. We recommend this License principally for works whose purpose is instruction or
reference.
8.1
APPLICABILITY AND DEFINITIONS
This License applies to any manual or other work, in any medium, that contains a notice placed by the copyright holder
saying it can be distributed under the terms of this License. Such a notice grants a world-wide, royalty-free license,
unlimited in duration, to use that work under the conditions stated herein. The "Document", below, refers to any such
manual or work. Any member of the public is a licensee, and is addressed as "you". You accept the license if you
copy, modify or distribute the work in a way requiring permission under copyright law.
A "Modified Version" of the Document means any work containing the Document or a portion of it, either copied
verbatim, or with modifications and/or translated into another language.
A "Secondary Section" is a named appendix or a front-matter section of the Document that deals exclusively with the
relationship of the publishers or authors of the Document to the Document's overall subject (or to related matters) and
contains nothing that could fall directly within that overall subject. (Thus, if the Document is in part a textbook of
mathematics, a Secondary Section may not explain any mathematics.) The relationship could be a matter of historical
connection with the subject or with related matters, or of legal, commercial, philosophical, ethical or political position
regarding them.
The "Invariant Sections" are certain Secondary Sections whose titles are designated, as being those of Invariant
Sections, in the notice that says that the Document is released under this License.
If a section does not fit the above definition of Secondary then it is not allowed to be designated as Invariant. The
Document may contain zero Invariant Sections. If the Document does not identify any Invariant Sections then there are
none.
The "Cover Texts" are certain short passages of text that are listed, as Front-Cover Texts or Back-Cover Texts, in the
notice that says that the Document is released under this License. A Front-Cover Text may be at most 5 words, and a
Back-Cover Text may be at most 25 words.
A "Transparent" copy of the Document means a machine-readable copy, represented in a format whose specification is
available to the general public, that is suitable for revising the document straightforwardly with generic text editors or
(for images composed of pixels) generic paint programs or (for drawings) some widely available drawing editor, and
that is suitable for input to text formatters or for automatic translation to a variety of formats suitable for input to text
formatters. A copy made in an otherwise Transparent file format whose markup, or absence of markup, has been
arranged to thwart or discourage subsequent modification by readers is not Transparent. An image format is not
Transparent if used for any substantial amount of text. A copy that is not "Transparent" is called "Opaque".
Examples of suitable formats for Transparent copies include plain ASCII without markup, Texinfo input format, LaTeX
input format, @acronym{SGML} or @acronym{XML} using a publicly available @acronym{DTD}, and standardconforming simple @acronym{HTML}, PostScript or @acronym{PDF} designed for human modification. Examples
of transparent image formats include @acronym{PNG}, @acronym{XCF} and @acronym{JPG}. Opaque formats
include proprietary formats that can be read and edited only by proprietary word processors, @acronym{SGML} or
@acronym{XML} for which the @acronym{DTD} and/or processing tools are not generally available, and the
machine-generated @acronym{HTML}, PostScript or @acronym{PDF} produced by some word processors for output
purposes only.
The "Title Page" means, for a printed book, the title page itself, plus such following pages as are needed to hold,
legibly, the material this License requires to appear in the title page.
For works in formats which do not have any title page as such, "Title Page" means the text near the most prominent
appearance of the work's title, preceding the beginning of the body of the text.
A section "Entitled XYZ" means a named subunit of the Document whose title either is precisely XYZ or contains XYZ
in parentheses following text that translates XYZ in another language. (Here XYZ stands for a specific section name
mentioned below, such as "Acknowledgements", "Dedications", "Endorsements", or "History".) To "Preserve the Title"
of such a section when you modify the Document means that it remains a section "Entitled XYZ" according to this
definition.
The Document may include Warranty Disclaimers next to the notice which states that this License applies to the
Document. These Warranty Disclaimers are considered to be included by reference in this License, but only as regards
disclaiming warranties: any other implication that these Warranty Disclaimers may have is void and has no effect on the
meaning of this License.
8.2
VERBATIM COPYING
You may copy and distribute the Document in any medium, either commercially or noncommercially, provided that this
License, the copyright notices, and the license notice saying this License applies to the Document are reproduced in all
copies, and that you add no other conditions whatsoever to those of this License. You may not use technical measures
to obstruct or control the reading or further copying of the copies you make or distribute. However, you may accept
compensation in exchange for copies. If you distribute a large enough number of copies you must also follow the
conditions in section 3.
You may also lend copies, under the same conditions stated above, and you may publicly display copies.
8.3
COPYING IN QUANTITY
If you publish printed copies (or copies in media that commonly have printed covers) of the Document, numbering
more than 100, and the Document's license notice requires Cover Texts, you must enclose the copies in covers that
carry, clearly and legibly, all these Cover Texts: Front-Cover Texts on the front cover, and BackCover Texts on the
back cover. Both covers must also clearly and legibly identify you as the publisher of these copies. The front cover
must present the full title with all words of the title equally prominent and visible. You may add other material on the
covers in addition. Copying with changes limited to the covers, as long as they preserve the title of the Document and
satisfy these conditions, can be treated as verbatim copying in other respects.
If the required texts for either cover are too voluminous to fit legibly, you should put the first ones listed (as many as fit
reasonably) on the actual cover, and continue the rest onto adjacent pages.
If you publish or distribute Opaque copies of the Document numbering more than 100, you must either include a
machine-readable Transparent copy along with each Opaque copy, or state in or with each Opaque copy a computernetwork location from which the general network-using public has access to download using public-standard network
protocols a complete Transparent copy of the Document, free of added material. If you use the latter option, you must
take reasonably prudent steps, when you begin distribution of Opaque copies in quantity, to ensure that this Transparent
copy will remain thus accessible at the stated location until at least one year after the last time you distribute an Opaque
copy (directly or through your agents or retailers) of that edition to the public.
It is requested, but not required, that you contact the authors of the Document well before redistributing any large
number of copies, to give them a chance to provide you with an updated version of the Document.
8.4
MODIFICATIONS
You may copy and distribute a Modified Version of the Document under the conditions of sections 2 and 3 above,
provided that you release the Modified Version under precisely this License, with the Modified Version filling the role
of the Document, thus licensing distribution and modification of the Modified Version to whoever possesses a copy of
it. In addition, you must do these things in the Modified Version:
A. Use in the Title Page (and on the covers, if any) a title distinct from that of the Document, and from those of
previous versions (which should, if there were any, be listed in the History section of the Document). You may use the
same title as a previous version if the original publisher of that version gives permission.
B. List on the Title Page, as authors, one or more persons or entities responsible for authorship of the modifications in
the Modified Version, together with at least five of the principal authors of the Document (all of its principal authors, if
it has fewer than five), unless they release you from this requirement.
C. State on the Title page the name of the publisher of the Modified Version, as the publisher.
D. Preserve all the copyright notices of the Document.
E. Add an appropriate copyright notice for your modifications adjacent to the other copyright notices.
F. Include, immediately after the copyright notices, a license notice giving the public permission to use the Modified
Version under the terms of this License, in the form shown in the Addendum below.
G. Preserve in that license notice the full lists of Invariant Sections and required Cover Texts given in the Document's
license notice.
H. Include an unaltered copy of this License.
I. Preserve the section Entitled "History", Preserve its Title, and add to it an item stating at least the title, year, new
authors, and publisher of the Modified Version as given on the Title Page. If there is no section Entitled "History" in
the Document, create one stating the title, year, authors, and publisher of the Document as given on its Title Page, then
add an item describing the Modified Version as stated in the previous sentence.
J. Preserve the network location, if any, given in the Document for public access to a Transparent copy of the
Document, and likewise the network locations given in the Document for previous versions it was based on. These may
be placed in the "History" section. You may omit a network location for a work that was published at least four years
before the Document itself, or if the original publisher of the version it refers to gives permission.
K. For any section Entitled "Acknowledgements" or "Dedications", Preserve the Title of the section, and preserve in
the section all the substance and tone of each of the contributor acknowledgements and/or dedications given therein.
L. Preserve all the Invariant Sections of the Document, unaltered in their text and in their titles. Section numbers or the
equivalent are not considered part of the section titles.
M. Delete any section Entitled "Endorsements". Such a section may not be included in the Modified Version.
N. Do not retitle any existing section to be Entitled "Endorsements" or to conflict in title with any Invariant Section.
O. Preserve any Warranty Disclaimers.
If the Modified Version includes new front-matter sections or appendices that qualify as Secondary Sections and
contain no material copied from the Document, you may at your option designate some or all of these sections as
invariant. To do this, add their titles to the list of Invariant Sections in the Modified Version's license notice. These
titles must be distinct from any other section titles.
You may add a section Entitled "Endorsements", provided it contains nothing but endorsements of your Modified
Version by various parties---for example, statements of peer review or that the text has been approved by an
organization as the authoritative definition of a standard.
You may add a passage of up to five words as a Front-Cover Text, and a passage of up to 25 words as a Back-Cover
Text, to the end of the list of Cover Texts in the Modified Version. Only one passage of Front-Cover Text and one of
Back-Cover Text may be added by (or through arrangements made by) any one entity. If the Document already
includes a cover text for the same cover, previously added by you or by arrangement made by the same entity you are
acting on behalf of, you may not add another; but you may replace the old one, on explicit permission from the previous
publisher that added the old one.
The author(s) and publisher(s) of the Document do not by this License give permission to use their names for publicity
for or to assert or imply endorsement of any Modified Version.
8.5
COMBINING DOCUMENTS
You may combine the Document with other documents released under this License, under the terms defined in section 4
above for modified versions, provided that you include in the combination all of the Invariant Sections of all of the
original documents, unmodified, and list them all as Invariant Sections of your combined work in its license notice, and
that you preserve all their Warranty Disclaimers.
The combined work need only contain one copy of this License, and multiple identical Invariant Sections may be
replaced with a single copy. If there are multiple Invariant Sections with the same name but different contents, make
the title of each such section unique by adding at the end of it, in parentheses, the name of the original author or
publisher of that section if known, or else a unique number. Make the same adjustment to the section titles in the list of
Invariant Sections in the license notice of the combined work.
In the combination, you must combine any sections Entitled "History" in the various original documents, forming one
section Entitled "History"; likewise combine any sections Entitled "Acknowledgements", and any sections Entitled
"Dedications". You must delete all sections Entitled "Endorsements."
8.6
COLLECTIONS OF DOCUMENTS
You may make a collection consisting of the Document and other documents released under this License, and replace
the individual copies of this License in the various documents with a single copy that is included in the collection,
provided that you follow the rules of this License for verbatim copying of each of the documents in all other respects.
You may extract a single document from such a collection, and distribute it individually under this License, provided
you insert a copy of this License into the extracted document, and follow this License in all other respects regarding
verbatim copying of that document.
8.7
AGGREGATION WITH INDEPENDENT WORKS
A compilation of the Document or its derivatives with other separate and independent documents or works, in or on a
volume of a storage or distribution medium, is called an "aggregate" if the copyright resulting from the compilation is
not used to limit the legal rights of the compilation's users beyond what the individual works permit. When the
Document is included an aggregate, this License does not apply to the other works in the aggregate which are not
themselves derivative works of the Document.
If the Cover Text requirement of section 3 is applicable to these copies of the Document, then if the Document is less
than one half of the entire aggregate, the Document's Cover Texts may be placed on covers that bracket the Document
within the aggregate, or the electronic equivalent of covers if the Document is in electronic form. Otherwise they must
appear on printed covers that bracket the whole aggregate.
8.8
TRANSLATION
Translation is considered a kind of modification, so you may distribute translations of the Document under the terms of
section 4.
Replacing Invariant Sections with translations requires special permission from their copyright holders, but you may
include translations of some or all Invariant Sections in addition to the original versions of these Invariant Sections.
You may include a translation of this License, and all the license notices in the Document, and any Warrany
Disclaimers, provided that you also include the original English version of this License and the original versions of
those notices and disclaimers. In case of a disagreement between the translation and the original version of this License
or a notice or disclaimer, the original version will prevail.
If a section in the Document is Entitled "Acknowledgements", "Dedications", or "History", the requirement (section 4)
to Preserve its Title (section 1) will typically require changing the actual title.
8.9
TERMINATION
You may not copy, modify, sublicense, or distribute the Document except as expressly provided for under this License.
Any other attempt to copy, modify, sublicense or distribute the Document is void, and will automatically terminate your
rights under this License. However, parties who have received copies, or rights, from you under this License will not
have their licenses terminated so long as such parties remain in full compliance.
8.10
FUTURE REVISIONS OF THIS LICENSE
The Free Software Foundation may publish new, revised versions of the GNU Free Documentation License from time
to time. Such new versions will be similar in spirit to the present version, but may differ in detail to address new
problems or concerns. See <http://www.gnu.org/copyleft/>.
Each version of the License is given a distinguishing version number. If the Document specifies that a particular
numbered version of this License "or any later version" applies to it, you have the option of following the terms and
conditions either of that specified version or of any later version that has been published (not as a draft) by the Free
Software Foundation. If the Document does not specify a version number of this License, you may choose any version
ever published (not as a draft) by the Free Software Foundation.