LINGUAGGI E TECNOLOGIE WEB - SisInfLab

Transcript

LINGUAGGI E TECNOLOGIE WEB - SisInfLab
Corso di Laurea Magistrale in
Ingegneria Informatica
Corso di Linguaggi e Tecnologie Web
A. A. 2012 - 2013
LINGUAGGI E TECNOLOGIE WEB
CSS
Floriano Scioscia
1
LTW
A.A. 2012/13
DEE - Politecnico di Bari
CSS
• CSS (Cascading Style Sheets, fogli di stile in cascata)
costituisce uno dei fondamentali standard del W3C
• I fogli di stile sono stati progettati per consentire un
controllo preciso di caratteristiche legate all'aspetto con
cui è presentato un documento HTML od XML
• Tutte queste caratteristiche vengono così separate dal
contenuto vero e proprio del documento
• La peculiarità è nella parola "cascading": è prevista (ed
incoraggiata) la presenza di più fogli di stile, che agiscono
uno dopo l'altro, in cascata
• CSS è indipendente da un particolare insieme di elementi
ed attributi HTML, cosicché potrà supportare facilmente
nuove versioni del linguaggio
CSS - Floriano Scioscia
2
LTW
A.A. 2012/13
DEE - Politecnico di Bari
Versioni di CSS
• CSS level 1 o CSS1 (dicembre 1996) è stato concepito come
un linguaggio di formattazione visiva
– permette di specificare caratteristiche tipografiche e di presentazione per
gli elementi di un documento HTML destinato ad essere visualizzato
• CSS level 2 (raccomandazione W3C maggio 1998, versione 2.1
del luglio 2007)
– supporto per diversi media (es. fogli di stile audio per documenti destinati
alla lettura di una voce computerizzata)
– un linguaggio di layout sofisticato e complesso
• CSS level 3 (specifiche suddivise in moduli)
•
Le versioni più recenti dei Web browser più diffusi (IE 8+, Firefox 3+, Safari,
Opera, Chrome) supportano completamente CSS 2.1
•
Il supporto a CSS 3 è ancora molto frammentario
CSS - Floriano Scioscia
3
LTW
A.A. 2012/13
DEE - Politecnico di Bari
Integrare HTML e CSS
• HTML consente l'uso di un foglio di stile CSS in quattro
modi diversi:
1. come attributo nel tag di un particolare elemento HTML
N.B. è consigliabile non abusare di questa possibilità, per
mantenere la separazione tra presentazione e contenuto
2. descritto nell'intestazione del documento mediante il tag style
3. importato da un file esterno mediante il tag style
4. indicato dal tag link nell'intestazione del documento
• E' inoltre possibile assegnare gli stili agli elementi HTML in
tre modi:
1. a tutti gli elementi di un certo tipo (in base al nome dell'elemento)
2. a tutti gli elementi di una certa categoria (identificati dal valore
dell'attributo class)
3. ad uno specifico elemento (identificato dal valore dell'attributo id)
CSS - Floriano Scioscia
4
LTW
A.A. 2012/13
DEE - Politecnico di Bari
Uso dell'attributo style
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
"http://www.w3.org/TR/html4/strict.dtd">
<html>
<head>
<title>Esempio di utilizzo 1</title>
</head>
<body>
<h1 style="color:red;">
utilizzo dei css
</h1>
<p>
questo esempio mostra come modificare il
colore del testo con l’attributo style
</p>
</body>
</html>
CSS - Floriano Scioscia
5
LTW
A.A. 2012/13
DEE - Politecnico di Bari
Uso del tag style
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML
4.01//EN"
"http://www.w3.org/TR/html4/strict.dtd">
<html>
<head>
<title>esempio di utilizzo 2</title>
<style type="text/css" media="screen">
h1 {color:blue;}
</style>
Tipo di supporto di
riproduzione a cui è destinato
</head>
lo stile. Alcuni valori possibili:
<body>
- screen (monitor di computer)
<h1>Uso dei CSS</h1>
- tv (televisore)
<p>
- handheld (palmare)
Questo esempio mostra come
modificare il colore del testo - print (stampa cartacea)
- braille (tastiere Braille per
usando il tag style
non vedenti)
</p>
- aural (lettura con voce
</body>
computerizzata)
</html>
- all (tutti i media possibili)
CSS - Floriano Scioscia
6
LTW
A.A. 2012/13
DEE - Politecnico di Bari
Uso della direttiva @import
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
"http://www.w3.org/TR/html4/strict.dtd">
<html>
<head>
<title>esempio di utilizzo 3</title>
<style type="text/css">
@import url(miostile.css)
</style>
</head>
<body>
<h1>Uso dei CSS</h1>
<p>
Questo esempio mostra come modificare il colore del
testo usando il tag style con la direttiva import
</p>
</body>
miostile.css
</html>
h1 { color: blue; }
CSS - Floriano Scioscia
7
LTW
A.A. 2012/13
DEE - Politecnico di Bari
Riferimento mediante tag link
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
"http://www.w3.org/TR/html4/strict.dtd">
<html>
<head>
<title>esempio di utilizzo 4</title>
<link type="text/css" rel="stylesheet"
href="./miostile.css" />
</head>
<body>
<h1>Uso dei CSS</h1>
<p>
Questo esempio mostra come applicare un foglio di
stile usando il tag link
</p>
</body>
miostile.css
</html>
h1 { color: blue; }
CSS - Floriano Scioscia
8
LTW
A.A. 2012/13
DEE - Politecnico di Bari
Sintassi CSS – 1
• Proprietà
– una caratteristica di stile assegnabile ad un elemento
– CSS1 prevede 53 proprietà diverse, CSS2 ben 121!
– color, font-family, margin, etc.
• Statement
– assegnazione di una proprietà CSS. Ha la sintassi
proprietà: valore
Esempi:
color: blue;
font-family: arial, verdana, sans-serif;
border: 1px #cdcdcd dashed;
CSS - Floriano Scioscia
9
LTW
A.A. 2012/13
DEE - Politecnico di Bari
Sintassi CSS – 2
• Selettore
– specifica un elemento o una classe di elementi HTML (o XML) al
fine di associarvi caratteristiche CSS
h1, p.heading, td[valign]
• Regola
– un blocco di statement associati ad un elemento attraverso l'uso
di un selettore. Ha la sintassi
selettore { statement1; statement2; … }
h1 {
color: blue;
font-family: arial, verdana, sans-serif;
}
• Commento
– è possibile inserire un commento racchiuso fra i simboli /* e */
/* Il mio primo commento */
CSS - Floriano Scioscia
10
LTW
A.A. 2012/13
DEE - Politecnico di Bari
Selettori CSS – 1
• Selettore di tipo ( e )
– seleziona tutti gli elementi e
– Esempi
body {
color: blue;
font-family: arial, verdana, sans-serif;
font-size: 12pt;
margin: 15px;
}
h1 { color: red; font-size: 18pt; }
• Selettori di prossimità ( e f, e > f, e + f )
– selezionano gli elementi f che siano rispettivamente discendenti,
figli diretti o immediatamente successivi ad elementi e
p a { color: #008082; }
a > strong { font-weight: bold; }
h3 + table { margin:10px; border: 2px double
red; }
CSS - Floriano Scioscia
11
LTW
A.A. 2012/13
DEE - Politecnico di Bari
Selettori CSS – 2
• Selettori di attributi ( e[foo] e[foo="bar"] )
– selezionano solo gli elementi e che posseggono l'attributo
specificato o in cui esso ha il valore indicato
a[href="http://www.poliba.it/"] { color:red }
• Selettori di classe ( e.c .c e#id )
– il primo equivale a e[class="c"]
– il secondo seleziona tutti gli elementi di classe c, qualsiasi sia il tipo
– il terzo equivale a e[id="id"]
h1.heavy { color: red; font-weight: bold; }
.content { color: black; font: monospaced; }
p#note { color: gray; font-size: 9pt; }
CSS - Floriano Scioscia
12
LTW
A.A. 2012/13
DEE - Politecnico di Bari
Selettori CSS – 3
• Selettore di pseudoelemento ( e:pe )
– è attivo solo in corrispondenza di una parte di ciascun elemento e
• before / after: vero prima/dopo il contenuto dell'elemento e
• first-line / first-letter: vero per la prima riga / lettera nell'elemento e
p:first-letter { font-size: 300%; font-family:
"script"; float: left; margin: -5px 3px 0 0; }
CSS - Floriano Scioscia
13
LTW
A.A. 2012/13
DEE - Politecnico di Bari
Selettori CSS – 4
• Selettore di pseudoclasse ( e:condition )
– seleziona un elemento solo se è verificata la condizione
• first-child: vero se l'elemento è il primo figlio di e
• link, visited: vero se l'elemento e è, rispettivamente, un link non
ancora visitato o un link già visitato
• hover, active, focus: vero se, rispettivamente, sull'elemento e passa il
mouse, il mouse è premuto, o l'elemento è selezionato per accettare
input
• lang(c): vero se per l'elemento e è specificata la lingua c
a:hover { color: red; text-decoration: none; }
• Simboli speciali:
– * (asterisco): selettore universale (seleziona tutti gli elementi)
– , (virgola): raggruppamento di selettori (più selettori possono
usare lo stesso blocco di statement se separati da virgola)
CSS - Floriano Scioscia
14
LTW
A.A. 2012/13
DEE - Politecnico di Bari
Tipi di dato – 1
• CSS prevede diversi tipi di dato per le proprietà di stile
• In generale un browser tende ad ignorare, se possibile,
una proprietà di stile mal definita
• Tipi di dato
– Interi e reali: rappresentano numeri assoluti
– Lunghezze: dimensioni espresse mediante una unità di misura
• px: pixel
• pt: punto tipografico, corrisponde a 1/72 di pollice, pari a circa 0,353
mm (molto usato per specificare la dimensione dei font, e.g. 12pt)
• em: unità di misura tipografica relativa (1 em corrisponde all'altezza in
punti tipografici del font attualmente usato)
• % : misura espressa in percentuale di spazio del blocco contenente, o
dell'intera area visibile della pagina per l'elemento body
• mm, cm, in: dimensione assoluta in millimetri, centimetri o pollici
CSS - Floriano Scioscia
15
LTW
A.A. 2012/13
DEE - Politecnico di Bari
Tipi di dato – 2
• Altri tipi di dato utilizzabili nei CSS
– URI: fa riferimento ad una risorsa in rete. Sintassi url(http://…)
– Colore: specificabile in tre modi
• nome per uno tra 16 colori predefiniti tra cui red, blue, white,
silver
• RGB: ognuna delle tre componenti (rossa, verde, blu) è un intero da 0 a
255, e.g. rosso puro è rgb(255,0,0)
• notazione esadecimale #rrggbb, e.g. rosso puro è #ff0000
– Stringa: una stringa posta tra virgolette semplici o doppie. Si usa la
barra rovesciata per includere le virgolette nella stringa
"Ho detto: \"Ciao\"."
CSS - Floriano Scioscia
16
LTW
A.A. 2012/13
DEE - Politecnico di Bari
Box model – 1
• Nel layout di un
documento HTML,
ogni elemento
occuperà un blocco
(box) rettangolare
sullo schermo
– in fase di
visualizzazione ne
vengono calcolati
posizione, dimensioni
e le altre
caratteristiche definite
nei fogli di stile in
base al box model
riportato a lato
CSS - Floriano Scioscia
17
LTW
A.A. 2012/13
DEE - Politecnico di Bari
Box model – 2
• Margin: la regione che separa un blocco dall'altro,
necessariamente trasparente
– margin-top, margin-bottom, margin-left, margin-right:
dimensioni del margine del blocco
– notazione abbreviata: margin: t r b l;
• Border: il bordo di un blocco
– border-top, border-bottom, border-left,
border-right, border-width:
dimensioni del bordo
– border-color: colore del bordo;
– border-style: può assumere i valori
none, dotted, dashed, solid, double,
groove, ridge, inset, outset.
– notazione abbreviata:
border: dim color style;
CSS - Floriano Scioscia
18
LTW
A.A. 2012/13
DEE - Politecnico di Bari
Box model – 3
• Padding: spazio vuoto fra il bordo del blocco ed il suo
contenuto. Ha lo stesso sfondo del contenuto
– padding-top, padding-bottom, padding-left, padding-right:
dimensioni del padding del blocco
– notazione abbreviata: padding: t r b l;
• Content: la regione in cui sta il contenuto dell'elemento
– background-color, background-image, background-repeat,
background-attachment, background-position: colore, immagine e
meccanismo di ripetizione dell'immagine di sfondo del blocco
CSS - Floriano Scioscia
19
LTW
A.A. 2012/13
DEE - Politecnico di Bari
Posizionamento dei box – 1
• Un riquadro contenuto all’interno di un altro blocco è
associato gerarchicamente al genitore
• Quattro possibili disposizioni dei blocco
– flusso verticale: ogni blocco va a nuova riga (e.g. paragrafi, tabelle)
– flusso orizzontale (inline), e.g. singole parole, elementi <a></a>
– fluttuante (float): un blocco allineato all'estrema sinistra / destra
all'interno del suo genitore; può essere affiancato da altri blocchi
– posizionamento assoluto: disposizione dei blocchi sullo schermo; è
indipendente dal flusso e può sovrapporsi ad altri blocchi
• E' possibile inserire un nuovo blocco con flusso verticale
mediante il tag div
• E' possibile inserire un nuovo inline mediante il tag span
CSS - Floriano Scioscia
20
LTW
A.A. 2012/13
DEE - Politecnico di Bari
Posizionamento dei box – 2
• display ( inline | block | list-item | run-in | … | none )
– tipo di box da utilizzare per l'elemento: un blocco, un inline, una
lista, una cella di tabella, etc.
• position ( static | relative | absolute | fixed )
– posizionamento rispetto al flusso del documento
• float ( left | right | none )
– definisce un box fluttuante
• z-index
– la posizione del box sull'asse z, perpendicolare allo schermo. Il
valore più alto è più “vicino” al lettore, e quindi nasconde i blocchi
sottostanti. Il valore predefinito è 0
– N.B.: per default lo sfondo di un box è trasparente
• top, bottom, left, right: coordinate del box
• width, height: dimensioni usabili invece di right e bottom
CSS - Floriano Scioscia
21
LTW
A.A. 2012/13
DEE - Politecnico di Bari
Visibilità dei box
• Diversi modi di alterare la visibilità di un box
• display: none
– Esclude il box dal layout della pagina, come se l'elemento non
esistesse affatto nel documento
• visibility ( visible | hidden )
– Rende visibile o invisibile il box (bordo, padding e contenuto), ma
esso occupa sempre il suo spazio nel layout della pagina
• opacity
– Indica il grado di trasparenza con cui è disegnato il box, da 0.
(completamente trasparente) a 1. (nessuna trasparenza)
• Variando queste proprietà tramite Javascript, possono
essere realizzate applicazioni Web con GUI (graphical user
interface) modificabili
CSS - Floriano Scioscia
22
LTW
A.A. 2012/13
DEE - Politecnico di Bari
Box model – esempio 1
...
<link type="text/css" rel="stylesheet"
href="./css_1.css" />
...
<div id="uno">
Primo blocco. Notare padding e width.
</div>
<div id="due">
Secondo blocco. Notare
l'effetto di margin e padding.
<span style="background-color:cyan;">
Questa linea ha uno sfondo diverso. </span>
</div>
<div id="tre">
Riquadro con posizionamento
assoluto, può sovrapporsi agli altri
</div>
...
CSS - Floriano Scioscia
css_1.css
#uno {
background-color: blue;
padding: 25px;
width: 80%;
color: white;
}
#due {
margin: 25px;
border: 2px red dashed;
padding: 0px;
width: 300px;
}
#tre {
background-color: gold;
position: absolute;
top: 60px; left: 320px;
width: 150px; height: 110px;
padding: 2px;
text-align: right;
}
23
LTW
A.A. 2012/13
DEE - Politecnico di Bari
Box model – esempio 2
...
<link type="text/css" rel="stylesheet"
href="./css_2.css" />
...
<div id="uno">
Primo blocco. Notare padding e width.
</div>
<div id="due">
Secondo blocco. Notare
l'effetto di margin e padding.
<span style="background-color:cyan;">
Questa linea ha uno sfondo diverso. </span>
</div>
<div id="tre">
Riquadro con posizionamento
assoluto, può sovrapporsi agli altri
</div>
...
CSS - Floriano Scioscia
css_2.css
#uno {
background-color: blue;
padding: 25px;
width: 80%;
color: white;
}
#due {
margin: 10px;
border: 10px red dashed;
padding: 0px;
width: 300px;
}
#tre {
z-index: -1;
background-color: gold;
position: absolute;
top: 60px; left: 320px;
width: 150px; height: 110px;
padding: 2px;
text-align: right;
}
24
LTW
A.A. 2012/13
DEE - Politecnico di Bari
Box model – esempio 3
...
<link type="text/css" rel="stylesheet"
href="./css_3.css" />
...
<div id="uno">
Primo blocco. Notare padding e width.
</div>
<div id="due">
Secondo blocco. Notare
l'effetto di margin e padding.
<span style="background-color:cyan;">
Questa linea ha uno sfondo diverso. </span>
</div>
<div id="tre">
Riquadro con posizionamento
assoluto, può sovrapporsi agli altri
</div>
...
CSS - Floriano Scioscia
css_3.css
#uno {
background-color: blue;
padding: 25px;
width: 80%;
color: white;
display: none;
}
#due {
margin: 10px;
border: 10px red dashed;
padding: 0px;
width: 300px;
opacity: 0.5;
}
#tre {
z-index: -1;
background-color: gold;
position: absolute;
top: 60px; left: 320px;
width: 150px; height: 110px;
padding: 2px;
text-align: right;
}
25
LTW
A.A. 2012/13
DEE - Politecnico di Bari
Stile dei font – 1
• font-family: indica il nome del font da utilizzare per il
testo e le alternative nel caso in cui il font non sia
presente nella macchina ospite. E' buona norma indicare
come ultima alternativa un carattere standard quali: serif
(con grazie), sans-serif (senza grazie), monospaced
(larghezza fissa)
– Nota: le grazie sono quegli abbellimenti tipografici delle lettere, che
dovrebbero servire a rendere più leggibile il testo
– Esempio
p { font-family: "tahoma" "arial" sans-serif; }
• font-style (normal | italic | oblique): imposta in corsivo o
in obliquo un testo
• font-variant (normal | small-caps): il valore small-caps
crea l'effetto maiuscoletto, normal non introduce
variazioni
CSS - Floriano Scioscia
26
LTW
A.A. 2012/13
DEE - Politecnico di Bari
Stile dei font – 2
• font-size: specifica le dimensioni del font; 4 modi possibili
– grandezze assoluta in un insieme di valori predefiniti
(xx-small | x-small | small | medium | large | x-large | xx-large)
– grandezza assoluta in punti, e.g. font-size: 12pt;
– grandezza relativa alle dimensioni predefinite del testo nel blocco
contenitore (smaller | larger)
– grandezza percentuale rispetto al valore predefinito per il testo nel
blocco contenitore, e.g. font-size: 110%;
• font-weight (normal | bold | bolder | lighter | 100 – 900)
–
–
–
–
specifica il “peso” del font, cioè quanto è marcato il tratto
bolder e lighter sono relativi al valore predefinito
gli altri valori sono pesi assoluti
100-900 è una scala che va dal peso minimo al massimo; non tutti
i valori da 100 a 900 sono disponibili per tutti i font, il peso
effettivamente adottato sarà il più vicino disponibile
CSS - Floriano Scioscia
27
LTW
A.A. 2012/13
DEE - Politecnico di Bari
Stile del testo
• text-indent: imposta l’indentazione in valore assoluto o
percentuale
• text-align (left | right | center | justify): imposta
l’allineamento del testo nel blocco di riferimento
• line-height: permette di impostare l'interlinea
• text-decoration (none | underline | overline | line-through
| blink): permette di decorare il testo
– i possibili valori sono: non decorato, sottolineato, sopralineato,
cancellato, lampeggiante
• letter-spacing e word-spacing: spaziatura tra lettere e tra
parole, specificata in valore
– assoluto, e.g. letter-spacing: 1em
– relativo al valore predefinito, e.g. word-spacing: +0.2em
CSS - Floriano Scioscia
28
LTW
A.A. 2012/13
DEE - Politecnico di Bari
Tabelle
• CSS permette di definire regole sofisticate per gli elementi
di una tabella
– gruppi di colonne, colonne, gruppi di righe, righe e singole celle
hanno proprietà analoghe a quelle del box model per i blocchi
CSS - Floriano Scioscia
29
LTW
A.A. 2012/13
DEE - Politecnico di Bari
Tabelle - esempio
• Applichiamo il seguente foglio di stile all'esempio di
tabella visto nelle slide su HTML:
table {
width: 100%;
background-color: #ffb400;
border: 10px double black;
font-family: "Forte" serif;
}
table caption {
color: green;
font-size: 150%;
font-variant: small-caps;
}
td {
color: blue;
background-color: #ffff80;
text-align: center;
padding: 5px;
}
CSS - Floriano Scioscia
30
LTW
A.A. 2012/13
DEE - Politecnico di Bari
Ereditarietà delle proprietà
• Se non viene specificata una proprietà, CSS assume un
valore predefinito che generalmente corrisponde a
"inherit", cioè eredita la proprietà dal contenitore in cui è
inserito l’elemento
<p style="color:red;">
Questo testo &egrave; rosso.
<em> Questo testo &egrave;
rosso e corsivo,
<span style="color: blue;">
mentre questo testo
&egrave; blu e corsivo.
</span>
</em>
</p>
CSS - Floriano Scioscia
31
LTW
A.A. 2012/13
DEE - Politecnico di Bari
Layout di pagina in puro CSS – 1
Esempio
CSS - Floriano Scioscia
32
LTW
A.A. 2012/13
DEE - Politecnico di Bari
Layout di pagina in puro CSS – 2
Il documento HTML
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
"http://www.w3.org/TR/html4/strict.dtd">
<html>
<head>
<title> Creazione di un layout solo con CSS senza tabelle
</title>
<style type="text/css"> @import url(layout1.css);
</style>
</head>
<body>
<div class="container">
<div class="header">
<h1>1. Area dell'intestazione</h1>
</div>
<div class="menu">
<p>2. Area del menu principale</p>
</div>
CSS - Floriano Scioscia
33
LTW
A.A. 2012/13
DEE - Politecnico di Bari
Layout di pagina in puro CSS – 3
Il documento HTML (continua)
<div class="menubar">
<p>3. Menu laterale</p>
<ul>
<li><a href="#">Home Page</a></li>
<li><a href="#">Voce menu 1</a></li>
<li><a href="#">Voce menu 2</a></li>
</ul>
</div>
<div class="content">
<p>4. Contenuto principale [...]</p>
</div>
<div class="trailer">
5. Area di coda della pagina
</div>
</div>
</body>
</html>
CSS - Floriano Scioscia
34
LTW
A.A. 2012/13
Layout di pagina in puro CSS – 4
Il foglio di stile
DEE - Politecnico di Bari
body {
font-family: "century schoolbook", "times new roman", serif;
}
div.container
width: 90%;
border: 1px
background:
}
h1 {
{ /* Stile del contenitore principale */
margin: .5em auto; /* centra in browser
solid black; text-align: left;
yellow; /* come il blocco float per il menu
margin: 0px;
padding: 0px; color: white;
.header { /* Stile dell'header del documento
padding: 1em; background: #99B7DB;
border-bottom: 1px solid black;
}
CSS - Floriano Scioscia
diversi da IE*/
laterale */
}
*/
35
LTW
A.A. 2012/13
DEE - Politecnico di Bari
Layout di pagina in puro CSS – 5
Il foglio di stile (continua)
.menu { /* Stile del menu principale */
background: green;
margin-bottom: 0px;
padding-top: .5em;
text-align: center;
border-bottom: 1px solid black;
}
.menubar { /* Stile del
float: left;
width: 20%;
margin-top: 0px;
background: yellow;
}
menu laterale */
.menubar ul {
list-style-type: none;
margin-left: 0px;
padding-left: 1em;
}
CSS - Floriano Scioscia
36
LTW
A.A. 2012/13
DEE - Politecnico di Bari
.menubar a:hover {
Layout di pagina in puro CSS – 6
Il foglio di stile (continua)
color: red;
.menubar a {
text-decoration: none;
font-weight: bold;
}
}
/* link non sottolineati nel menu */
.content { /* Stile del corpo del testo
background: white;
margin-left: 20%;
padding: 1em;
border-left: 1px solid black;
}
*/
CSS - Floriano Scioscia
37
LTW
A.A. 2012/13
DEE - Politecnico di Bari
Layout di pagina in puro CSS – 7
Il foglio di stile (continua)
.trailer { /* Stile del footer del documento */
clear: both; /* evita blocchi float ai lati */
margin: 0px;
padding: .5em;
background: #99b7db;
font-size: 75%;
text-align: right;
border-top: 1px solid black;
}
CSS - Floriano Scioscia
38
LTW
A.A. 2012/13
DEE - Politecnico di Bari
Stili in cascata
• E' possibile definire più regole per gli stessi elementi; sono
applicate con un meccanismo a cascata. Nell'ordine:
– User Agent: il browser definisce (esplicitamente come preferenze
utente o implicitamente codificandole nel software) regole di stile
predefinite per gli elementi dei documenti
– User: se il browser lo consente, l'utente può fornire un proprio
foglio di stile per indicare regole di suo gradimento
– Author: l'autore delle pagine fornisce i fogli di stile per un
documento specifico, nei modi visti finora
• Nella cascata gli stili importati nell'header HTML con i tag link e
style precedono gli stili definiti nel tag di uno specifico elemento
con l'attributo style (quindi questi ultimi sopravanzano i precedenti)
– Regole !important: quando una regola (tipicamente dell'utente)
è seguita dalla parola-chiave !important, essa sopravanza una
analoga regola di senso diverso dell'autore
h1 { font-size: 18pt !important; }
CSS - Floriano Scioscia
39
LTW
A.A. 2012/13
CSS Media Queries
DEE - Politecnico di Bari
• In CSS 2, la distinzione tra diversi media a cui applicare fogli di
stile differenti è qualitativa e rigida → poco sfruttata sia dai
browser sia dai Web designer
• In particolare, la maggioranza di siti Web attuali si adatta
difficilmente alla grande varietà di schermi attualmente usati
(computer, smartphone, tablet, TV, etc.)
• CSS 3 ha pertanto esteso la specifica attraverso le Media
Queries (W3C recommendation, giugno 2012), che permettono
di adattarsi (anche dinamicamente) a parametri quantitativi:
–
–
–
–
dimensioni fisiche, dimensioni in pixel
risoluzione (in DPI/PPI, dots/pixels per inch, punti/pixel per pollice)
orientamento verticale/orizzontale
gamma di colori supportati
• Specifica già supportata dalle versioni più recenti di tutti i
principali browser per computer e dispositivi mobili
CSS - Floriano Scioscia
40
LTW
A.A. 2012/13
CSS Media Queries - principi
DEE - Politecnico di Bari
• Nell'attributo media del collegamento a un foglio di stile è possibile
inserire espressioni logiche composte da una o più condizioni
relative alle caratteristiche del mezzo
• Il foglio di stile verrà applicato solo se il mezzo verifica l'espressione
• Esempio:
– Adottare un foglio di stile per schermi con larghezza minore di 500 pixel e uno per
quelli con larghezza maggiore
<link href="./small.css" rel="stylesheet" media="screen and
(max-width: 500px)" />
<link href="./large.css" rel="stylesheet" media="screen and
(min-width: 501px)" />
• In questo modo è possibile progettare un layout e uno stile in grado
di adattarsi a diverse categorie di dispositivi (con granularità a
piacere), inclusi quelli che possono variare dinamicamente le loro
proprietà (risoluzione, orientamento, etc.)
– Tale approccio, di recente diffusione, è detto responsive Web design
CSS - Floriano Scioscia
41
LTW
A.A. 2012/13
CSS Media Queries - sintassi
DEE - Politecnico di Bari
• Una Media Query è composta da:
– Un tipo di media (all|aural|braille|handheld|print|
projection|screen|tty|tv)
– Una sequenza di condizioni in and logico tra loro (con la parola chiave
and)
– Più Media Query separate da virgola sono in or logico tra loro
• Tre possibili modi di applicare le Media Queries:
– Collegamento da pagina HTML a foglio di stile CSS
<link href="./small.css" rel="stylesheet" media="screen and (maxwidth: 500px), all and (max-width: 2cm)" />
– Direttiva @import per richiamare un foglio di stile CSS da un altro
@import url("small.css") screen and (max-width: 500px);
– Direttiva @media direttamente nel foglio di stile CSS
@media screen and (max-width: 500px) { .column { float: none; } }
CSS - Floriano Scioscia
42
LTW
A.A. 2012/13
CSS Media Queries - proprietà
DEE - Politecnico di Bari
•
•
•
•
•
width larghezza dell'area visibile della pagina
height altezza dell'area visibile della pagina
device-width larghezza dell'intero schermo-mezzo
device-height altezza dell'intero schermo-mezzo
aspect-ratio, device-aspect-ratio rapporto d'aspetto
(larghezza/altezza) dell'area visibile o dell'intero schermo
• color minimo numero di bit per pixel per componente RGB
– è pari a 0 per dispositivi monocromatici
– esempio: 256 colori, 8 bpp → 3 bpp R, 3 bpp G, 2 bpp B → color è pari a 2
• monochrome numero di bit per pixel per i livelli di grigio
– è pari a 0 per dispositivi a colori
• orientation:(portrait|landscape) orientamento verticale/orizzontale
• resolution risoluzione (in dpi oppure dpcm)
CSS - Floriano Scioscia
43
LTW
A.A. 2012/13
CSS Media Queries - condizioni
DEE - Politecnico di Bari
• Sulle proprietà quantitative possono essere imposte condizioni di
valore esatto, minimo o massimo
• In questi ultimi due casi si aggiungono i prefissi min- e max- al
nome della proprietà
• Esempi:
– Due stili diversi per stampa a colori e in gradazioni di grigio
• print and (color)
• print and (monochrome)
– Distinguere in base alla risoluzione (es. per discriminare TV, monitor di
computer e smartphone)
• screen and min-width:640px and min-height:480px and max-resolution:100dpi
• screen and min-width:800px and min-height:480px and min-resolution:101dpi
and max-resolution:200dpi
• screen and min-width:800px and min-height:480px and min-resolution:201dpi
CSS - Floriano Scioscia
44
LTW
A.A. 2012/13
Responsive Web design - esempio
DEE - Politecnico di Bari
•
Considerando l'esempio di layout di pagina in
puro CSS visto prima, aggiungiamo una
media query e una regola per ridisporre in
verticale il layout se l'orientamento è
verticale o la larghezza della pagina è piccola
(e.g. su cellulare)
@media all and (orientation: portrait),
screen and (max-width: 600px)
{
.header, .menu, .menubar,
.content, .trailer {
float: none; width: auto; margin: 0;
}
}
•
Questo genere di layout dinamico era in
precedenza implementato usando JavaScript,
con alcuni svantaggi:
– uniche proprietà accessibili: larghezza e altezza
– compatibilità cross-browser problematica
– funziona solo se JavaScript è abilitato
CSS - Floriano Scioscia
45
LTW
A.A. 2012/13
DEE - Politecnico di Bari
Convalida di CSS
• Il W3C offre un servizio di convalida (validation) di fogli
di stile CSS, per controllare se sono aderenti agli standard
– http://jigsaw.w3.org/css-validator/
• E' possibile sottoporre a convalida fogli di stile
– pubblicati sul web, semplicemente inserendone l'indirizzo
– residenti nel nostro filesystem, facendone l'upload
– inseriti direttamente in un'apposita area di testo
• In caso di successo si può aggiungere ad una pagina il
simbolo
CSS - Floriano Scioscia
46
LTW
A.A. 2012/13
DEE - Politecnico di Bari
Acid3 Test
• Pagina di test del Web Standards Project
http://acid3.acidtests.org/
• Suite di 100 test per valutare la compatibilità di un
browser con
–
–
–
–
HTML
CSS
DOM
Javascript
CSS - Floriano Scioscia
47
LTW
A.A. 2012/13
DEE - Politecnico di Bari
Riferimenti
• Specifiche
– E.J. Etemad (editor), Cascading Style Sheets (CSS) Snapshot 2010, W3C
Working Group Note 12 May 2011, http://www.w3.org/TR/CSS/
– B. Bos, T. Çelik, I. Hickson, H. Lie (editors), Cascading Style Sheets Level
2 Revision 1 (CSS 2.1) Specification, W3C Recommendation 7 June 2011,
http://www.w3.org/TR/CSS2/
– F. Rivoal (editor), Media Queries, W3C Recommendation 19 June 2012,
http://www.w3.org/TR/css3-mediaqueries/
• Testi
– G. Troiani, CSS Guida Completa, 2005, Apogeo
CSS - Floriano Scioscia
48