Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
Linguaggio CSS
Linguaggio CSS 2
Introduzione
<p>This is a paragraph.</p>
<h1>This is a heading</h1>
Quando gli elementi come <font> e <color> furono aggiunti nelle specifiche HTML 3.2 è
cominciato un incubo per gli web developer. Lo sviluppo di siti grandi, dove font e colori dovevano
essere modificati in ogni singolo punto di ogni singola pagina divennero un lungo, faticoso e
spesso inutile lavoro.
Per risolvere questo problema, il consorzio W3C, reponsabile per la standardizzazione dell'HTML,
creò il linguaggio CSS in aggiunta all'HTML 4.0.
Dall'HTML 4.0, le informazioni di formattazione possono essere rimosse dai documenti HTML e
memorizzati in un file CSS separato.
Inoltre è possibile far riferimento a multipli file css dentro lo stesso file HTML.
Ma quale stile sarà utilizzato quando ne viene specificato più di uno per lo stesso documento
HTML? In generale si dice che tutti gli stili convergono “a cascata” in un unico foglio di stile
“virtuale” secondo la seguente priorità crescente:
1. Browser default
2. Fogli di stile esterni
3. Fogli di stile interni (nella sezione HEAD)
4. stili inline (negli elementi HTML)
Quindi gli stili inline hanno la massima priorità rispetto a tutti gli altri, i fogli interni rispetto a
quelli esterni e alle impostazioni di default del browser e così via. Attenzione però, se il link al
foglio di stile esterno si trova dopo il foglio interno, questo avrà la priorità nonostante la regola
generale.
Linguaggio CSS 4
Sintassi CSS
Selector {
property1:value1;
property2:value2
}
Il selettore è normalmente l'elemento HTML che vuoi definire, la proprietà è l'attributo che si vuole
cambiare e ovviamente ogni proprietà assume un valore. Proprietà e valori sono separati dai due
punti e circondate dalle parentesi graffe.
h1,h2,h3,h4,h5,h6
{
color:green
}
Il selettore class
Con il selettore class si possono definire stile differenti per lo stesso tipo di elemento HTML.
Immagina di avere due paragrafi nel tuo documento: uno allineato a destra e uno al centro:
p.right {text-align:right}
p.center {text-align:center}
.center {text-align:center}
Linguaggio CSS 5
Non iniziare un nome di classe con un numero! Questa brutta pratica è supportata solo da
Internet Explorer.
input[type="text"] {background-color:blue}
Il selettore id
Si possono definire stili per gli elementi HTML anche con il selettore id, che è definito tramite un
#. La regola di stile viene intercettata da tutti gli elementi che hanno lo stesso valore di id del
valore accanto a #:
#green {color:green}
Analogamente possiamo limitare il raggio del selettore id, restringendo il campo ad un solo
elemento HTML:
p#para1 {
text-align:center;
color:red
}
Ancora, non iniziare un nome di id con un numero! Questo è supportato solo da Internet Explorer.
Commenti CSS
I commenti vengono solitamente utilizzati per spiegare il codice e possono aiutare ad editare di
nuovo il codice in un secondo momento. I commenti sono ignorati dai browser. I commenti CSS
iniziano con “/*” e finiscono con “*/”:
/*This is a comment*/
p {
text-align:center;
Linguaggio CSS 6
<head>
<link rel="stylesheet" type="text/css" href="mystyle.css" />
</head>
Il browser leggerà le definizioni di stile contenute nel file mystile.css e formatterà il documento
secondo quelle.
<head>
<style type="text/css">
hr {color:sienna}
p {margin-left:20px}
body {background-image:url("images/back40.gif")}
</style>
</head>
3) Stili inline
Con lo stile inline si perdono praticamente tutti i vantaggi introdotti tramite i fogli di stile; va usato
dunque solo nel caso remoto in cui uno stile particolare vada applicato ad un singolo elemento.
Per utilizzare gli stili inline bisogna utilizzare l'attributo style disponibile in tutti gli elementi HTML:
Vediamo adesso tutta la serie di proprietà utilizzabili nei CSS suddivise per categorie.
Linguaggio CSS 8
Le proprietà CSS del background definiscono gli effetti sullo sfondo di ogni elemento
TextColor
La proprietà color è utilizzata per impostare il colore del testo. Il colore può essere impostato da:
• name: definisce il nome di un colore, come "red"
• RGB: specifica un valore RGB, come "rgb(255,0,0)"
• Hex: specifica un valore esadecimale, come "#ff0000"
Il valore di default per una pagina è specificato nell'elemento body
body {color:blue}
h1 {color:#00ff00}
h2 {color:rgb(255,0,0)}
Text Alignment
La proprietà text-align è utilizzata per impostare l'allineamento orizzontale del testo, che può
essere centrato, allineato a destra, a sinistra o giustificato.
h1 {text-align:center}
p.date {text-align:right}
p.main {text-align:justify}
Text Decoration
La proprietà text-decoration è utilizzata per rimuovere decorazioni dal testo, come sottolineature
(nei link, ad esempio) o altro.
a {text-decoration:none}
h1 {text-decoration:overline}
h2 {text-decoration:line-through}
h3 {text-decoration:underline}
h4 {text-decoration:blink}
Linguaggio CSS 10
Non è comunque raccomandato sottolineare testo che non sia un link, per non confondere
l'utente.
Text Transformation
La proprietà text-transform è utilizzata per specificare lettere maiuscole a minuscole in un testo.
Può essere utilizzata, ad esempio, per modificare tutte le parole in minuscolo o mettere tutte le
parole con iniziale maiuscola.
p.uppercase {text-transform:uppercase}
p.lowercase {text-transform:lowercase}
p.capitalize {text-transform:capitalize}
Text Indentation
La proprietà text-indent è utilizzata per specificare l'indentazione della prima linea di un testo.
p {text-indent:50px}
%
text-shadow none
color
length
text-transform Modifica le lettere in un testo none
capitalize
uppercase
lowercase
unicode-bidi normal
embed
bidi-override
vertical-align Imposta l'allineamento verticale baseline
sub
super
top
text-top
middle
bottom
text-bottom
length
%
white-space normal
pre
nowrap
word-spacing Regola lo spazio tra le parole normal
length
Linguaggio CSS 12
CSS Font
• generic family: un gruppo di famiglie di font con un look simile (Come “Serif” o
“Monospace”)
• font family: una specifica famiglia di font (come "Times New Roman" o "Arial")
Font Family
La famiglia di font di un testo viene impostata con la proprietà font-family. Questa può contenere
diversi nomi di font come meccanismo “fallback”, nella speranza cioè che almeno uno di questi sia
presente nel sistema ospite.
Font Style
La proprietà font-style è utilizzata per specificare il testo corsivo, tramite tre valori:
p.normal {font-style:normal}
p.italic {font-style:italic}
p.oblique {font-style:oblique}
Font Size
La proprietà font-size definisce la dimensione del testo. Essere in grado di modificare la
dimensione del testo è cruciale nello web design moderno. La dimensione del testo può essere
assoluta o relativa:
Dimensione assoluta:
• imposta il testo ad una dimensione specifica
• non permette all'utente di cambiare la dimensione del testo in tutti i browser
Dimensione relativa:
• Imposta il testo ad una dimensione relativa agli elementi circostanti
• permette all'utente di cambiare la dimensione del testo in tutti i browser
Se non si specifica una dimensione precisa, la dimensione di default per il testo normale e
16px (16px = 1em).
h1 {font-size:40px}
h2 {font-size:30px}
p {font-size:14px}
L'esempio qui sopra permette a tutti i maggiori browser (tranne Internet Explorer) di
ridimensionare il testo, utilizzando lo zoom.
1em è uguale alla dimensione attuale del font e la dimensione di default dei browser abbiamo
visto essere 16px, quindi la dimensione reale può essere semplicemente calcolata tramite la
formula:
pixels/16=em
h1 {font-size:2.5em} /* 40px/16=2.5em */
h2 {font-size:1.875em} /* 30px/16=1.875em */
p {font-size:0.875em} /* 14px/16=0.875em */
Comunque, pur essendo questa la soluzione standard, presenta ancora problemi in Internet
Explorer, a causa di un ridimensionamento non proporzionale nello zoom.
body {font-size:100%}
h1 {font-size:2.5em}
h2 {font-size:1.875em}
p {font-size:0.875em}
Questo codice funziona finalmente bene ovunque, anche con zoom e resize. Provare per credere!
inherit
font-size Specifica la dimensione del font per il testo xx-small
x-small
small
medium
large
x-large
xx-large
smaller
larger
length
%
inherit
font-style Specifica lo stile del font per il testo normal
italic
oblique
inherit
font-variant normal
small-caps
inherit
font-weight Specifica lo spessore del font per il testo normal
bold
bolder
lighter
100
200
300
400
500
600
700
800
900
inherit
Linguaggio CSS 16
Tutti gli elementi HTML possono essere considerate come scatole (box). Nei CSS il termine “Box
Model” viene utilizzata per parlare di design e layout.
Per impostare la giusta dimensione agli elementi in tutti i browser devi capire come funziona il Box
Model. La figura sotto fa vedere come le proprietà margin, border e padding abbiano influenza
nella dimensione (altezza e larghezza) di ogni elemento.
width:250px;
padding:10px;
border:5px solid gray;
margin:10px;
CSS Border
Le proprietà CSS del bordo definiscono appunto il bordo attorno ad un elemento e permettono di
specificarne lo stile e il colore.
Border Style
La proprietà border-style specifica quale tipo di bordo deve essere visualizzato. Inoltre nessuna
delle altre proprietà del bordo avrà effetto finché la proprietà border-style è impostata.
Border Width
La proprietà border-width imposta la larghezza del bordo; questa può essere impostata in pixel o
tramite uno dei tre valori predefiniti: thin, medium, thick.
p.one
{
border-style:solid;
border-width:5px;
}
p.two
{
border-style:solid;
border-width:medium;
}
Border Color
La proprietà border-color property viene utilizzata per impostare il colore del bordo. Il colore può
essere impostato tramite:
• name: definisce il nome di un colore, come "red"
• RGB: specifica un valore RGB, come "rgb(255,0,0)"
• Hex: specifica un valore esadecimale, come "#ff0000"
Inoltre, è possibile impostare il colore al valore “transparent”
p.one
{
border-style:solid;
border-color:red;
}
p.two
{
border-style:solid;
border-color:#98bf21;
}
p
{
border-top-style:dotted;
border-right-style:solid;
border-bottom-style:dotted;
border-left-style:solid;
}
Linguaggio CSS 19
1. border-style:dotted;
◦ Tutti i bordi dotted
2. border-style:dotted solid;
◦ top e bottom dotted
◦ right e left solid
border-bottom-color
border-bottom-color Colore del bordo inferiore border-color
border-bottom-style Stile del bordo inferiore border-style
border-bottom- Larghezza del bordo inferiore border-width
width
border-color Colore del bordo color_name
hex_number
rgb_number
transparent
inherit
border-style Stile del bordo none
hidden
dotted
dashed
solid
double
groove
ridge
inset
outset
inherit
border-width Spessore del bordo thin
medium
thick
length
inherit
Linguaggio CSS 21
CSS Outlines
Un outline è una linea che viene disegnata intorno agli elementi, fuori dai bordi, per evidenziare
ancor più un elemento
CSS Margin
Le proprietà CSS dei margini definiscono lo spazio attorno agli elementi. Il margine rappresenta
un area rettangolare fuori dal bordo di un elemento, non ha un colore di sfondo ed è
completamente trasparente.
Anche qui abbiamo top, bottom, right e left margin che possono essere cambiati separatamente
oppure impostati assieme con la proprietà riassuntiva margin. È inoltre possibile specificare valori
negativi per sovrapporre i contenuti.
Possibili valori per il margine sono:
Valore Descrizione
auto Impostazione decisa dal browser
length Margine fisso (in pixels, pt, em, etc.)
% Margine percentuale
Vediamo un esempio:
margin-top:100px;
margin-bottom:100px;
margin-right:50px;
margin-left:50px;
CSS Padding
Le proprietà CSS sul padding definiscono lo spazio fra il contenuto e il bordo di un elemento. Il
padding viene influenzato dal colore di background di un elemento e analogamente a Border e
Padding, esiste la proprietà riassuntiva Margin.
Possibili valori per i margini sono:
Valore Descrizione
length Padding fisso (in pixels, pt, em, etc.)
% Padding percentuale
Vediamo un esempio:
padding-top:25px;
padding-bottom:25px;
padding-right:50px;
padding-left:50px;
CSS List
Le proprietà CSS per le liste (ordinate o no) permettono all'utente (del linguaggio CSS, che
sarebbe lo sviluppatore web..) di modificare a piacimento i numeri o i pallini che fanno da
segnaposto per i vari item della lista, usando qualsivoglia carattere (o sequenza di) fino ad
utilizzare una immagine.
In HTML ci sono due tipi di liste:
• Liste non ordinate, dove gli item sono marcati con pallini, tondini, quadratini o freccette
• Liste ordinate, dove gli item sono ordinati con numeri o lettere.
È possibile specificare il tipo di marcatore per un item della lista tramite la proprietà list-style-
type.
Vediamo un esempio:
ul.circle {list-style-type:circle}
ul.square {list-style-type:square}
ol.upper-roman {list-style-type:upper-roman}
ol.lower-alpha {list-style-type:lower-alpha}
Valore Descrizione
none Nessun marker
disc Default. Disco
circle Cerchio
square Quadrato
Valore Descrizione
none Nessun marker
circle cerchio
disc disco
square quadrato
armenian Numero armeno
Linguaggio CSS 25
ul.inside {list-style-position:inside}
ul.outside {list-style-position:outside}
È inoltre possibile utilizzare una immagine come marker per gli item della lista:
ul
{
list-style-image:url('arrow.gif');
}
1. list-style-type
2. list-style-position
3. list-style-image
list-style:square inside;
Linguaggio CSS 26
CSS Table
Le proprietà CSS per le tabella permettono di modificare il layout delle tabelle. Vediamole tutte:
CSS Dimension
Le proprietà CSS sulle dimensioni permettono di controllare la larghezza e l'altezza degli elementi:
CSS Classification
Le proprietà CSS di posizionamento permettono di specificare la posizione top, right, bottom, left
di un elemento. Permettono inoltre di impostare la forma, inserire un elemento dentro un altro e
specificare cosa deve accadere se un elemento è troppo grande per entrare in una specifica area.
Pseudo-classi CSS
Le pseudo-classi CSS sono utilizzate per aggiungere effetti speciali ad alcuni selettori. Vediamo la
sintassi, specificando che le pseudo-classi non sono case-sensitive:
selector:pseudo-class {property:value}
selector.class:pseudo-class {property:value}
Nel caso particolare dei link bisogna utilizzare questo stesso ordine di definizione (link, visited,
hover, active) per farli funzionare tutti insieme.
Le pseudo-classi possono essere combinate con le classi CSS:
a.red:visited {color:#00FF00}
<a class="red" href="css_syntax.asp">CSS Syntax</a>
La pseudo-classe :first-child
La pseudo-classe :first-child ricerca uno specifico elemento che è il primo figlio di un altro
elemento. Vediamo un esempio in cui si ricerca il primo elemento <p> all'interno di ogni altro
elemento.
<html>
<head>
<style type="text/css">
p:first-child
{ color:blue }
</style>
</head>
<body>
<p>I am a strong man.</p>
<p>I am a strong man.</p>
Linguaggio CSS 32
</body>
</html>
Ovviamente il risultato è che la prima linea viene scritta in blue. Nel secondo esempio si ricercano
i primi elementi <i> all'interno degli elementi <p>
<html>
<head>
<style type="text/css">
p > i:first-child
{ font-weight:bold }
</style>
</head>
<body>
<p>I am a <i>strong</i> man. I am a <i>strong</i> man.</p>
<p>I am a <i>strong</i> man. I am a <i>strong</i> man.</p>
</body>
</html>
<html>
<head>
<style type="text/css">
q:lang(no)
{ quotes:"~" "~" }
</style>
</head>
<body>
<p>Some text <q lang="no">A quote in a paragraph</q>
Some text.</p>
</body>
</html>
Linguaggio CSS 33
Pseudo-elementi CSS
Gli pseudo-elementi CSS sono utilizzati per aggiungere degli effetti speciali ad alcuni selettori. La
sintassi degli pseudo-elementi è:
selector:pseudo-element {property:value}
selector.class:pseudo-element {property:value}
Lo pseudo-elemento :first-line
Viene utilizzato per aggiungere uno stile speciale alla prima linea di testo di un selettore:
p:first-line {color:#0000ff;font-variant:small-caps}
<p>Some text that ends up on two or more lines</p>
Ovviamente questo pseudo-elemento può essere utilizzato solo con elementi block-level. Vediamo
l'elenco delle proprietà supportate:
• font properties
• color properties
• background properties
• word-spacing
• letter-spacing
• text-decoration
• vertical-align
• text-transform
• line-height
• clear
Lo pseudo-elemento :first-letter
Viene utilizzata per aggiungere uno stile speciale alla prima lettera di un testo dentro ad un
selettore:
Linguaggio CSS 35
p:first-letter {color:#ff0000;font-size:xx-large}
<p>The first words of an article...</p>
• font properties
• color properties
• background properties
• margin properties
• padding properties
• border properties
• text-decoration
• vertical-align (solo se float="none")
• text-transform
• line-height
• float
• clear
p.article:first-letter {color:#ff0000}
<p class="article">A paragraph in an article</p>
h1:before
{ content:url(beep.wav) }
h1:after
{ content:url(beep.wav) }
Linguaggio CSS 36
I CSS Media Types permettono di specificare come i documenti saranno presentati nei differenti
media. Ogni documento può essere visualizzato in maniera differente sullo schermo, su carta, etc.
Alcune proprietà dei CSS sono progettate per funzionare solo con certi media, ad esempio la
proprietà “voice-family” ha senso solo su dispositivi audiometrici (aural browsers), oppure ci sono
proprietò, come “font-size” che hanno senso sia su carta che su schermo, ma probabilmente con
valori differenti.
La regola @media
La regola @media permette di utilizzare stili differenti per media differenti nello stesso foglio di
stile. L'esempio qui sotto dice al browser di visualizzare un carattere Verdana di 14 px su schermo,
ma di utilizzare un Times New Roman di 10px per la stampa.
<html>
<head>
<style>
@media screen
{ p.test {font-family:verdana,sans-serif;font-size:14px} }
@media print
{ p.test {font-family:times,serif;font-size:10px} }
@media screen,print
{ p.test {font-weight:bold} }
</style>
</head>
<body>....</body>
</html>